本文主要介绍 INDEX、INSERT、SELECT的使用及注意事项,欢迎阅读~
索引的建立与删除
建立索引(INDEX)的目的:加快查询速度
1. 建立索引
语句格式如下:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
<表名>: 要建索引的基本表的名字
索引: 可以建立在该表的一列或多列上,各列名之间用逗号分隔
<次序>: 指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC(即什么都不写时默认为升序排列)
UNIQUE: 此索引的每一个索引值只对应唯一的数据记录
CLUSTER: 表示要建立的索引是聚簇索引
🌟举例:
为学生-课程数据库中的 Student,Course,SC三个表建立索引(这三个基本表是在我的上一篇博客中介绍并创建的,不清楚的小伙伴戳这里传送过去:SQL Server 数据库基本操作入门篇【2】)。Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引:
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
此处以查看Course表为例,能看到刚刚的按课程号升序的唯一索引新建成功了
— — — — — — — — — — — — — — — — — — — — — — — — — —
2. 修改索引
语句格式如下:
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
🌟举例:
将SC表的SCno索引名改为SCSno:
ALTER INDEX SCno RENAME TO SCSno;
这句标准SQL语句在SQL Server执行是错误的,不能这么写,应写成如下格式:
EXEC sp_rename @objname = '表名.旧索引名', @newname = '新索引名', @objtype = 'index'
建议简写成这个亚子:
EXEC sp_rename 'SC.SCno', 'SCSno', 'index'
注意这里EXEC调用存储过程时会出现提示:注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。
不过别着急,这只是一个温馨提示,命令已经成功执行了,更改索引名成功!
当然也可采取先删除索引再创建的方法,不过无论采用哪种方法都需注意表名.旧索引名
!
— — — — — — — — — — — — — — — — — — — — — — — — — —
3. 删除索引
语句格式如下:
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关该索引的描述
🌟举例:
删除Student表的Stusno索引:
DROP INDEX Stusno;
然而在SQL Server中执行该语句后会报错: