这次作业需要用到三张表,先把这三张表建立出来
CREATE TABLE Student /*建学生表*/
(
Sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /*Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE Course /*建课程表*/
(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno) /*表级完整性的约束条件,Cpno是外码,被参照表是本身*/
);
CREATE TABLE SC /*建选课表*/
(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno), /*表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGN KEY (Cno) REFERENCES Course(Cno), /*表级完整性约束条件,Cno是外码,被参照表是Course*/
);
INDEX:
【例3.13】为学生-课程数据库中的Student、Course和SC三个表建立索引。其中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);
ASC表示升序,DESC表示降序。缺省值:ASC。
第一条语句表示在Student表根据学号升序建立索引Stusno。
第二条语句表示在Course表根据课程号升序建立索引Coucno。
第三条语句表示在SC表先根据学号升序排列,(选课表一个学生可能选了多个课程)在学号相同的情况下,课程号降序排列,建立索引SCno。
【例3.14】将SC表的SCno索引名改为SCSno。
ALTER INDEX SCno RENAME TO SCSno;
/*“RENAME”附近有语法错误。*/
这时候就该去官方网站SQL文档查询了,找到正确代码格式应为
EXEC sp_rename N'SC.SCno',N'SCSno',N'INDEX' ;
GO
修改成功
【例3.15】
这个索引之前