2022年附录C数据库上机实验 .pdf
《2022年附录C数据库上机实验 .pdf》由会员分享,可在线阅读,更多相关《2022年附录C数据库上机实验 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、364 附录 C 上机实验C.1 第 4 章上机实验-陈宇超,仅供参考 - 下列实验均使用SQL Server 的 SSMS 工具实现。1用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):数据库名为:学生数据库主要数据文件的逻辑文件名为:Students_data,存放在 D:Data 文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。),初始大小为:5MB ,增长方式为自动增长,每次增加1MB 。日志文件的逻辑文件名字为:Students_log,也存放在 D:Data 文件夹下,初始大小为: 2MB ,增长方式为自动增长,每次增加10% 。2选用已
2、建立的“学生数据库”,写出创建满足表C-1到4-4 条件的表的 SQL 语句,并执行所写代码。(注:“说明”部分不作为表定义内容)表 C-1 Student表结构列名说明数据类型约束Sno 学号普通编码定长字符串,长度为7 主键Sname 姓名普通编码定长字符串,长度为10 非空Ssex 性别普通编码定长字符串,长度为2 取值范围: 男,女 Sage 年龄微整型( tinyint)取值范围: 15-45 Sdept 所在系普通编码不定长字符串,长度为20 默认值为“计算机系”Sid 身份证号普通编码定长字符串,长度为10 取值不重Sdate 入学日期日期默认为系统当前日期表 C-2 Cours
3、e表结构列名说明数据类型约束Cno 课程号普通编码定长字符串,长度为10 主键Cname 课程名普通编码不定长字符串,长度为20 非空Credit 学时数整型取值大于0 Semester 学分小整型表 C-3 SC 表结构列名说明数据类型约束Sno 学号普通编码定长字符串,长度为7 主键,引用Student 的外键Cno 课程号普通编码定长字符串,长度为10 主键,引用Course 的外键Grade 成绩小整型取值范围为0-100 表 C-4 Teacher表结构名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
4、- - - - - - 第 1 页,共 15 页 - - - - - - - - - 365 列名说明数据类型约束Tno 教师号普通编码定长字符串,长度为8 非空Tname 教师名普通编码定长字符串,长度为10 非空Salary 工资定点小数,小数点前4 位,小数点后2 位3. 写出实现如下功能的SQL 语句,并执行所写代码,查看执行结果。(1) 在 Teacher 表中添加一个职称列,列名为:Title,类型为nchar(4)。ALTERTABLETeacher ADDTitleVARCHAR( 4) (2) 为 Teacher 表中的 Title列增加取值范围约束,取值范围为: 教授,副教
5、授, 讲师 。ALTERTABLETeacher ADDCONSTRAINT TitleCHECK (TitleIN( 教授 , 副教授 , 讲师 ) (3) 将 Course 表中 Credit列的类型改为:tinyint。注意:这里首先需要先删除Credit的约束 , 修改完数据类型后再重新添加约束项ALTERTABLECourse DROP CONSTRAINTCK_Course_Credit_2B3F6F97ALTERTABLECourse ALTERCOLUMN CreditTINYINTALTERTABLECourse ADDCONSTRAINT CreditCHECK ( Cre
6、dit 0) (4) 删除 Student 表中的 Sid 和 Sdate 列。注意:这里首先需要先删除约束ALTERTABLEStudent DROP CONSTRAINTUQ_Student_CA1E5D79B3204FCFALTERTABLEStudentDROP CONSTRAINTDF_Student_Sdate_3B75D760ALTERTABLEStudentDROP COLUMN Sdate, Sid (5) 为 Teacher 表添加主键约束,其主键为:Tno。ALTERTABLETeacher ADDPRIMARY KEY (Tno) 建立数据库主要文件和日志文件我们可以看
7、到D盘增加了主要数据文件.mdf 和日志文件 .ldf 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 366 给 students_data建立表格createtableStudent (Sno char ( 7),Sname char ( 10) notnull,Ssex char ( 2) check( Ssex= 男or Ssex= 女),Sage tinyintcheck( Sage 14 AND Sage0),Se
8、mester tinyint,) createtableSC (Sno char ( 7),Cno char ( 10),Grade tinyintcheck( Grade=0 ANDGrade200 11.查询选了 C002课程的学生姓名和所在系。SELECTSname , Sdept FROM Studentst , SCsc WHERE st . Sno=sc. Sno ANDCno =C002 或者 SELECT Sname , Sdept FROM StudentWHERE Sno IN( SELECTSno FROM SCWHERE Cno =C002 ) 或者SELECTSnam
9、e , Sdept FROM StudentWHERE EXISTS (SELECT* FROM SCWHERE Sno = Student . Sno ANDCno = C002 )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 368 12.查询考试成绩80 分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。SELECT Sname , Cno , Grade FROM Student , SCWHERE Studen
10、t . Sno=SC . Sno ANDGrade80 ORDER BY Grade DESC 13.查询与 VB在同一学期开设的课程的课程名和开课学期。SELECTc2. Cname , c2. Semester FROM Course c1, Course c2WHERE c1. Cname =c2. CnameANDc1. Cname =VBANDc2. Cname !=VB 14.查询与李勇年龄相同的学生的姓名、所在系和年龄。SELECTs2. Sname , s2. Sdept, s2. Sage FROM Students1, Students2WHERE s1. Sage =s2
11、. Sage ANDs1. Sname = 李勇 ANDs2. Sname != 李勇或者SELECTSname , Sdept, Sage FROM StudentWHERE Sage =(SELECTSage FROMStudentWHERE Sname = 李勇 ) ANDSname != 李勇 15.查询哪些课程没有学生选修,列出课程号和课程名。SELECTCourse. Cno , Course. CnameFROM Course LEFT JOIN SC onSC . Cno =Course. Cno WHERE SC .Cno IS NULL 16.查询每个学生的选课情况,包括未
12、选课的学生,列出学生的学号、姓名、选的课程号。SELECTStudent . Sno, Student . Sname , Cno FROM StudentLEFT JOIN SC ONSC . Sno=Student . Sno 17.查询计算机系哪些学生没有选课,列出学生姓名。SELECT Sname FROM Student WHERE Sdept= 计算机系 AND SnoNOT IN( SELECTSno FROM SC ) 或者SELECTSnameFROM StudentS LEFT JOIN SC ONS. Sno = SC . SnoWHERE Sdept = 计算机系 AN
13、DSC .Cno IS NULL18.查询计算机系年龄最大的三个学生的姓名和年龄。SELECT Top 3 Sname , Sage FROM Student WHERE Sdept= 计算机系 ORDER BYSage DESC 19.列出“ VB ”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩。SELECT TOP 3 WITHTIES Sname , Sdept, Grade FROM Student S JOIN SConS. Sno = SC . Sno JOIN Course C ONC . Cno = SC . Cno WHERE Cname= VBORDER BY G
14、rade DESC 20.查询选课门数最多的前2 位学生,列出学号和选课门数。SELECT top 2 Sno, COUNT(Cno ) AS 选课数 FROM SCGROUP BY Sno ORDER BYCOUNT( Cno ) DESC 21.查询计算机系学生姓名、年龄和年龄情况,其中年龄情况为:如果年龄小于18,则显名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 369 示“偏小”;如果年龄在18-22,则显示 “合适
15、”;如果年龄大于22,则显示“偏大”。 SELECTSno, Sage ,CASEWHEN Sage =18 ANDSage22 THEN 偏大ENDAS 年龄情况 FROM Student 22.统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号, 选课人数及选课情况, 其中选课情况为: 如果此门课程的选课人数超过100 人,则显示“人多”;如果此门课程的选课人数在40100,则显示 “一般”;如果此门课程的选课人数在140,则显示“人少” ;如果此门课程没有人选,则显示“无人选”。 SELECTCourse. Cno , COUNT(Sno) AS 选课人数 ,CASEW
16、HEN COUNT(Sno)100 THEN 人多WHEN COUNT(Sno)0 THEN 人少WHEN COUNT(Sno)=40 THEN 一般WHEN COUNT(Sno)=0 THEN 无人选 endAS 人数情况 FROM SCRIGHTJOIN Course ONCourse. Cno =SC . Cno GROUP BYCourse. Cno 23.查询计算机系选了VB 课程的学生姓名、所在系和考试成绩,并将结果保存到新表VB_Grade中。局部临时表: #新表名。局部于当前连接,生命期同连接期。全局临时表: # 新表名。可在所有连接中使用,生命期同用户连接期永久表:新表名,存
17、储在磁盘上格式: SELECT 选择列表INTO 新表名FROM 子句,SELECTSname , Sdept, Grade INTO VB_GradeFROM Student , SC , CourseWHERE Student . Sno=SC . Sno ANDCourse. Cno =SC . Cno ANDCname =VB 24.统计每个系的女生人数,并将结果保存到新表Girls中。SELECT Sdept, Ssex, COUNT( Ssex) AS 人数 IntoGirlsFROM Student WHERESsex= 女 GROUP BY Sdept, Ssex25.用子查询
18、实现如下查询:(1)查询选了“ C001”课程的学生姓名和所在系。SELECTSname , Sdept FROM StudentWHERE Sno IN( SELECTSno FROM SC WHERE Cno =C001) (2)查询通信工程系成绩80 分以上的学生的学号和姓名。SELECTSno , SnameFROM StudentWHERE Sdept= 通信工程系 ANDSno IN (SELECTSno FROM SC WHERE Grade80)(3)查询计算机系考试成绩最高的学生的姓名。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
19、- - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 370 SELECTSnameFROM Student , SC WHERE SC . Sno=Student . SnoANDSdept= 计算机系 ANDGrade in(SELECTMAX ( Grade)FROMSC , StudentWHERE SC . Sno=Student . Sno ANDSdept= 计算机系 ) (4)查询年龄最大的男生的姓名、所在系和年龄。SELECTSname , Sdept, Sage FROM StudentWHERE S
20、sex= 男ANDSage in(SELECTMAX (Sage) FROM Student WHERE Ssex= 男 ) 26.查询 C001课程的考试成绩高于该课程平均成绩的学生的学号和成绩。SELECTSno, GradeFROM SC WHERE Cno = C001ANDGrade ( SELECTAVG ( Grade) FROM SC WHERE Cno = C001 )27.查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和考试成绩。SELECTSname , Sdept, Cname , Grade FROM Student , SC , Cour
21、se WHEREStudent . Sno=SC . Sno ANDCourse. Cno =SC . Cno ANDSdept= 计算机系 ANDGrade(SELECTAVG ( Grade) FROM SC , Course, StudentWHERESC . Cno =Course. Cno ANDStudent . Sno=SC . Sno ANDSdept= 计算机系 )28.查询 VB课程考试成绩高于VB平均成绩的学生姓名和VB成绩。SELECTSname , Grade FROM Student , SC , Course WHERE Student . Sno=SC . Sn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年附录C数据库上机实验 2022 附录 数据库 上机 实验
限制150内