举例说明----索引的创建,删除,查看,分类
2016-07-12 10:45
267 查看
原来工作最主要用到索引,认真学习了一上午,例子是最经典的书上代码,注释相当多
create table Student(
Sno CHAR(9) not null primary key nonclustered,----主键且非聚集
Sname CHAR(20) unique,
Ssex CHAR(2),
Sage smallint,
Sdept CHAR(20)
);
create table Course(
Cno CHAR(4) not null primary key,
Cname CHAR(40) not null,
Ccredit smallint,
);
create table SC(
Sno CHAR(9),
Cno CHAR(4),
Grade smallint,
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key (Cno) references Course(Cno)
);
delete from Student;
delete from Course;
delete from SC;
insert into Student values('201215121','李勇','男',20,'CS');
insert into Student values('201215122','刘晨','女',19,'CS');
insert into Student values('201215123','王敏','女',18,'MA');
insert into Student values('201215125','张立','男',19,'IS');
insert into Course values(1,'数据库',4);
insert into Course values(2,'数学',2);
insert into Course values(3,'信息系统',4);
insert into Course values(4,'操作系统',3);
insert into Course values(5,'数据结构',4);
insert into Course values(6,'数据处理',2);
insert into Course values(7,'PASCAL语言',4);
insert into SC values(201215121,1,92);
insert into SC values(201215121,2,85);
insert into SC values(201215121,3,88);
insert into SC values(201215122,2,90);
insert into SC values(201215122,3,80);
/*索引分类*/
/*1.最简单的创建和删除索引*/
CREATE INDEX list ON Student(Sno)
--在学生表学号列创建索引lis
DROP INDEX list ON Student
--删除学生表索引
EXEC sp_helpindex Student
--查看索引
--student表里有两个本身的索引,Sno和Sname,主键默认为是唯一聚集索引(可改为非聚集),unique是唯一索引
/*2.唯一性索引,保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用*/
CREATE UNIQUE INDEX list ON Student(Ssex)
--发现对象名称 'dbo.Student' 和索引名称 'list' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止。重复的键值为 (男)。
CREATE UNIQUE INDEX list ON Student(Sno)
/*3.复合索引用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。*/
CREATE UNIQUE INDEX list ON Student(Sno,Ssex)
--create index idx1 on table1(col1,col2,col3)
/*4.聚簇索引,对磁盘上实际数据重新组织以按指定的一个或多个列的值排序*/
CREATE CLUSTERED INDEX list ON Course(Cno)
--- 无法对 表 'Course' 创建多个聚集索引。请在创建新聚集索引前删除现有的聚集索引 'PK__Course__C1FE6373173876EA'
create table Student(
Sno CHAR(9) not null primary key nonclustered,----主键且非聚集
Sname CHAR(20) unique,
Ssex CHAR(2),
Sage smallint,
Sdept CHAR(20)
);
create table Course(
Cno CHAR(4) not null primary key,
Cname CHAR(40) not null,
Ccredit smallint,
);
create table SC(
Sno CHAR(9),
Cno CHAR(4),
Grade smallint,
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key (Cno) references Course(Cno)
);
delete from Student;
delete from Course;
delete from SC;
insert into Student values('201215121','李勇','男',20,'CS');
insert into Student values('201215122','刘晨','女',19,'CS');
insert into Student values('201215123','王敏','女',18,'MA');
insert into Student values('201215125','张立','男',19,'IS');
insert into Course values(1,'数据库',4);
insert into Course values(2,'数学',2);
insert into Course values(3,'信息系统',4);
insert into Course values(4,'操作系统',3);
insert into Course values(5,'数据结构',4);
insert into Course values(6,'数据处理',2);
insert into Course values(7,'PASCAL语言',4);
insert into SC values(201215121,1,92);
insert into SC values(201215121,2,85);
insert into SC values(201215121,3,88);
insert into SC values(201215122,2,90);
insert into SC values(201215122,3,80);
/*索引分类*/
/*1.最简单的创建和删除索引*/
CREATE INDEX list ON Student(Sno)
--在学生表学号列创建索引lis
DROP INDEX list ON Student
--删除学生表索引
EXEC sp_helpindex Student
--查看索引
--student表里有两个本身的索引,Sno和Sname,主键默认为是唯一聚集索引(可改为非聚集),unique是唯一索引
/*2.唯一性索引,保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用*/
CREATE UNIQUE INDEX list ON Student(Ssex)
--发现对象名称 'dbo.Student' 和索引名称 'list' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止。重复的键值为 (男)。
CREATE UNIQUE INDEX list ON Student(Sno)
/*3.复合索引用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。*/
CREATE UNIQUE INDEX list ON Student(Sno,Ssex)
--create index idx1 on table1(col1,col2,col3)
/*4.聚簇索引,对磁盘上实际数据重新组织以按指定的一个或多个列的值排序*/
CREATE CLUSTERED INDEX list ON Course(Cno)
--- 无法对 表 'Course' 创建多个聚集索引。请在创建新聚集索引前删除现有的聚集索引 'PK__Course__C1FE6373173876EA'
相关文章推荐
- PostgreSQL教程(八):索引详解
- Oracle外键不加索引引起死锁示例
- oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
- 用SQL建立索引的方法步骤
- SQL2005重新生成索引的的存储过程 sp_rebuild
- SQL效率提升之一些SQL编写建议并有效利用索引
- SQLSERVER的非聚集索引结构深度理解
- SQL Server误区30日谈 第8天 有关对索引进行在线操作的误区
- SQL Server 索引介绍
- SqlServer 索引自动优化工具
- mysql 中存在null和空时创建唯一索引的方法
- 详解sqlserver查询表索引
- 优化 SQL Server 索引的小技巧
- sqlserver 索引的一些总结
- MySQL下使用Inplace和Online方式创建索引的教程
- mysql中索引使用不当速度比没加索引还慢的测试
- Sql Server 查询性能优化之走出索引的误区分析
- sqlserver索引的原理及索引建立的注意事项小结
- 使用Sphinx对索引进行搜索
- 关于Sphinx创建全文检索的索引介绍