数据库——SQL-SERVER练习(4) 建表及数据完整性

 2023-09-28 阅读 28 评论 0

摘要:1、 输入下图的语句, 建立学生表STU. CREATE TABLE STU (SNO NUMERIC(5) PRIMARY KEY,SNANE CHAR(6) NOT NULL,SSEX CHAR(2) CHECK (SSEX IN ('男','女')),SDEPT CHAR(10) ); 2、输入下图的语句, 建立课程表COU. CREATE TABLE COU (CNO NUME

1、 输入下图的语句, 建立学生表STU.

CREATE TABLE STU
(SNO NUMERIC(5) PRIMARY KEY,SNANE CHAR(6) NOT NULL,SSEX CHAR(2) CHECK (SSEX IN ('','')),SDEPT CHAR(10)
);

 

 

2、输入下图的语句, 建立课程表COU.

CREATE TABLE COU
(CNO NUMERIC(2) PRIMARY KEY,CNANE CHAR(10) NOT NULL UNIQUE,CPNO NUMERIC(2) REFERENCES COU(CNO),CCREDIT NUMERIC(2)
);

 

 

3、输入下图的语句, 建立选课表STUCOU.

CREATE TABLE STUCOU
(SNO NUMERIC(5) REFERENCES STU(SNO), CNO NUMERIC(2) REFERENCES COU(CNO),GRADE NUMERIC(6,2),PRIMARY KEY(SNO,CNO)
);

 

 

 

4、 建立供应商表:   ST(Sno,Sname,City)  
     各列数据类型分别为( CHAR(8), CHAR(20), CHAR(20) )
     约束:Sno为主码,Sname唯一,City非空

CREATE TABLE ST
(SNO CHAR(8) PRIMARY KEY,SNAME CHAR(20) UNIQUE,CITY CHAR(20) NOT NULL
)

 

 


5、建立零件表:  PT(Pno,Pname,Color)
     各列数据类型分别为( CHAR(8), CHAR(20), CHAR(20) )
     约束:Pno为主码,Pname非空,Color只能是红,黑,蓝

CREATE TABLE PT
(PNO CHAR(8) PRIMARY KEY,PNAME CHAR(20) NOT NULL,COLOR CHAR(20) CHECK (COLOR IN ('','',''))
)

 

 

 6、建立工程表:  JT(Jno,Jname)        
     各列数据类型分别为( CHAR(8),  CHAR(20) )
     约束:Jno为主码,Jname唯一

CREATE TABLE JT
(JNO CHAR(8) PRIMARY KEY,JNAME CHAR(20) UNIQUE
)

 

 

7、建立供应表:  SPJT(Sno,Pno,Jno,Qty)
     各列数据类型分别为( CHAR(8),CHAR(8),CHAR(8), INT )
     约束:(Sno,Pno,Jno)为主码,   Qty要大于0
      Sno是外码参照ST,Pno是外码参照PT, Jno是外码参照JT

CREATE TABLE SPJT
(SNO CHAR(8) REFERENCES ST(SNO),PNO CHAR(8) REFERENCES PT(PNO),JNO CHAR(8) REFERENCES JT(JNO),QTY INT CHECK (QTY>0),PRIMARY KEY (SNO,PNO,JNO)
)

 

 

8、查看批处理文件CREATE_TABLES.SQL中对学生三个表的定义(不用执行),  写出以下引起完整性约束报错的操作语句,记录显示的出错信息,并解释操作违反了何种数据完整性?

 

(1) 执行下面语句:

insert INTO STUDENT(sname, ssex,sage,sdept) values( '刘楠','',20,'CS');

1).出错信息

2). 对出错信息的解释( 出错原因, 违反了哪种完整性等):

出错原因,主属性为空置,违反了实体完整性。

 

(2)修改student中数据, 将95001的学号改为99001

1).语句:

UPDATE STUDENT
SET SNO='99001'
WHERE SNO='95001'

2).出错信息(将出错信息复制至此):

 

 

3).对出错信息的解释( 出错原因, 违反了哪种完整性等)::

修改student表中一个元组sno属性,造成修改后sc中的sno在student找不到一个元组,其sno属性值与之相等。

违反了参照完整性。

 

(3)删除student中95002的元组

1).语句:

DELETE
FROM STUDENT
WHERE SNO='95002'

2).出错信息:

 

3).解释:

从student表中删除一个元组的sno属性,造成sc表中的某些元组的sno属性值在表student中找不到一个元组,其sno值与之对应。

违反了参照完整性。

 

(4)试图在student中插入下面的元组:

 ( 99001,'赵冬','M',19,'CS')

1).语句:

INSERT INTO STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)
values( '99001','赵冬','M',19,'CS');

2).出错信息:

 

 

3).解释:

在创建student时限制ssex只能是‘男’,或者‘女’。

违反了用户自定义完整性。

 

(5)删除course中2号课的元组

1).语句:

DELETE
FROM COURSE
WHERE CNO=2

2).出错信息:

 

 

3).解释:

从COURSE表中删除一个元组的CNO属性,造成SC表中的某些元组的CNO属性值在表COURSE中找不到一个元组,其CNO值与之对应。违反了参照完整性。

 

 (6)  在SC中插入一条学号为99990,选1号课,成绩90的学生选课信息

1).语句:

INSERT INTO SC(SNO,CNO,GRADE)
VALUES('99990',1,90);

2).出错信息:

                 

3).解释:

SC表中增加一个元组,该元组的SNO属性值在表STUDENT中找不到一个元组,其SNO属性值与之对应。

转载于:https://www.cnblogs.com/wkfvawl/p/10845289.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/102178.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息