举例说明----索引的创建,删除,查看,分类

来源:互联网 发布:攻击ip软件 编辑:程序博客网 时间:2024/06/05 04:25

原来工作最主要用到索引,认真学习了一上午,例子是最经典的书上代码,注释相当多


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'
   
0 0