CREATE DATABASE EDUC2;
USE EDUC2;
--STUDENT的结构
CREATE TABLE STUDENT(
sno CHAR(8) PRIMARY KEY,
sname CHAR(8) NOT NULL,
ssex CHAR(2),
sage INT,
sdept CHAR(10)
);
--COURSE的结构
CREATE TABLE COURSE(
cno CHAR(2) PRIMARY KEY,
cname CHAR(30),
credit INT,
cpno CHAR(3)
);
--SC的结构
CREATE TABLE SC(
sno CHAR(8),
cno CHAR(2),
grade INT,
PRIMARY KEY (sno,cno),
FOREIGN KEY (sno) REFERENCES STUDENT(sno),
FOREIGN KEY (cno) REFERENCES COURSE(cno)
);
--2.向表中插入元组
--STUDENT的内容
INSERT INTO STUDENT VALUES ('95001','李勇','男',20,'CS'),
('95002','刘晨','女',19,'IS '),
('95003','王敏','女',18,'MA'),
('95004','张立','男',19,'IS '),
('95005','刘云云','女',18,'CS');
--COURSE的内容
INSERT INTO COURSE VALUES ('1','数据库',4,'5'),
('2','数学',6,NULL),
('3','信息系统',3,'1'),
('4','操作系统',4,'6'),
('5','数据结构',4,'7'),
('6','数据处理',3,NULL),
('7','PASCAL语言',4,'6');
--SC的内容
INSERT INTO SC VALUES ('95001','1',92),
('95001','2',85),
('95001','3',88),
('95002','2',90),
('95002','3',80),
('95003','2',85),
('95004','1',58),
('95004','2',85);
--实验内容
--(一)使用SQL Server Management Studio创建索引
--1.在STUDENT表上为sname字段添加非唯一的非聚簇索引,将该索引命名为“IX_sname”。
--2.在STUDENT表上为sage字段添加索引,将该索引命名为“IX_sage”。
--(二)使用T-SQL语句创建索引
--1.在STUDENT表的sno列上创建一个非聚簇索引,索引名为“student_sno_idx”。
CREATE INDEX student_sno_idx ON STUDENT (sno);
--2.在STUDENT表上按sno的升序,sname的降序创建一个复合索引,索引名为“student_sno_sname_idx”。
CREATE INDEX student_sno_sname_idx ON STUDENT (sno ASC, sname DESC);
--3.把STUDENT表上的索引student_sno_sname_idx更名为“IX_sno_sname”。
EXEC SP_RENAME 'dbo.STUDENT.student_sno_sname_idx', 'IX_sno_sname','INDEX';
--4.在COURSE表的cno列上创建唯一聚簇索引,索引名为“course_cno_idx”。
CREATE UNIQUE CLUSTERED INDEX course_cno_idx ON COURSE (cno);
--5.使用存储过程sp_helpindex查看STUDENT表中的索引信息。
EXEC sp_helpindex 'STUDENT';
--6.删除STUDENT表中的索引IX_sname。
DROP INDEX IX_sname ON STUDENT;
--7.使用存储过程sp_rename将索引student_sno_idx改名为“student_sno”。
EXEC SP_RENAME 'dbo.STUDENT.student_sno_idx', 'student_sno','INDEX';
--8.使用IX_sno_sname查询名叫“刘云云”的学生的信息。
SELECT * FROM STUDENT WITH (INDEX (IX_sno_sname)) WHERE sname = '刘云云';
--9.如果不使用索引IX_sno_sname,此次查询如何完成?
/*可用其他索引进行查询*/
SELECT * FROM STUDENT WITH (INDEX (student_sno)) WHERE sname ='刘云云';