「 索引」

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 ='刘云云';

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aღ凣辰᭄ꦿ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值