1.使用索引
在实际应用中,为了加快查询的效率,都会为数据表创建适当的索引。索引就是一个指向数据表中数据的指针。通过为数据表建立适当的索引可以提高SQL语句对数据表的访问速度。
索引的分类
索引主要可以分为唯一索引、主索引、单列索引、复合索引以及聚簇索引等,下面分别来介绍一下这几种索引。
唯一索引:在数据表中使用UNIQUE关键字可以为一个数据列定义一个唯一索引。唯一索引中每一个索引值只对应数据表中的一条记录,它保证了数据列中记录的唯一性。如果在向数据表中插入一条记录时,数据库会对要插入的这条记录进行检查,如果发现该条记录中的值在定义了唯一索引的列中出现过,那么数据库管理系统就不会将这条记录插入到数据表中。一般在为列创建唯一约束后,数据库会为该列建立一个唯一索引,其索引名与约束名是相同的。
主索引:在数据表中使用PRIMARY KEY关键字可以为一个数据列定义一个主索引。所谓主索引,就是在定义的主键列中创建的索引。主索引也保证了数据列中记录的唯一性。一般在为列创建主键约束后,数据库会为该列建立一个主索引,其索引名与约束名是相同的。
单列索引:定义在数据表中一个数据列上的索引就是单列索引。一般在数据查询时,如果WHERE子句中经常用到数据表中的某一列作为查询条件,为了提高查询的效率,可以为该列创建单列索引。
复合索引:索引可以定义在一个数据表的多个数据列上,像这样的索引被称为复合索引。一般在数据查询时,如果WHERE子句中经常用到数据表中的某几个列作为查询条件,为了提高查询的效率,可以为这多个列创建复合索引。
聚簇索引:为了提高SQL语句对数据表的查询效率,可以为数据表创建一个聚簇索引。聚簇索引中索引项的顺序与数据表中数据记录的物理顺序保持一致。聚簇索引在每一个数据表中只能创建一个。
对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。正式因为如此,所以一个表最多只能有一个聚簇索引。
创建与删除索引
在数据表中,创建和删除索引一般是由数据库管理员或者是数据表的创建者来完成的。如果想创建索引,可以使用CREATE INDEX语句完成。创建索引的语法格式如下:
CREATE [UNIQUE]|[CLUSTER]INDEX索引名 ON表名(列名 [排序方式]…) 排序方式表示指定指定建立索引的排序时升序还是降序排列,关键字ASC表示升序,关键字DESC表示降序排序,默认情况是升序排序。
删除索引的语法格式如下:
DROP INDEX索引名 ON 表名
2.修改数据库中的表
如果在创建完数据表之后,还需要对数据表结构做一些修改,例如向数据表中增加某一列、删除某一列、为数据表中的某一列增加约束条件或者索引、修改数据表中某一列的数据类型等等,这个时候就需要使用ALTER TABLE语句。
向表中增加一列
在实际应用中,根据实际需要,有些时候需要为数据表增加一个指定的列,用来完善数据表信息。向数据表增加一列的语法格式如下:
ALTER TABLE table_name ADD(column_name datatype [constraint_condition])
其中,ALTER TABLE是修改表结构的关键字;关键字ALTER TABLE之后跟的table_name表的名字;ADD是关键字,用来指定数据表中要增加的列;关键字ADD后面的括号中需要指定新增加的列名、该列对应的数据类型和完整性约束条件。 column_name表示新增加的列名,datatype用来指定该列的数据类型,constraint_condition用来表示该列的完整性约束条件,它是可选的。
增加一个约束条件
如果在创建一个数据表时没有为指定的列定义约束条件,在数据表创建完成后,可以使用ALTER TABLE语句中的ADD子句为某一列增加一个约束条件。其语法格式如下:
ALTER TABLE table_name ADD constraint_type (column_name)
其中,ADD是关键字,用来指定数据表中要增加的列;关键字ADD后面的括号中需要指定约束条件和新增加的列名。constraint_type表示指定的约束条件,column_name1表示新增加的列名。
增加一个索引
如果在创建一个数据表时没有为指定的列定义索引,在数据表创建完成后,可以使用ALTER TABLE语句中的ADD子句为列增加一个索引。其语法格式如下:
ALTER TABLE table_name ADD INDEX(column_name1[, column_name2]….)
其中,ADD是关键字,用来指定数据表中要增加的列;INDEX关键字表示要为数据表增加一个索引。column_name1表示为增加索引指定的列。指定列可以是一列,也可以是多列。
修改表中的某一列
在实际应用中,有些时候需要对数据表中的某一列的数据类型、默认值等内容进行修改,这时就需要使用ALTER TABLE中的MODIFY子句。其语法格式如下:
ALTER TABLE table_name MODIFY column_name datatype
其中,MODIFY是关键字,用来表示要对数据表中的某一列进行修改操作;关键字MODIFY后面需要指定要修改列的名字和该列对应的数据类型。column_name表示列的名字,datatype表示列的数据类型。
删除表中某一列
如果在数据表中的某一列不需要使用了,可以使用CREATE TABLE语句中的DROP子句将该列删除。其删除的语法格式如下:
ALTER TABLE table_name DROP column_name
其中,ALTER TABLE是修改表结构的关键字;关键字ALTER TABLE之后跟的table_name表的名字;DROP是关键字,用来表示要对数据表中的某一列进行删除操作;关键字DROP后面需要指定要删除列的名字。
删除一个约束条件
如果在数据表中将某一个列的约束条件删除,可以使用CREATE TABLE语句中的DROP子句。其删除约束条件的语法格式如下:
ALTER TABLE table_name DROP constraint_type
其中,DROP是关键字,用来表示要将数据表中列的约束条件删除;关键字DROP后面需要指定要删除约束条件的名字;constraint_type表示要删除的约束条件。
删除数据库中的表
如果在实际使用中某一个数据表已经不再需要时,可以使用DROP TABLE语句将其删除。其语法格式如下:
DROP TABLE table_name[CASCADE CONSTRAINTS]
使用DROP TABLE执行数据表的删除操作时,该表中的记录以及由此表建立的相应视图都会被同时删除掉。如果数据表之间存在外键约束,删除主表时要使用CASCADE CONSTRAINTS级联删除从表中的外键约束。它是可选的。一般用户如果要删除数据表,需要具有删除数据表的权限。