数据库系统概论SQL语言实验报告Word文件下载.docx
- 文档编号:17230336
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:16
- 大小:24.10KB
数据库系统概论SQL语言实验报告Word文件下载.docx
《数据库系统概论SQL语言实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库系统概论SQL语言实验报告Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
完成数据库的建立并定义各表的完整性约束条件。
分别使用企业管理器和SQL语言来实现。
(3)熟练掌握并应用SQL中的数据表定义、删除和修改等操作命令;
(4)熟练掌握为各表常用字段建立索引,以提高数据检索效率。
3.实验代码
基本表Course:
createtablecourse
(cnoChar(6)primarykey,
cnameChar(20),
cpnoChar(6),
ctimeNumeric
(2),
creditNumeric
(2),
foreignkey(cpno)referencescourse(cno),
);
基本表Score:
createtableScore
(
snochar(9),
cnochar(6),
scorenumeric(3),
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno),
基本表student:
createtablestudent
(snoChar(9)primarykey,
snameChar(10)constraintc1notnull,
sbirthdayDatetime,
ssexChar
(2)constraintc2check(ssexin('
男'
'
女'
)),
sclassChar(20),
sremarkChar(100),
addressChar(40),
zipcodeChar(6),
phoneChar(15),
emailChar(40),);
基本表Teacher:
createtableTeacher
(
tnochar(7)primarykey,
tnamechar(10),
tsexchar
(2)check(tsexin('
tbirthdaydatetime,
positionchar(12),
departmentchar(16),
tamountnumeric(7,2),
experiencechar(200),
基本表Teaching:
createtableTeaching
tnochar(7),
tdatadatetime,
classroomchar(10),
sclasschar(20),
primarykey(tno,cno),
foreignkey(tno)referencesTeacher(tno),
foreignkey(cno)referencescourse(cno),
4.实验心得
通过本次实验,对SQL语言有了更加深刻的理解,对基本表的建立有了更加清晰的认识,能够更加熟练地创建基本表。
实验二:
设计数据插入、修改、删除、更新、查询和视图查询等操作并编程实现
(1)熟练掌握数据更新语句,灵活地操作插入数据、修改数据和删除数据;
(2)熟练掌握关系数据库中的完整性概念的应用;
(3)了解数据录入的方法和过程。
(4)掌握单表查询的基本方法;
(5)掌握连接查询的基本方法;
(6)熟练掌握以下练习,并进行以下各类查询:
①选择表中的若干列、查询全部列、查询经过计算的值;
②选择表中的若干元组,即消除取值重复的行与查询满足指定条件的元组(包括:
比较大小、确定范围、确定集合、字符匹配、涉及空值和多种条件查询);
③对查询结果排序;
④使用集函数;
⑤对查询结果分组
(7)熟练掌握以下练习,并进行下列各类连接查询:
①等值与非等值连接查询;
②自身连接;
③外连接;
④复合条件连接;
(8)掌握嵌套查询的基本方法;
(9)掌握集合查询的基本方法;
(10)熟练掌握查询视图操作
(11)熟练掌握更新视图操作
(12)熟练关系的完整性概念,领会视图的用途
(13)练习以下各类查询:
①带有IN谓词的子查询;
②带有比较运算符的子查询;
③带有ANY或ALL谓词的子查询;
④带有EXISTS谓词的子查询;
⑤视图查询与更新操作;
(1)根据以下给定的数据表信息分别对student,course,score,teacher,teching表进行数据插入和修改,以完成给定的数据录入,同时要求输入班级同学名录模拟客观真实情况,给student、score表添加30条以上记录,以便以后查询应用方便。
Student表:
Sno
sname
Sbirthday
ssex
Sclass
011110101
章海潮
1982.02.07
男
信管系0101
011111103
王天力
1982.03.04
电商系0101
011111204
董丞悟
1982.06.06
电商系0102
011112110
马丽鹃
1982.04.03
女
工商系0101
011113104
杨乾坤
1982.03.23
会计系0101
011113221
刘抗日
1983.01.16
会计系0102
011114111
丘海棠
1983.02.08
旅游系0101
011115208
齐振国
1982.07.22
旅游系0102
001011101
王晓悦
1982.01.12
材料系0001
001011212
程伊莲
1982.03.21
材料系0002
course表:
Cno
Cname
Cpno
Credit
Ctime
C001
数据库原理
C005
4
64
C002
高等数学
72
C003
管理信息系统
54
C004
操作系统
C006
3
32
数据结构
C007
计算机文化基础
2
C语言程序设计
score表:
Score
90
85
73
98
96
97
83
92
teacher表:
Tno
Tname
Tsex
tbirthday
position
Department
T001
江承基
信息管理系
T002
梁其征
T003
徐茉莉
T004
吴雅云
T005
杨运铎
电子商务系
T006
张昌盛
T007
程力衡
Teaching表
cno
tdate
classroom
sclass
1988-01-09
西二405
1990-02-01
西二406
1985-09-10
西二504
1984-07-15
主401
1989-11-12
主402
1991-05-21
西二506
(2)将两个同学(数据自己临时设置,用后即删除)的两门课程的成绩以运行SQL语句插入的形式加入score表中。
该题用以验证、理解和掌握关系模型的完整性规则;
INSERT
INTOstudent(sno,sname,sbirthday,ssex,sclass)
values('
20095108'
顾家月'
1991-9-9'
信管系'
)
INTOScore
C001'
98'
(3)求每门课的平均成绩,并把结果存入average表;
createtablescoreAvg(cnochar(8),
Avg_scoresmallint)
insertintoscoreAvg
selectcno,avg(Score)fromScoregroupbycno;
(4)将学生“马丽鹃”的出生日期改为“1982.8.20”;
updatestudentsetsbirthday=’1982.8.20’wheresname=’马丽鹃’
(5)将所有学生的zipcode属性列值填补上;
updatestudent
setzipcode=230009
(6)将average表中的所有课程的平均成绩置零;
updatescoreAvg
setAvg_score=0
(7)删除average表中的课程号为‘c007’的平均成绩记录;
deletefromscoreAvg
wherecno='
c007'
(8)删除所有average表中平均成绩记录;
(9)建立一个临时学生信息表(tstudent),删除该表中的学号前六位为‘001011’的所有学生记录。
ssexChar
(2)constraintc3check(ssexin('
emailChar(40),
insertintotstudent
select*fromstudent
deletefromtstudent
wheresnoLIKE'
001011%'
(10)查询全体学生的学号与姓名;
SELECTsno,snamefromstudent
(11)查询全体学生的学号、姓名、所属班级;
SELECTsno,sname,sclassfromstudent
(12)查询全体学生的详细记录;
SELECT*fromstudent
(13)查询全体学生的姓名及其年龄;
SELECTsname,year(getdate())-year(sbirthday)fromstudent
(14)查询全体学生的姓名、出生年份;
selectsname,sbirthdayfromstudent
(15)查询所有修过课的学生的学号;
selectsnofromScore
(16)查询“信管系0101”班全体学生名单;
wheresclass='
信管系0101'
(17)查询查询所有年龄在27岁以下的学生姓名及其年龄;
whereyear(getdate())-year(sbirthday)<
27
(18)查询考试成绩有不及格的学生的学号;
wherescore<
60
(19)查询年龄在15至28岁之间的学生姓名、班级和年龄;
SELECTsname,sclass,year(getdate())-year(sbirthday)fromstudent
28andyear(getdate())-year(sbirthday)>
15
(20)查询年龄不在15至28岁之间的学生姓名、班级和年龄;
whereyear(getdate())-year(sbirthday)>
28oryear(getdate())-year(sbirthday)<
(21)查询“信管系0101”和“电商系0102”班的学生的姓名和班级信息;
selectsname,sclassfromstudent
orsclass='
电商系'
(22)查询既不是“信管系0101”也不是“电商系0102”班的学生的姓名和班级信息;
wheresclass!
='
andsclass!
(23)查询学号为“011113104”的学生的详细情况;
wheresno='
011113104'
(24)查询学号以“0111”打头的学生信息;
wheresnolike'
0111%'
(25)查询所有姓“张”学生的学号、姓名、性别、年龄;
selectsno,sname,ssex,year(getdate())-year(sbirthday)fromstudent
wheresnamelike'
张%'
(26)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;
selectsno,sname,ssex,year(getdate())-year(sbirthday)fromstudent
_海%'
(27)查询所有不姓“刘”学生的姓名;
selectsnamefromstudent
wheresnamenotlike'
刘%'
(28)查询课程号以“C”开头的最后两个字母为“05”的课程号和课程名;
selectcno,cnamefromcourse
wherecnolike'
c%05'
(29)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,试查找缺少考试成绩的学生和相应的课程号;
Selectsno,cnofromScorewherescoreisnull;
(30)查找全部有成绩记录的学生学号、课程号;
selectsno,cnofromScore
=100andscore>
=0
(31)查找“电商系0101”班年龄在27岁以下的学生学号、姓名;
selectsno,snamefromstudent
andyear(getdate())-year(sbirthday)<
(32)查找选修了“C001”号课程的学生学号及其成绩,查询结果按分数降序排序;
selectsno,scorefromScore
orderbyscoredesc
(33)查询全体学生情况,查询结果按所在班级升序排列,对同一班级中的学生按年龄降序排列;
orderbysclass,year(getdate())-year(sbirthday)desc
(34)查询学生总人数;
selectcount(sno)fromstudent
(35)查询选修了课程的学生人数;
selectcount(sno)fromScore
(36)在所有课程中查询最高分的学生学号和成绩;
selectsno,scorefromScore
wherescore=(selectmax(score)fromScore)
(37)查询学习“C001”课程的学生最高分数;
selectMAX(score)fromScore
(38)计算各个课程号与相应的选课人数;
SELECTcno,count(sno)fromScore
groupbycno
(39)查询“电商系0102”班选修了两门课程以上的学生学号、姓名;
selectstudent.sno,snamefromstudent,Score
wherestudent.sno=Score.snoandstudent.sclass='
电商系0102'
groupbystudent.sno
havingcount(*)>
(40)自然连接student和score表;
selectstudent.sno,sname,ssex,sclass,sremark,address,zipcode,phone,email,cno,scorefromstudent,Scorewhere
student.sno=Score.sno
(41)使用自身连接查询每一门课程的间接先行课(即先行课的先行课)
selectA.cno,B.cpnofromcourseA,courseB
whereA.cpno=B.cno
(42)使用复合条件连接查询选修“c001”号课程且成绩在90分以上的所有同学;
selectstudent.sno,snamefromstudent,Score
wherestudent.sno=Score.snoandcno='
c001'
andscore>
(43)使用复合条件连接查询每个学生选修的课程名及其成绩;
selectstudent.sno,sname,cname,scorefromstudent,Score,course
wherestudent.sno=Score.sno
(44)查询选修了全部课程的学生;
wherenotexists(select*fromcoursewherenotexists
(select*fromScorewheresno=student.snoandcno=o))
(45)查询至少选修全部学分数为4个学分的课程的学生的学号、姓名;
selectstudent.sno,student.snamefromstudent,course,scorewherestudent.sno=score.snoando=oandoin(selectcnofromcoursegroupbycnohavingsum(ctime)>
=4)
(46)查询所有选修了C001号课程的学生学号、姓名;
selectstudent.sno,snamefromstudent,Score
(47)查询选修了课程C001或c007的学生学号、姓名;
selectdistinctstudent.sno,snamefromstudent,Score
coo1'
orcno='
(48)查询“会计系0102”班的学生及年龄不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 SQL 语言 实验 报告