数据库和基本表的创建数据库实验1.docx
《数据库和基本表的创建数据库实验1.docx》由会员分享,可在线阅读,更多相关《数据库和基本表的创建数据库实验1.docx(22页珍藏版)》请在冰豆网上搜索。
数据库和基本表的创建数据库实验1
数据库基础与实践实验报告
实验一数据库和基本表的创建
班级:
惠普测试142
学号:
**********
姓名:
***
日期:
2016.9.25
一、实验目的与要求
⏹熟练掌握使用企业管理器创建和管理数据库。
⏹熟练掌握使用企业管理器创建、修改和删除表。
⏹熟练掌握使用企业管理器插入、修改和删除表数据。
二、实验内容和步骤
(一)使用企业管理器完成数据库与基本表的创建
1、启动企业管理器,创建产品销售数据库CPXS:
数据文件初始大小为5MB,最大大小50MB,增长方式按10%比例增长;日志文件初始为2MB,最大可增长到10MB,按2MB增长;其余参数取默认值。
数据文件操作截图
日志文件操作截图
2、CPXS数据库包含如下三个表:
1)CP(产品编号,产品名称,价格,库存量)
2)XSS(客户编号,客户名称,地区,负责人,电话)
3)CPXSB(产品编号,客户编号,销售日期,数量,销售额)其中,产品编号,客户编号为两个外键。
操作截图
(二)使用SQL完成的实验内容和步骤
1、创建名称为数据库sch_id的数据库(其中ID为本人学号的后三位),并使用该数据库。
代码:
CREATEDATABASEsch_id
USEsch_id
运行结果截图:
2、利用SQL语句定义6张基本表:
D、T、S、C、TC、TD,并根据要求添加各类约束。
(1)专业表:
D(dno,dn),dno表示专业代码,两个字符,主码;dn表示专业名称,可变长度最多30个字符,不能取空值,不能取重复值。
基本表D创建代码:
CREATETABLED(
dnochar
(2)PRIMARYKEY,
dnvarchar(30)UNIQUENOTNULL
)
运行结果截图:
(2)教师表:
T(tno,tn,sex,age,prof,sal,comm,dno),tno表示教师号,4个字符,主码;tn表示教师姓名,8个字符,不能为空值;sex表示性别,不能为空值,取值只能是“男”或“女”;age表示年龄,整型值,取值范围在20到70之间;prof表示职称,6个字符,取值只能是“教授”、“副教授”、“讲师”、“助教”其中之一。
Sal表示基本工资,浮点型,值不能少于800;comm表示奖金,浮点型,值不能少于1200;dno表示教师专业代码,两个字符50,外码。
基本表T创建代码:
CREATETABLET(
tnochar(4)PRIMARYKEY,
tnchar(8)NOTNULL,
sexchar
(2)NOTNULLCHECK(sexIN('男','女')),
ageintCHECK(ageBETWEEN20AND70),
profchar(6)CHECK(profIN('教授','副教授','讲师','助教')),
salfloatCHECK(sal>=800),
commfloatCHECK(comm>=1200),
dnochar
(2)FOREIGNKEYREFERENCESD(dno)
)
运行结果截图:
(3)学生表S(sno,sn,sex,age,dno)sno表示学号,10个字符,主码;sn表示学生姓名,8个字符,不能为空值;sex表示性别,不能为空值,取值只能是“男”或“女”;age表示年龄,整型值,取值范围在15到40之间;dno表示学生的专业代码,两个字符50,外码。
基本表S创建代码:
CREATETABLES(
snochar(10)PRIMARYKEY,
snchar(8)NOTNULL,
sexchar
(2)NOTNULLCHECK(sexIN('男','女')),
ageintCHECK(ageBETWEEN15AND40),
dnochar
(2)FOREIGNKEYREFERENCESD(dno)
)
运行结果截图:
(4)课程表C(cno,cn,ct)cno表示课程号,3个字符,主码;cn表示课程名,可变长度最多20个字符,不能取空值,不能取重复值;ct表示课时,整型值,取值范围在32至80之间。
基本表C创建代码:
CREATETABLEC(
cnochar(3)PRIMARYKEY,
cnvarchar(20)UNIQUENOTNULL,
ctintCHECK(ctBETWEEN32AND80)
)
运行结果截图:
(5)选课关系表SC(sno,cno,score)sno表示学号,10个字符,外码;cno表示课程号,3个字符,外码;score表示成绩,浮点型,取值在0到100之间。
(sno,cno)为主码。
基本表SC创建代码:
CREATETABLESC(
snochar(10)FOREIGNKEYREFERENCESS(sno),
cnochar(3)FOREIGNKEYREFERENCESC(cno),
scorefloatCHECK(scoreBETWEEN0AND100)
)
运行结果截图:
(6)授课关系TC(tno,cno)tno表示教师号,4个字符,外码;cno表示课程号,3个字符,外码;(tno,cno)为主码。
基本表TC创建代码:
CREATETABLETC(
tnochar(4)FOREIGNKEYREFERENCEST(tno),
cnochar(3)FOREIGNKEYREFERENCESC(cno),
CONSTRAINTtc_pkPRIMARYKEY(tno,cno)
)
运行结果截图:
3、利用企业管理器进行6张表中元组的插入、修改、删除,分别测试每张表中的各个约束。
(1)基本表D约束测试:
INSERTINTOD(dno,dn)VALUES('08','软件开发')
INSERTINTOD(dno,dn)VALUES('09','软件测试')
INSERTINTOD(dno,dn)VALUES('10',null)--dn非空测试
INSERTINTOD(dno,dn)VALUES('08','计算机')--dno主键测试
INSERTINTOD(dno,dn)VALUES('11','软件测试')--dn唯一测试
UPDATEDSETdno='11'WHEREdn='软件测试'--dno主键测试
UPDATEDSETdn=NULLWHEREdno='09'--dn非空测试
UPDATEDSETdn='软件测试'WHEREdno='08'--dn唯一测试
SELECT*FROMD
(2)基本表T约束测试:
INSERTINTOTVALUES('0001','庄梦蝶','女',20,'讲师',3000.0,3600.0,'08')
INSERTINTOTVALUES('0001','庄晓蝶','女',21,'讲师',3600.0,3000.0,'09')--tno主键测试
INSERTINTOTVALUES('0002',null,'女',21,'讲师',3600.0,3000.0,'09')--tn非空测试
INSERTINTOTVALUES('0002','庄晓蝶',null,21,'讲师',3600.0,3000.0,'09')--sex非空测试
INSERTINTOTVALUES('0002','庄晓蝶','二',21,'讲师',3600.0,3000.0,'09')--sexCHECK约束测试
INSERTINTOTVALUES('0002','庄晓蝶','女',18,'讲师',3600.0,3000.0,'09')--ageCHECK约束测试
INSERTINTOTVALUES('0002','庄晓蝶','女',21,'老师',3600.0,3000.0,'09')--profCHECK约束测试
INSERTINTOTVALUES('0002','庄晓蝶','女',21,'讲师',700.0,3000.0,'09')--salCHECK约束测试
INSERTINTOTVALUES('0002','庄晓蝶','女',21,'讲师',3600.0,800.0,'09')--commCHECK约束测试
INSERTINTOTVALUES('0002','庄晓蝶','女',21,'讲师',3600.0,3600.0,'11')
INSERTINTOTVALUES('0003','单雨童','男',26,'教授',4000.0,3600.0,'11')
INSERTINTOTVALUES('0004','单雨真','男',20,'助教',2000.0,2000.0,'01')--dno外键测试
INSERTINTOTVALUES('0004','单雨真','男',20,'助教',2000.0,2000.0,'08')
UPDATETSETtno='0001'WHEREtn='单雨真'--tno主键测试
UPDATETSETtn=NULLWHEREtn='单雨真'--tn非空测试
UPDATETSETsex=NULLWHEREtn='单雨真'--sex非空测试
UPDATETSETsex='1'WHEREtn='单雨真'--sexCHECK约束测试
UPDATETSETage=1WHEREtn='单雨童'--ageCHECK约束测试
UPDATETSETprof='老师'WHEREtn='单雨童'--profCHECK约束测试
UPDATETSETsal=799.0WHEREtn='单雨童'--salCHECK约束测试
UPDATETSETcomm=1000.0WHEREtn='单雨童'--profCHECK约束测试
UPDATETSETdno='07'WHEREtn='单雨童'--dno外键测试
(3)基本表S约束测试:
INSERTINTOSVALUES('1408090213','百里登风','男',21,'08')
INSERTINTOSVALUES('1408090213','良垣','男',21,'08')--sno主键测试
INSERTINTOSVALUES('1408090213',NULL,'男',21,'08')--sn非空测试
INSERTINTOSVALUES('1408090213','百里登风',NULL,21,'08')--sex非空测试
INSERTINTOSVALUES('1408090213','百里登风','1',21,'08')--sexCHECK约束测试
INSERTINTOSVALUES('1408090213','百里登风','男',13,'08')--ageCHECK约束测试
INSERTINTOSVALUES('1408090213','百里登风','男',21,'01')--dno外键测试
INSERTINTOSVALUES('1408090208','良莠','女',20,'09')
INSERTINTOSVALUES('1408090303','良垣','男',21,'08')
UPDATESSETsno='1408090303'WHEREsn='百里登风'--sno主键测试
UPDATESSETsn=NULLWHEREsn='百里登风'--sn非空测试
UPDATESSETsex=NULLWHEREsn='百里登风'--sex非空测试
UPDATESSETsex='1'WHEREsn='百里登风'--sexCHECK约束测试
UPDATESSETage=100WHEREsn='百里登风'--ageCHECK约束测试
UPDATESSETdno='03'WHEREsn='百里登风'--dno外键测试
UPDATESSETdno='09'WHEREsn='百里登风'
(4)基本表C约束测试:
INSERTINTOCVALUES('001','Python',48)
INSERTINTOCVALUES('002','数据库',48)
INSERTINTOCVALUES('003','Python',48)--cn唯一约束测试
INSERTINTOCVALUES('003',NULL,48)--cn非空测试
INSERTINTOCVALUES('001','JAVA',48)--cno主键测试
INSERTINTOCVALUES('004','C语言',24)--ctCHECK约束测试
INSERTINTOCVALUES('005','JAVA',36)
UPDATECSETcn='JAVA'WHEREcno='001'--cn唯一约束测试
UPDATECSETcn=NULLWHEREcno='001'--cn非空测试
UPDATECSETcno='002'WHEREcn='JAVA'--cno主键测试
UPDATECSETct=24WHEREcno='001'--ctCHECK约束测试
UPDATECSETct=36WHEREcno='001'
(5)基本表SC约束测试:
INSERTINTOSCVALUES('1408090213','001','100')
INSERTINTOSCVALUES('1508090213','001','100')--sno外键测试
INSERTINTOSCVALUES('1408090208','003','100')--cno外键测试
INSERTINTOSCVALUES('1408090208','005','101')--score约束测试
INSERTINTOSCVALUES('1408090208','005','100')--cno外键测试
INSERTINTOSCVALUES('1408090303','001','98')
INSERTINTOSCVALUES('1408090303','002','99')
INSERTINTOSCVALUES('1408090303','005','97')
UPDATESCSETscore=101WHEREsno='1408090213'ANDcno='001'--score约束测试
(6)基本表TC约束测试:
INSERTINTOTCVALUES('0001','001')
INSERTINTOTCVALUES('0002','005')
INSERTINTOTCVALUES('0002','002')
INSERTINTOTCVALUES('0003','005')
INSERTINTOTCVALUES('0004','005')
INSERTINTOTCVALUES('0002','005')--主键测试
三、讨论题
1.CP表是空表(没有任何元组),XSS表也是空表,是否能首先向CPXSB表中先添加元组。
如果不能添加元组请说明原因,如果能添加请展示添加的元组。
不能。
存在外键约束。
2、向CP表中添加一条记录,XSS表仍是空表,是否能向CPXSB表中添加元组。
如果不能添加元组请说明原因,如果能添加请展示添加的元组。
不能。
存在外键约束。
3、向CP表中再添加一条记录,向XSS表中添加一条记录,向CPXSB表中添加元组。
说明能添加的元组的属性取值规律。
CP:
XSS:
CPXSB:
由于CPXSB的外键产品编号和客户编号参照了CP的主键产品编号和XSS的主键客户编号,所以只能插入产品编号存在于CP表且客户编号存在于XSS表,并满足约束条件的元组。