您好,欢迎来到尔游网。
搜索
您的当前位置:首页Sql Server数据库-数据完整性操作

Sql Server数据库-数据完整性操作

来源:尔游网


实训7 数据完整性操作 -迅云支付提供

(http://jasonyip.cn.melyy.com/)

目的和要求

1. 学会使用primary key(主键)约束,unique(唯一)约束保证表完整性 2. 学会使用check(检查)约束,default(默认)约束,default(默认值),rule(规则)保证列数据完整性

3. 学会使用primary key(主键)约束、foreign key(外键)约束保证表与表之间的参照完整性。

实验环境

Windows XP和SQL Server 2005的运行环境

实验原理

SQL Server 2005数据库原理

实验内容与步骤 任务1 使用Management studio 为student表创建primary key 约束。

任务2 使用Management studio 为stucou表创建一个primary key 约束,保证不会出现学号和课程编号都相同的重复数据行。 任务3使用Management studio 删除student表的primary key 约束。

任务4 使用transact-sql语句为department表创建基于departNO

列的约束,为course表创建基于couNO列的约束。为class创建基于classNO列的约束。

use xk go

--为department表创建基于departNO列的名为:pk_department的主键约束。 alter table department

add constraint pk_department primary key (departNO) go

--为course表创建基于couNO列的名为:pk_course的主键约束。

alter table course

add constraint pk_course primary key (couNO) go

--为class表创建基于classNO列的名为:pk_class的主键约束。 alter table class

add constraint pk_class primary key (classNO) go

以下为:在创建表的同时创建主键约束。

use xk go

drop table department --因为前面有了表,现在删除做 create table department (departno nvarchar(2) not null, departname nvarchar(20) not null, constraint PK_department primary key (departNO) )

任务5 使用transact-sql语句删除department表名字为PK_Department的主键约束。

use xk go

alter table department

drop constraint pk_department

go

任务6 使用transact-sql语句在XK数据库中为stucou表创建名为stuNO_fk的foreign key约束,该约束stuNO列的数据只能是student表的stuNO列中存在的数据。

USE Xk GO

ALTER TABLE StuCou

ADD CONSTRAINT StuNo_FK FOREIGN KEY (StuNo) REFERENCES Student (StuNo) GO

任务7 使用transact-sql语句删除stucou表中名为stuNo_fk的foreign key 约束

USE Xk GO

ALTER TABLE StuCou DROP CONSTRAINT STuNo_FK GO

任务8 使用transact-sql语句在stucou表中为stuno列重新创建一个带有级联删除功能的外键约束。

use xk go

-- stucou表stuno列要参照student表stuNO列,外键约束名为stuNO_fk

alter table stucou

add constraint stuno_fk foreign key (stuNO)

references student (stuno) on delete cascade go

任务9 使用Management studio 在XK数据库中为stucou表创建基于couno的约束,该约束couno列值必须是course表中couno列已存在的值。

任务10 使用Management studio删除stucou表名字为couNO_FK的foreign key约束。

任务11使用transact-sql语句创建如下约束,class表的departNO 参照department表的departno.

course表的departNO 参照department表的departNO.student表的classNO参照class表的classNO.

use xk go

--class表的departNO 参照department表的departno,外键约束名为:fk_class_department alter table class add constraint fk_class_department foreign key (departNO) references department(departNO) go

--course表的departNO 参照department表的departno,外键约束名为:fk_course_department alter table class

add constraint fk_course_department foreign key (departNO) references department(departNO) go

--student表的classNO 参照class表的classNO,外键约束名为:fk_student_class alter table student

add constraint fk_student_class foreign key (classNO)

references class(classNO) go

任务12 使用transact-sql语句在xk数据库为course表的couName创建唯一约束un_couname.

创建后用transact-sql语句删除该唯一约束。

use xk go

alter table course

add constraint un_couname unique(couname) go

use xk go

alter table course

drop constraint un_couname go

任务13 使用transact-sql语句在xk数据库为student表创建名为ch_stuNO的check约束,该约束检查StuNO列值只允许8位数字。

USE Xk GO

ALTER TABLE Student ADD CONSTRAINT CK_StuNo CHECK (StuNo like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' AND StuNo<>'00000000') GO

任务14 使用transact-sql语句删除student表中名字为CK_stuNO的check约束。

USE Xk

GO

ALTER TABLE Student

DROP CONSTRAINT CK_StuNo GO

任务15 使用transact-sql语句在xk数据库中为stucou表创建名为ch_willorder的check约束,该约束willorder的值只能在1-5之间(willorder表示学生报名的志愿号,本系统最多允许学生报5个志愿,故如此设置)

USE Xk GO

ALTER TABLE StuCou

ADD CONSTRAINT CK_WillOrder CHECK (WillOrder>=1 AND WillOrder<=5) GO

任务16 使用Management studio 在XK数据库中为course表创建名为ch_couNO的check约束,该约束couNO列中只允许3位数字,并且数字不为0。

任务17 使用Management studio 删除course表名为ck_couNO的check约束。

任务18 使用transact-sql语句在xk数据库中为stucou表创建名为df_stucou_state的default约束,该约束使state列的默认值为“报名”

USE Xk GO

ALTER TABLE StuCou

ADD CONSTRAINT DF_StuCou_State DEFAULT ('报名') FOR State GO

任务19 使用transact-sql语句删除stucou表名字为df_stucou_state的default约束。

USE Xk GO

ALTER TABLE StuCou

DROP CONSTRAINT DF_StuCou_State GO

任务20 使用Management studio 在XK数据库中为stucou表上, 为state列创建default约束,该约束使state列的值默认为“报名”

任务21使用Management studio 删除stucou表在state列上的default约束。

任务22使用transact-sql语句在XK数据库中创建名为:unsureDefault的默认值,表示“待定”,然后将其绑定到course表的teacher列。

USE Xk GO

--创建默认值

CREATE DEFAULT UnsureDefault AS '待定' GO

--绑定默认值到Course表的Teacher列

EXEC sp_bindefault UnsureDefault,'Course.Teacher' GO

任务23 使用transact-sql语句删除名字为unsureDefault的默认值。

(1) USE Xk GO

DROP DEFAULT UnsureDefault GO (2) USE Xk GO

--解除绑定

EXEC sp_unbindefault 'Course.Teacher' GO

--删除默认

DROP DEFAULT UnsureDefault GO

任务24 使用transact-sql语句在XK数据库中创建名为CreaditRuler的规则,credit值的有效范围为数字:1-5,并其绑定到credit的列中。

USE Xk GO

--创建规则,变量@x可以自由设置,只要符合命名规则即可 CREATE RULE CreditRule AS @x>=1 AND @x<=5 GO --绑定规则到Course表的Credit列

EXEC sp_bindrule CreditRule,'Course.Credit'

任务25 使用transact-sql语句删除名字为creditRule的规则。

USE Xk GO

--解除绑定

sp_unbindrule 'Course.Credit' GO

--删除规则

DROP RULE CreditRule

任务26 创建一个book表,该表只有两例:bookID为标识列,初值为:1,增量为:1;bookName 为字符型,长度为:30,不允许空。

--创建book表 create table book

(bookID int identity(1,1),

bookName varchar(30) not null ) go

--输入3行数据,只输入bookName列值,标识列bookID由系统自动生成。 insert book(bookName) values('计算机网络技术') insert book(bookName) values('软件测试技术') insert book(bookName) values('动态web技术') go

--显示book表信息

select * from book go

INSERT @t SELECT CouNo,CouName FROM COurse

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务