数据库系统原理实验一参考答案Word文档下载推荐.docx
《数据库系统原理实验一参考答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验一参考答案Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
(7)将调试好的正确命令代码及数据库存储文件保存到自己的备份盘(方便下次实验使用)
2、课本中的习题(零件供应数据库(SPJ_Mis__2018):
(说明:
要求同上,各表模拟数据可参照课本P110)
【实验过程】
1、
USEmaster
GO
CREATEDATABASEStudents_Mis_2018
ON
(
NAME=Students_Data,
FILENAME='
E:
\SQL_DATEBASE\'
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5
)
LOGON
NAME='
Students_Log'
\SQL_DATEBASE\'
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB
useStudents_Mis_2018
CREATETABLEDepts
DnoCHAR(5)PRIMARYKEY,
DnameCHAR(20)NOTNULL
CREATETABLEStudents
SnoCHAR(5)PRIMARYKEY,
SnameCHAR(20)NOTNULL,
SsexCHAR
(2),
SageINT,
DnoCHAR(5),
CONSTRAINTFK_DnoFOREIGNKEY(Dno)REFERENCESDepts
CREATETABLECourses
CnoCHAR(6)PRIMARYKEY,
CnameCHAR(20),
Pre_CnoCHAR(6),
CreditsINT
CREATETABLEReports
SnoCHAR(5),
CnoCHAR(6),
GradeINTCHECK(Grade>
=0ANDGrade<
=100),
PRIMARYKEY(Sno,Cno),
CONSTRAINTStudent_ReportFOREIGNKEY(Sno)REFERENCESStudents,
CONSTRAINTReport_CourseFOREIGNKEY(Cno)REFERENCESCourses
(4)分别对4个表插入表数据(INSERT)
INSERT
INTOdepts
VALUES('
D01'
'
自动化'
INTOdepts
D02'
计算机'
)
D03'
数学'
D04'
通信'
D05'
电子'
D06'
化学'
SELECT*
FROMDepts
INTOStudents
S01'
王建平'
男'
21,'
INTOStudents
S02'
刘华'
女'
19,'
S03'
范林军'
18,'
S04'
李伟'
S05'
黄河'
S06'
长江'
20,'
FROMStudents
INTOCourses
C01'
英语'
'
4)
INSERT
C02'
数据结构'
C05'
2)
C03'
数据库'
2)
C04'
DB-设计'
3)
INTOCourses
C++'
C06'
网络原理'
C07'
操作系统'
FROMCourses
INTOReports
92'
84'
90'
94'
INTOReports
82'
72'
89'
75'
FROMReports
(5)数据类型及完整性约束验证:
答:
不行,对Students的Dno作外键约束,必须引用到Depts表的主键Dno。
必须先建立系(Depts)表,后才能建立学生(Students)表。
不行,Reports的Cno作外键约束外键,必须引用到Courses表的主键Cno,应该先建课程表,然后再才能对表Report的Cno作外键约束。
①数据类型
INTOStudent(Sno,Sname,Ssex,Sage,Dno)
VALUES('
S11'
'
张三,'
二十'
Sage的数据类型是INT,INSERT失败
②主键不能为空或重复:
INSERTINTOdeptsVALUES(NULL,'
INSERT失败,主键Dno不能为空。
INSERTINTOdeptsVALUES('
),('
历史'
INSERT失败,主键Dno不能重复。
③非空约束
如执行以下命令会违反非空约束。
因为Sname属性是非空的。
INTOStudent(Sno,Ssex,Sage,Dno)
21'
不能将值NULL插入列'
Sname'
,因为Sname属性是非空约束。
INSERT失败。
④外键约束
S07'
李四'
D11'
Student外键Dno受Depts的主键Dno的约束,Depts中的Dno没有’D11’,不能在Student表插入’D11’
⑤CHECK约束
120'
不能将值120插入列'
Grade'
违反CHECK(Grade>
=100),INSERT失败
上例中的第一行代码的主键值为空,第二行代码的主键值重复,故插入操作失败。
(1)建立零件供应数据库(SPJ_Mis__2018)
CREATEDATABASESPJ_Mis_2018
NAME=student_Data,
\SQL_DATABASE\'
SIZE=10,
FILEGROWTH=5)
LOGON
(NAME='
student_Log'
\SQL_DATABASE\'
SIZE=5MB,
(2)调用数据库
useSPJ_Mis_2018
(3)分别建立4个数据表的表结构
CREATETABLES
SnameCHAR(20)NOTNULL,
StatusINT,
SCityCHAR(20)
CREATETABLEP
PnoCHAR(6)PRIMARYKEY,
PnameCHAR(20),
ColorCHAR(9),
WeightFLOAT
CREATETABLEJ
JnoCHAR(5)PRIMARYKEY,
JnameCHAR(20),
JCityCHAR(20)
CREATETABLESPJ
PnoCHAR(6),
JnoCHAR(5),
QTYINTCHECK(QTY>
=0),
PRIMARYKEY(Sno,Pno,Jno),
CONSTRAINTS_SPJFOREIGNKEY(Sno)REFERENCESS,
CONSTRAINTP_SPJFOREIGNKEY(Pno)REFERENCESP,
CONSTRAINTJ_SPJFOREIGNKEY(Jno)REFERENCESJ
(4)插入数据
INSERT
INTOS
S1'
利群'
30,'
广州'
),
('
S2'
同方'
杭州'
S3'
天远'
60,'
北京'
S4'
精诚'
10,'
上海'
S5'
华缘'
80,'
重庆'
S6'
弘治'
50,'
太原'
SELECT*
FROMS
INTOP
P1'
钉子'
绿'
34),
P2'
螺丝'
蓝'
25),
P3'
螺母'
橙'
12),
P4'
螺栓'
紫'
27),
P5'
螺钉'
红'
53),
P6'
齿轮'
17),
P7'
传送带'
28)
FROMP
INTOJ
J1'
一建'
济南'
J2'
三汽'
J3'
拉链厂'
J4'
无线电厂'
J5'
机床厂'
J6'
螺钉厂'
J7'
机械厂'
天津'
FROMJ
INTOSPJ
j3'
340),
j2'
250),
j5'
120),
j6'
270),
j7'
530)
j1'
170),
280),
100),
j4'
310),
560),
200)
300),
400),
410),
330),
650),
150)
230),
350),
420),
310)
FROMSPJ
【实验结果及分析】
【教师评语和成绩】
成绩:
指导教师:
日期: