《数据库实验答案分析总结.docx》由会员分享,可在线阅读,更多相关《数据库实验答案分析总结.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结试验试验一 熟识 SQL SERVER20001. 在“程序 ”菜单中查找 “ Microsoft SQL Server菜单项”。可编辑资料 - - - 欢迎下载精品名师归纳总结2. 假如 “ Microsoft SQL Server动 SQL SERVER 服务。菜单项”下有 “服务治理器 ”,就启动服务治理器,在其界面中启可编辑资料 - - - 欢迎下载精品名师归纳总结4.点击工具栏上的图标,注册一个 SQL SERVER 服务器。5. 在注册向导的 “可用服务器 ”中挑选一个服务器添加到“添加的服务器 ”中,点击下一步。6. 挑选 “系统治理员安排的SQL Server
2、登录信息 ”。7. 填写登录名和密码。8. 不转变默认选项,添加到现有组中。9.完成 SQL Server 注册。10. 熟识 SQL Server 的使用环境,可以完成简洁的建库、建表操作,可查看联机帮忙。11. 打开 “工具 ”菜单下的 “查询分析器 ”,可以完成 SQL 语句的执行操作。试验二试验要求:用sql 语句建立如下的表结构并输入数据:同学表: student(主键 Sno)课程表: Course(主键 Cno)选课表: SC(主键 Sno,Cno,外部键 Sno, Cno)5数据结构7467数据处理PASCAL语言2643. 在“ Microsoft SQL Server 菜单
3、项”下打开 “企业治理器 ”。学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept课程号Cno课程名Cname先行课Cpno学分Ccredit95001李勇男20CS1数据库5495002刘晨女21IS2数学295003王敏女18MA3信息系统1495004张力男19IS4操作系统63学号Sno课程表Cno成果Grade95001192950012859500138895002290950023856.查询选修了 3 号课程的同学姓名及成果,并按成果降序排序。试验三用 SQL 语句完成以下的要求(键表及插入数据的SQL 语句见下面) :create table studentSno
4、 char5 primary key, Sname char10,可编辑资料 - - - 欢迎下载精品名师归纳总结Ssex char2, Sage int, Sdept char2;create table CourseCno char1 primary key, Cname char20,Cpno char1, Ccredit int;create table SCSno char5, Cno char1, Grade int,primary key sno,cno;insert into student values95001,李勇 ,男,20,CS; insert into studen
5、t values95002,刘晨 ,女,21,IS; insert into student values95003,王敏 ,女,18,MA; insert into student values95004,张力 ,男,19,IS; insert into Course values1,数据库 ,5,4;insert into Course values2,数学,NULL,2; insert into Course values3,信息系统 ,1,4; insert into Course values4,操作系统 ,6,3; insert into Course values5,数据结构 ,
6、7,4; insert into Course values6,数据处理 ,NULL,2; insert into Course values7,PASCAL语言,6,4; insert into SC values95001,1,92;insert into SC values95001,2,85; insert into SC values95001,3,88; insert into SC values95002,2,90; insert into SC values95003,3,85;1. 查询信息系( IS)的全部同学信息select* fromStudentwhereSdept
7、=IS;2. 查询选修了 “数学 ”课的全部同学名单select*fromStudent, Course , SCwhereStudent. Sno =SC. SnoAndCourse . Cno=SC. CnoAnd Course . Cname= 数学 ;3. 查询至少选修了一门其直接先行课为5 号课程的同学的姓名。selectStudent. Sname fromStudent, Course , SC可编辑资料 - - - 欢迎下载精品名师归纳总结whereStudent. Sno =SC. SnoAndCourse . Cno=SC. CnoAnd Course . Cpno =54
8、. 查询全体同学的姓名和诞生年份。selectsname , 2022 - Student. Sage fromStudent5. 查询全部姓王的同学。select* fromStudentwhereSnamelike 王% ;6. 查询选修了 3 号课程的同学姓名及成果,并按成果降序排序。selectStudent. Sname, SC. Grade fromStudent, Course , SCwhereStudent. Sno =SC. SnoandCourse . Cno =Sc. cnoand course. cno =3orderbysc . gradedesc7. 查询全体同学
9、情形, 查询结果按所在系的系号升序排列,同一系中的同学按年龄降序排列。select* fromstudentorderbysdept,sagedesc8. 运算 2 号课程的平均成果。selectAVG grade fromSCwherecno =2;9. 查询选修了 2 号课程的同学的最高成果。selectMAX grade fromSCwherecno =2;10. 求各个课程号及相应的选课人数。selectcno , COUNT distinctsno fromSCgroupbycno11. 查询至少选修了 3 门课程以上的同学序号。selectsno fromSC groupbysno
10、havingCOUNT*=3;12. 查询 “数据库 ”的间接先行课。selectsecond . cpnofromCourseasfirst, Courseassecondwherefirst. cpno =second . CnoAndfirst. Cname= 数据库 ;可编辑资料 - - - 欢迎下载精品名师归纳总结13. 查询其他系中比信息系某一同学年龄小的同学的姓名和年龄。selectdistinctfirst. sname , first. sage fromStudentasfirst,Studentassecond14. 查询出成果最低学号最大的同学学号。selectmax
11、sno fromSCwhereGrade = selectmin grade fromSC;15. 查询成果高于同学平均成果的记录。selectfrom grouphavingfirstSC as. Gradefirst,SC assecondbyfirstfirst16.查询至少选修了. Grade. Grade AVG second . Grade ;1 号课程和 3 号课程的同学学号。 selectsnofromSCwhereintersect selectCno =1snofromSCwhereCno =3;17.查询只选修了 1 号课程和 3 号课程的同学学号。selectfrom
12、where select from where select from grouphavingsnoSCCno =1Sno SCCno =2Sno SCandSnoinandSnoinbySnoCOUNT sno = 2 ;18.查询没有选修 1 号课程的同学姓名。selectfromwhere fromsnamestudentsnoSCinselectsnowherefirst. Sage second . Sageandsecond . Sdept =ISand first. Sdept .= IS;可编辑资料 - - - 欢迎下载精品名师归纳总结except selectsno from
13、SCwhereCno =1;19. 查询选修了全部课程的同学姓名。selectsname fromstudentwherestudent. snoin selectsnofrom sc as one where not exists select *fromSC astwo wherenotexists select*fromSC asthreewherethree. Sno =one . Snoandthree. Cno=two . Cno ;20. 查询至少选修了 95002 所选修的全部课程的同学学号。selectdistinctsno fromscasonewherenotexists
14、 select*fromSC astwowheretwo . sno =95002andnotexists select*fromSC asthreewherethree. Sno =one . Snoandthree. Cno=two . Cno ;21. 建立信息系同学视图,并从视图中查询年龄最大的同学记录。createviewIS_student创建视图asselect* fromStudentwhereSdept =IS;selectsno 查询信息fromIS_student wheresagein selectMAX sage fromIS_student; 试验四试验要求: 下试
15、验课后交一份试验报告,写明本次试验所用的SQL 语句,并给出执行结果。1. 用 SQL 语句定义表 studentsno,sname,ssex,sage, 并加入如下约束:主键: sno。 sname 有唯独约束。 sname,ssex,sage都不答应空。可编辑资料 - - - 欢迎下载精品名师归纳总结2. 用 SQL 语句定义表 coursecno,cname,并加入如下约束: 主键: cno。 cname 不答应空。3. 用 SQL 语句定义表 scsno,cno,cj,并加入如下约束:主键: sno,cno。为 sno 定义名为 lsno 的默认参照完整性。为cno 定义名为 lcno
16、 的默认参照完整性。4. 用 SQL 语句向 student 表输入如下元组:95001,李勇 ,男,20;95002,刘晨 ,女,21;用 SQL 语句向 course 表输入如下元组: 1,数据库 ;2,数学 ;用 SQL 语句向 sc 表输入如下元组: 95001,1,92;95001,2,85;95002,2,90;createtablestudentsnochar 5primarykey ,snamechar 10 uniquenotnull, ssexchar 2 notnull,sageintnotnull; createtablecoursecnochar 1primaryke
17、y ,cnamechar 20 notnull; createtablesc sno char 5, cno char 1, cj int ,primary key sno , cno ,constraint lsno foreign key sno references student sno ,constraintreferenceslcnocourseforeign cno ;key cnoinsertintostudent sno , sname ,ssex ,sage values 95001, 李勇 , 男 , 20 ;insertintostudent sno , sname ,
18、ssex ,sage values 95002, 刘晨 , 女 , 21 ;insertintocourse cno , cname values 1, 数据库 ;insertintocourse cno , cname values 2, 数学 ;可编辑资料 - - - 欢迎下载精品名师归纳总结insertintosc sno ,cno , cj values 95001, 1,92;insertintosc sno ,cno , cj values 95001, 2,85;insertintosc sno ,cno , cj values 95002, 2,90;5. 执行以下语句,并查看
19、执行结果。假如不能正确执行给出错误缘由。insert into student values95001, 张力 ,男,20;/ 错误的缘由是学号已经存在,不答应插入重复的学号,违反了主键约束insert into student values95003, 李勇 ,男,20;/ 错误缘由是 sname 属性不答应显现重复键, 违反了 unique key 约束insert intoSC values95004,1,92;/INSERT 语句与 COLUMNFOREIGNKEY约束 lsno冲突 ,由于 student 表中不存在这个学号deletefromstudentwheresno=9500
20、1;/ 错 误 的 原 因 是 DELETE语 句 与COLUMN REFERENCE约束 lsno 冲突。 Restrict 为默认选项,凡是被基本表所引用的主键不得删除update courseset cno=3wherecno=2;/ 错 误 的 原 因 是 UPDATE语 句 与 COLUMN REFERENCE约束 lcno冲突。破坏了参照完整性。默认的不支持连级修改.6. 给 student 表的 ssex 列添加名为 fm 的约束,使其取值只能取男或女。alter table student add constraint fn checkssex in 男,女;执行 insert
21、 into student values95005, 张力 ,f,20 ,查看执行结果。INSERT语句与COLUMN CHECK约束 fn冲突。 Sage 属性只能为男或女 。该语句违反了约束。7. 给 student 表的 sage列添加约束, 使其年龄不得超过20 岁。查看约束是否能正确添加,并分析其缘由。不能, ALTER TABLE语句与 COLUMN CHECK约束 fn1 冲突。有的数据 大于 20 所以不能加上 约束!8. 删除约束 lsno 和 lcno 。alter table sc drop constraint lcno,lsno;9. 为 sc 表添加在列 sno上的
22、外键约束lsno1,并定义为级联删除。 执行 delete from student where sno=95001; 查看执行结果。altertablescaddconstraintlsno1foreignkey sno referencesstudentondeletecascade;sc 中的关于 95001 的信息也被删除掉了。10. 为 sc表添加在列 cno 上的外键约束 lcno1,并定义为级联修改。 执行 update course set cno=3 where cno=2; 查看执行结果。altertablescaddconstraintlcon1foreignkey cn
23、o referencescourseonupdatecascade;sc 中的关于课程号 2 的被修改为了3。试验五有如下两个表:老师 编号,姓名,性别,职称,工资,系别编号主码:编号系别(系别编号,系名称,人数)主码:系别编号createtableteacher tnochar 5 primarykey ,可编辑资料 - - - 欢迎下载精品名师归纳总结tnamechar 10 , tsexchar 2, tposchar 10 , tsalint,xnochar 4 ;createtablexibie xnochar 4 primarykey ,xnamechar 2 ,xcountint
24、;insertintoxibie xno ,xname , xcount values 1001,CS,0 ;insertintoxibie xno ,xname , xcount values 1002,IS,0 ;insertintoxibie xno ,xname , xcount values 1003,NE,0 ;要求利用触发器完成下面的功能:1.对老师表进行插入、删除操作时保护系别人数。createtriggertri_countonteacher forinsertasupdatexibiesetxcount=xcount+1 wherexno = selectxnofromin
25、serted;createtriggertri_count1onteacher fordeleteasupdatexibiesetxcount=xcount- 1wherexno =selectfromxnodeleted;2.教授工资不得低于1500。createtriggertri_salaryonteacherforupdate, insert asifselectCOUNT * frominserted wherenotexists select*frominsertedwhereinserted. tpos = 教授andinserted. tsal1500 = 0可编辑资料 - -
26、 - 欢迎下载精品名师归纳总结rollbacktransaction3. 工资只能增加不能削减。createtriggertri_salary1onteacher forupdateas ifselectCOUNT*frominserted, deletedwheredeleted. tsalinserted. tsal= 0 rollbacktransaction4. 删除系别时,用触发器实现级联删除。试验六综合试验:任选一开发工具设计一个C/S 结构的“同学治理系统” ,全面熟识与领悟本门课程所学习的内容, 从实际系统开发中领悟数据库完整性的意义和数据库设计理论的意义与设计过程,把握SQL 嵌入式使用方法,领悟嵌入式使用的敏捷性。可编辑资料 - - - 欢迎下载