数据库实验Word下载.docx
- 文档编号:18361734
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:22
- 大小:55.03KB
数据库实验Word下载.docx
《数据库实验Word下载.docx》由会员分享,可在线阅读,更多相关《数据库实验Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
15
系名
course(课程表):
cno
Char
课程号
cname
20
课程名称
cpno
先行课号
ccredit
学分
sc(学生选课表):
小数
外码
参照关系
备注
Fk
student
course
grade
Decimal
5
1
0≤x≤100
成绩
实验代码:
createdatabasestudentdb
usestudentdb
go
createtablestudent(
snochar(10)notnullprimarykey,--学号
snamechar(10)notnull,--姓名
ssexchar
(2)null,--性别
sagesmallintnullcheck(sage>
=12),--年龄
sdeptchar(15),--系名
)
createtablecourse(
cnoChar
(2)notnullprimarykey,--课程号
cnameChar(20)null,--课程名称
cpnoChar
(2)null,--先行课号
ccreditsmallintnull,--学分
createtablesc(
snochar(10)notNULL,--学号
cnochar
(2)notNULL,--课程号
gradeDecimal(5,1)NULLcheck(grade>
=0ANDgrade<
=100),--成绩
primarykey(sno,cno),
/*主码由两个属性构成,必须作为表级完整性进行定义*/
foreignkey(sno)referencesstudent(sno),
/*表级完整性约束条件,sno是外码,被参照表是student*/
foreignkey(cno)referencescourse(cno),
/*表级完整性约束条件,cno是外码,被参照表是course*/
)
go
2.在spjdb数据库中利用查询分析器创建以下4个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性):
S(供应商信息表):
供应商号
供应商名称
status
大于0
供应商状态
city
所在城市
P(零件信息表):
pno
零件号
pname
零件名称
color
颜色
weight
重量
J(工程项目表):
jno
工程项目号
jname
工程项目名称
SPJ(供应情况表):
S
P
J
qty
x>
createdatabasespjdb
usespjdb
createtableS(
snochar
(2)NOTNULLprimarykey,--供应商号
snamechar(10)NOTNULL,--供应商名称
statussmallintNULLCHECK(status>
0),--供应商状态
citychar(10)NULL,--所在城市
createtableP(
pnochar
(2)NOTNULLprimarykey,--零件号
pnamechar(10)NOTNULL,--零件名称
colorchar
(2)NULL,--颜色
weightsmallintNULLCHECK(weight>
0),--重量
createtableJ(
jnochar
(2)NOTNULLPRIMARYKEY,--工程项目号
jnamechar(10)NOTNULL,--工程项目名称
citychar(10)NULL,--所在城市
createtableSPJ(
snoChar
(2)NOTNULL,--供应商号
pnoChar
(2)NOTNULL,--零件号
jnoChar
(2)NOTNULL,--工程项目号
qtysmallintNULLCHECK(qty>
0),--供应数量
primarykey(sno,pno,jno),
foreignkey(sno)referencesS(sno),
/*表级完整性约束条件,sno是外码,被参照表是S*/
foreignkey(pno)referencesP(pno),
/*表级完整性约束条件,pno是外码,被参照表是P*/
foreignkey(jno)referencesJ(jno),
/*表级完整性约束条件,jno是外码,被参照表是J*/
3.修改表结构,具体要求如下:
(1)将表course的cname列的数据类型改为varchar(40)。
altertablecourse
altercolumncnamevarchar(40);
(2)为表student增加一个新列:
birthday(出生日期),类型为datetime,默认为空值。
altertablestudent
addbirthdaydatetimedefaultnull;
4.分别建立以下索引(如果不能成功建立,请分析原因)
(1)在student表的sname列上建立普通降序索引。
createindexsnameonstudent(snamedesc);
(2)在course表的cname列上建立唯一索引。
createuniqueindexcnameoncourse(cname);
(3)在sc表的sno列上建立聚簇索引。
createCLUSTEREDindexsconsc(sno)
//不成功,系统默认给主键分配了一个聚簇索引
(4)在SPJ表的sno(升序),pno(升序)和jno(降序)三列上建立一个普通索引。
createindexspjonspj(snoasc,pnoasc,jnodesc);
实验2SQL数据操作
1.向实验1建立的表中添加数据(元组),掌握INSERT语句的用法;
2.修改基本表中的数据,掌握UPDATE语句的用法;
3.删除基本表中的数据,掌握DELETE语句的用法;
4.体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
1.将教材P82表中的数据添加到数据库studentdb中。
usestudentdb
INSERTintostudent(sno,sname,ssex,sage,sdept)values(200215121,'
李勇'
'
男'
20,'
CS'
);
INSERTintostudent(sno,sname,ssex,sage,sdept)values(200215122,'
刘晨'
女'
19,'
INSERTintostudent(sno,sname,ssex,sage,sdept)values(200215123,'
王敏'
18,'
MA'
INSERTintostudent(sno,sname,ssex,sage,sdept)values(200215125,'
张立'
29,'
IS'
usestudentdb
INSERTintocourse(cno,cname,cpno,ccredit)values(1,'
数据库'
5,4);
INSERTintocourse(cno,cname,cpno,ccredit)values(2,'
数学'
null,2);
INSERTintocourse(cno,cname,cpno,ccredit)values(3,'
信息系统'
1,4);
INSERTintocourse(cno,cname,cpno,ccredit)values(4,'
操作系统'
6,3);
INSERTintocourse(cno,cname,cpno,ccredit)values(5,'
数据结构'
7,4);
INSERTintocourse(cno,cname,cpno,ccredit)values(6,'
数据处理'
INSERTintocourse(cno,cname,cpno,ccredit)values(7,'
PASCAL语言'
6,4);
usestudentdb
INSERTintosc(sno,cno,grade)values(200215121,1,92);
INSERTintosc(sno,cno,grade)values(200215121,2,85);
INSERTintosc(sno,cno,grade)values(200215121,3,88);
INSERTintosc(sno,cno,grade)values(200215122,2,90);
INSERTintosc(sno,cno,grade)values(200215122,3,80);
2.将教材P75表中的数据添加到数据库spjdb中,体会执行插入操作时检查实体完整性规则、参照完整性规则和用户定义完整性规则的效果。
insertintoS(SNO,SNAME,STATUS,CITY)VALUES('
S1'
精益'
天津'
S2'
盛锡'
10,'
北京'
S3'
东方红'
30,'
S4'
丰泰盛'
S5'
为民'
上海'
insertintoP(PNO,PNAME,COLOR,WEIGHT)VALUES('
P1'
螺母'
红'
12);
P2'
螺栓'
绿'
17);
P3'
螺丝刀'
蓝'
14);
P4'
P5'
凸轮'
40);
P6'
齿轮'
30);
usespjdb
insertintoJ(jno,jname,city)values('
J1'
三建'
J2'
一汽'
长春'
J3'
弹簧厂'
J4'
造船厂'
J5'
机车厂'
唐山'
J6'
无线电厂'
常州'
J7'
半导体厂'
南京'
insertintoSPJ(sno,pno,jno,qty)values('
200);
100);
700);
400);
500);
300);
(1)实体完整性规则
usespjdb
WWW'
//S1重复
(2)参照完整性规则
insertintoSPJ(sno,pno,jno,qty)values('
S7'
//S表里没有S7这条记录
(3)用户定义完整性规则
P7'
-30);
//weight小于0
3.设计几个删除操作(3~5个),体会执行删除操作时检查参照完整性规则的效果。
(1)deletefromSwheresno='
s1'
//不能删除
(2)droptables//不能删除
(3)deletefromstudentwheresno='
200215121'
//不能删除
4.设计一组更新操作(3~5个),体会执行更新操作时检查实体完整性规则、参照完整性规则和用户定义完整性规则的效果。
(1)insertintoSPJ(sno,pno,jno,qty)
values(null,'
//sno不能为空
(2)insertintoSPJ(sno,pno,jno,qty)
values('
(3)insertintoP(PNO,PNAME,COLOR,WEIGHT)
VALUES('
实验3SQL数据查询
1.熟练掌握SELECT语句,能够运用该语句完成各种查询;
2.观察查询结果,体会SELECT语句实际应用;
3要求学生能够在查询分析器中使用SELECT语句进行单表查询和多表查询。
基于实验1和实验2中建立的表,完成如下查询:
(1和2选一题,第3题必做)
1.参照教材P75表中的数据,完成P74习题5中
(1)~(5)的查询。
(1)
selectdistinctsno
fromspj
wherejno='
(2)
selectdistinctsno
andpno='
(3)
selectsno
wherespj.jno='
ANDPNO
IN(
SELECTPNO
fromp
wherecolor='
);
(4)
selectJno
wherejnonotin(
selectjno
fromspj,p,s
wheres.city='
ANDCOLOR='
ANDS.SNO=SPJ.SNO
ANDP.PNO=SPJ.PNO);
(5)
selectDISTINCTjno
fromspjX
wherenotexists
(
select*
fromspjY
wheresno='
AND
NOTEXISTS(
SELECT*
FROMSPJASZ
WHEREX.JNO=Z.JNOAND
Y.PNO=Z.PNOAND
sno='
))
2.参照教材P75表中的数据,完成P127习题5中
(1)~(11)的查询。
3.参照教材P82表中的数据,完成以下查询:
(1)查询course表中所有学分大于2并且序号小于5的课程信息。
selectcname
fromcourse
wherecno<
5andccredit>
(2)查询学分介于2和8之间的课程的信息。
select*
whereccredit>
2andccredit<
8
(3)从course表中查询出课程号为1或4或7的课程的课程号、课程名称、以及学分。
方法一:
selectcno,cname,ccredit
fromcourse
wherecno='
1'
union
4'
7'
方法二:
selectcno,cname,ccredit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验