索引与数据完整性
--1.创建索引。为表KCB的‘课程名’列创建索引
CREATE INDEX kc_name_ind
ON KCB(课程名)
--2.创建唯一索引,因为指定了CLUSTERED,索引该索引将对磁盘上的数据进行物理排序。
CREATE UNIQUE CLUSTERED INDEX kc_name_ind
ON KCB(课程名)
--3.复合索引
CREATE INDEX cjb_ind
ON CJB(学号,课程号)
WITH(DROP_EXISTING= 0N)
--4.根据表xsb中的总学分列创建索引,列中用到了FILLFACTOR子句
CREATE NONCLUSTERED INDEX score_ind
ON XSB(总学分)
WITH FILLACTOR = 60
--5.根据表XSB中'学号'列创建唯一聚集索引。如果输入了重复的键,将忽略该INSERT或UPDATE语句
REATE UNIQUE CLUSTERED INDEX xs_ind
ON XSB(学号)
WITH IGNORE_DUP_KEY
--重建索引,重建表KCB上索引索引
ALTER INDEX ALL ON KCB REBULLD
--重建表KCB上的kc_name_ind索引
ALTER INDEX kc_name_ind ON KCB REBULLD
--索引的删除。删除PXSCJ数据库中KCB的一个索引名为kc_name_ind的索引
IF EXISTS (SELECT name FROM sysindexes WHERE name='kc_name_ind')
DROP INDEX KCB.kc_name_ind
数据完整性
--6.创建表,并对‘学号’字段创建PRIMARY KEY约束,对‘姓名’字段定义UNIQUE约束
CREATE TABLE XSB
{
学号 char(6) NOT NULL CONSTRAINT XH_PK PRIMARY KEY,
姓名 char(8) NOT NULL CONSTRAINT XH_UK,
性别 bit NOT NULL DEFAULT 1,
出生时间 date NOT NULL,
专业 char(12) NULL,
总学分 int NULL,
备注 varchar(500) NULL
}--当表中的主键为复合主键,只能定义为一个表的约束
--7.修改表上,向其中添加一个‘身份证号码’字段,对该字段定义UNIQUE约束。对‘出生时间’字段定义UNIQUE
CREATE TABLE XSB1
ADD 身份证号码 char(20)
CONSTRAINT SF_UK UNIQUE NONCLUSTERED (身份证号码)
GO
ALTER TABLE XSB1
ADD CONSTRAINT CJSJ_UK UNIQUE NONCLUSTERED (出生时间)
--8.删除PRIMARY KEY约束和UNIQUE约束
ALTER TABLE XSB1
DROP CONSTRAINT XH_PK,XM_UK
域完整性的实现
--9.创建一个表student1,只考虑‘学号’和‘出生日期’两列,出生日期必须大于年月日,并命名为CHECK约束
CREATE TABLE student1
{
学号 char(6) NOT NULL,
出生时间 datetime NOT NULL,
CONSTRAINT DF_student1_cjsj CHECK(出生时间>'1980-01-01')
}
--10.创建一个表student2,有‘学号’,‘最好成绩’和‘平均成绩’列,要求最好成绩必须大于平均成绩
CREATE TABLE student2
{
学号 char(6) NOT NULL,
最好成绩 INT NOT NULL,
平均成绩 INT NOT NULL,
CHECK(最好成绩>平均成绩)
}
--11.删除CJB'成绩'字段的CHECK约束
ALTER TABLE CJB
DROP CONSTRAINT cj_constraint
--12.规则对象.下面的程序创建一个规则,并绑定到表KCB的课程号列,用于限制课程号的输入范围
CREATE RULE kc_rule
AS @range like '[1-5][0-9][0-9]'
GO
EXEC sp_bindrule 'kc_rule','KCB.课程号'
GO
--13.解除绑定和删除绑定
EXEC sp_unbindrule 'kc_rule','KCB.课程号'
DROP RULE kc_rule
参照完整性的实现
--14. 假设KCB为主表,KCB的‘课程号’字段已经定义为主键,CJB为从表
--如下示例用于将CJB的‘课程号’字段定义为外键
ALTER TABLE CJB
ADD CONSTRAINT kc_foreign
FOREIGN KEY (课程号)
REFERENCES KCB (课程号)
--15.删除标间的参照关系
ALTER TABLE CJB
DROP CONTRAINT kc_foreign

浙公网安备 33010602011771号