渣渣兔 发表于 2024-6-15 02:59:50

SQL SERVER专题实行7 数据库的完整性控制

https://img-blog.csdnimg.cn/direct/e5a9d8d3e1e6421ca8effc028bb7a9f6.png
https://img-blog.csdnimg.cn/direct/5bb76bd332b2403a87a5c2880a0997fc.pnghttps://img-blog.csdnimg.cn/direct/366545054cd74f9b9b13cbbd9eb47873.pnghttps://img-blog.csdnimg.cn/direct/c2f191654b9c42aa96743d791fcc69aa.pnghttps://img-blog.csdnimg.cn/direct/00deec1f2357487c995be2220f5b96db.png
USE JX

go



SET NOCOUNT ON

go



--**********1、创建选课表SC,属性为Sno、Cno、Tno和Grade,数据类型分别为char(5)、char(3)、char(5)和decimal(3,1),主码为(Sno,Cno,Tno),主码名为PK_SCT*************************--

--********** Begin **********--

create table SC(

    Sno char(5) ,

    Cno char(3) ,

    Tno char(5) ,

    Grade decimal(3,1),

    CONSTRAINT PK_SCT PRIMARY KEY (Sno, Cno, Tno)

);




--********** End **********--

go

--**********2、创建Student的主码PK_Sno **********--

--********** Begin **********--

alter table Student add constraint PK_Sno primary key(Sno)




--********** End **********--

go

--**********3、创建Course的主码PK_Cno **********--

--********** Begin **********--

alter table Course add constraint PK_Cno primary key(Cno)




--********** End **********--

go

--**********4、创建Teacher的主码PK_Tno **********--

--********** Begin **********--

alter table Teacher add constraint PK_Tno primary key(Tno)




--********** End **********--

go

--**********5、向Student中插入一个学生的完整信息('21005','测试君','男','2003-09-09','物联网工程',35) **********--

--********** Begin **********--

INSERT INTO Student(Sno,Sname,Ssex,Sbirth,Sdept,Total)

values('21005','测试君','男','2003-09-09','物联网工程',35)




--********** End **********--

go

--**********6、向Student中插入一个学生的Sname和Sdept信息,内容分别为'测试君'和'软件工程' **********--

--********** Begin **********--

INSERT INTO Student(Sname,Sdept)

values('测试君','软件工程' )



--********** End **********--

---------------为确保通关,以下内容请不要删除-----------------

go

SELECT A.NAME AS 表名,B.NAME AS 主码名 FROM SYSOBJECTS A,SYSOBJECTS B

WHERE A.ID=B.PARENT_OBJ AND A.XTYPE='U' AND B.XTYPE='PK' order by A.NAME

go https://img-blog.csdnimg.cn/direct/1968192db7b34ab99918511ed50001b5.png
USE JX

go



SET NOCOUNT ON

go



--**********1、创建选课表SC,属性为Sno、Cno、Tno和Grade,数据类型分别为char(5)、char(3)、char(5)和decimal(4,1),要求同时创建名为PK_SCT的主码(Sno,Cno,Tno),名为FK_Sno的外码,使得SC中的Sno与Student的Sno间具有参照完整性,且在删除已有选课信息的学生时级联执行,禁止修改已有选课信息的学号为当前学生表中不存在的学号*************--

--------------------------********** Begin **********--

CREATE table SC

(

Sno char(5),

Cno char(3),

Tno char(5),

Grade decimal(4,1)

constraint PK_SCT primary key(Sno,Cno,Tno),

constraint FK_Sno foreign key(Sno) references Student(Sno) on delete cascade

)

----------------------------********** End **********--

go

--**********2、在SC中增加名为FK_Cno的外码,使得SC中的Cno与Course的Cno间具有参照完整性,且有同学选修该课程时该门课程不能删除**********--

-----------------------********** Begin **********--

alter table SC

add constraint FK_Cno foreign key(Cno) references Course(Cno)

-----------------------********** End **********--

go

--**********3、在SC中增加名为FK_Tno的外码,使得SC中的Tno与Teacher的Tno间具有参照完整性 **********--

-----------------------********** Begin **********--

alter table SC

add constraint FK_Tno foreign key (Tno) references Teacher(Tno)

-----------------------********** End **********--

go

--**********4、分别向SC表中插入如下几个元组:('21001','3,'5',78)、('21001','5,'2',89)、('21004','4,'1',78)和('22039','8,'9',98)**********--

--------------------------********** Begin **********--

insert into SC(Sno,Cno,Tno,Grade)

values('21001','3','5',78)

insert into SC(Sno,Cno,Tno,Grade)

values('21001','5','2',89)

insert into SC(Sno,Cno,Tno,Grade)

values('21004','4','1',78)

insert into SC(Sno,Cno,Tno,Grade)

values('22039','8','9',98)

---------------------------********** End **********--

go

--**********5、修改选课表中值为'21004'的Sno为'20001'**********--

--------------------------********** Begin **********--

update SC

set Sno='20001'

where Sno='21004'

--------------------------********** End **********--

go

--**********6、删除Student中学号为'21004'的学生信息 **********--

-------------------------********** Begin **********--

delete

from Student

where Sno='21004'

--------------------------********* End **********-----------------

go

select obj.name 外码名,obj2.name 从表名,obj3.name 主表名,delete_referential_action_desc 删除违约操作,

update_referential_action_desc 更新违约操作

from sys.foreign_keys fk,sysobjects obj,sysobjects obj2,sysobjects obj3

where fk.object_id=obj.id and fk.parent_object_id = obj2.id and fk.referenced_object_id = obj3.id

order by obj2.name

SELECT * FROM SC

go https://img-blog.csdnimg.cn/direct/fa2e5964bcfb4b9f8d80dded0cd85e51.png
USE JX
go

SET NOCOUNT ON
go

--**********1、为Student增加一列注册时间Registime,数据类型为smalldatetime,并设置默认约束条件D_Registime值为'2022-01-01 23:59:00'*************************--
--********** Begin **********--
ALTER TABLE Student ADD Registime smalldatetime CONSTRAINT D_Registime DEFAULT '2022-01-01 23:59:00'

--********** End **********--
go
--**********2、为Student在姓名Sname上增加一个约束名为UQ_Sname的唯一性约束条件,一个约束名为CK_Sname的不能取空值约束条件**********--
--********** Begin **********--
ALTER TABLE Student ADD CONSTRAINT UQ_Sname UNIQUE (Sname)
ALTER TABLE Student ADD CONSTRAINT CK_Sname CHECK (Sname IS NOT NULL)
--********** End **********--
go
--**********3、为Student增加一个在姓名Ssex上的约束条件CK_Ssex,使得该属性只能录入性别'男'或'女' **********--
--********** Begin **********--
ALTER TABLE Student ADD CONSTRAINT CK_Ssex CHECK (Ssex IN ('男', '女'))

--********** End **********--
go
--**********4、向Student表中插入一个学号为'21005'、姓名为'测试君'的学生信息**********--
--********** Begin **********--
INSERT INTO Student (Sno, Sname) VALUES ('21005', '测试君')

--********** End **********--
go
--**********5、将学号为'21005'的学生性别设置为'无' **********--
--********** Begin **********--
UPDATE Student SET Ssex = '无' WHERE Sno = '21005'


--********** End **********--
go
--**********6、将姓名为'测试君'的学生姓名修改为'李强' **********--
--********** Begin **********--
UPDATE Student SET Sname = '李强' WHERE Sname = '测试君'


--********** End **********--
---------------为确保通关,以下内容请不要删除-----------------
go
SELECT A.NAME AS 表名,B.NAME AS 约束名,B.XTYPE AS 约束类型
FROM SYSOBJECTS A,SYSOBJECTS B
WHERE A.ID=B.PARENT_OBJ AND A.XTYPE='U' AND B.XTYPE IN('D','UQ','C') order by B.NAME
SELECT * FROM Student
go

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SQL SERVER专题实行7 数据库的完整性控制