




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 建立S_T数据库1. 使用下面语句:CREATE DATABASE S_T2. 用菜单建立二、 用CREATE TABLE语句建立Student、Course和SC三张表(参见教材P82)1. Student(Sno, Sname, Ssex, Sage, Sdept)要求:Sno为主码,Sname取唯一值USE S_TCREATE TABLE Student (Sno VARCHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/ Sname VARCHAR(20) UNIQUE, /* Sname取唯一值*/Ssex VARCHAR(2), Sage INT, Sdept VARCHAR(20) );2. Course(Cno, Cname, Cpno, Ccredit)要求:Cno是主码;Cname不能为空;Cpno为先修课程编号,参照本表的CnoCREATE TABLE Course (Cno VARCHAR(4) PRIMARY KEY, Cname VARCHAR(40) NOT NULL, Cpno VARCHAR(4) , Ccredit INT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); 3. SC(Sno, Cno, Grade)要求:主码是Sno和Cno;Sno参照Student表中的Sno; Cno参照Course表中的CnoCREATE TABLE SC (Sno VARCHAR(9), Cno VARCHAR(4), Grade INT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno); 三、 用DROP TABLE语句将之前建立的三张表删除SQLServer不支持droptable.cascade语句,用户需要自己手动删除那些引用删除表的表。所以请注意删除表的顺序DROP TABLE SC;DROP TABLE Student;DROP TABLE Course;四、 用菜单建立上面要求的三张表,在关系图中建立外码参照关系。五、 修改这三张表1. 在Course表中加入一个属性列Cdept,记录开课的系名ALTER TABLE Course ADD Cdept VARCHAR(20);2. 增加课程名称必须取唯一值的约束条件ALTER TABLE Course ADD UNIQUE(Cname); 3. 取消Student表中的Sname取唯一值的约束ALTER TABLE Student DROP CONSTRAINT 索引名称; 说明:SQL SERVER不支持DROP UNIQUE,在表的设计窗口中查询索引名称,然后使用上面的语句。4. 在表Student的设计窗口中,将Sage的默认值设置为0六、 按照书上的数据,填充数据表。七、 用SQL的查询语句表达下列查询:1. 检索李勇同学所学课程的课程号和课程名。SELECT Course.Cno, CnameFROM Student, Course, SCWHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Sname=李勇2. 检索年龄大于18岁的男学生的学号和姓名。SELECT Sno, SnameFROM StudentWHERE Ssex=男 AND Sage183. 检索选修了 2 号课程的女学生姓名SELECT SnameFROM Student, SCWHERE Student.Sno=SC.Sno AND Cno=2 AND Ssex=女4. 检索200215121同学不学的课程的课程号。SELECT CnoFROM CourseWHERE Cno NOT IN (SELECT Cno FROM SC WHERE Sno=200215121)或者SELECT CnoFROM CourseWHERE NOT EXISTS ( SELECT * FROM SC WHERE Course.Cno=SC.Cno AND Sno=200215121)5. 检索至少选修两门课程的学生学号。SELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*)=2;或者SELECT SnoFROM StudentWHERE 2=2ORDER BY NUM DESC, Cno;10. 检索学号比刘晨同学大,而年龄比她小的学生姓名。SELECT SnameFROM StudentWHERE Sno(Select Sno FROM Student WHERE Sname=刘晨) AND Sage=2 )19. 检索李勇同学没有选修的课程的课程号。SELECT CnoFROM CourseWHERE Cno NOT IN ( SELECT Cno FROM SC, Student WHERE Student.Sno=SC.Sno AND Sname=李勇)20. 检索选修计算机系(CS)所开全部课程的学生的学号与姓名。SELECT Sno, SnameFROM StudentWHERE NOT EXISTS ( SELECT * FROM Course WHERE Cdept=CS AND NOT EXISTS ( SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno ) )21. 检索选修信息系统且成绩大于等于90分的计算机系(CS)的学生的姓名与学号。SELECT Sname, SnoFROM StudentWHERE Sno IN ( SELECT DISTINCT Sno FROM SC, Course WHERE SC.Cno=Course.Cno AND Grade=90 AND Cname=信息系统 )22. 查询选修3门以上课程且平均成绩大于80的学生的学号、姓名、所在系名。SELECT Sno, Sname, SdeptFROM StudentWHERE Sno IN ( SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)=3 AND AVG(Grade)80 );23. 求计算机系(CS)所开课程的每门课程的学生平均成绩,按平均成绩从高到低排序输出。SELECT Cno, AVG(Grade)FROM SCWHERE Cno IN ( SELECT Cno FROM Course WHERE Cdept=CS )GROUP BY CnoORDER BY AVG(Grade) DESC24. 检索缺考2门以上的学生姓名。SELECT SNAMEFROM StudentWHERE Sno IN ( SELECT Sno FROM SC WHERE Grade IS NULL GROUP BY Sno HAVING count(*)=2)25. 检索缺考或不及格们数3门以上的学生学号和姓名。SELECT Sno, SNAMEFROM StudentWHERE Sno IN ( SELECT Sno FROM SC WHERE Grade IS NULL OR Grade=3)26. 检索每个学生的总学分SELECT Sno, Sum(Ccredit)FROM SC, CourseWHERE SC.Cno=Course.Cno GROUP BY Sno27. 查询既选修了数据库又选修了信息系统的学生的姓名及学号SELECT Sno, SnameFROM StudentWHERE NOT EXISTS ( SELECT * FROM Course WHERE ( Cname=数据库 OR Cname=信息系统 ) AND NOT EXISTS ( SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno ) )28. 查询即没有选修数据库又没有选修 操作系统的学生的姓名及学号。SELECT Sno, SnameFROM StudentWHERE Sno NOT IN ( SELECT Sno FROM SC, Course WHERE SC.Cno=Course.Cno AND ( Cname=数据库 OR Cname=操作系统 ) )八、 写出下面数据更新语句1. 将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERT INTO Student ( Sno, Sname, Ssex, Sdept, Sage )VALUES ( 200215128, 陈冬, 男, IS, 18 );2. 插入一条选课记录( 200215128, 1 )。INSERT INTO SC( Sno, Cno )VALUES ( 200215128, 1);3. 创建表Dept_age(Sdept, Avg_age),求每个系学生的平均年龄,写入该表。CREATE TABLE Dept_age (Sdept VARCHAR(20) , Avg_age INT); INSERT INTO Dept_age ( Sdept, Avg_age )SELECT Sdept, AVG(Sage)FROM StudentGROUP BY Sdept; 4. 将学生200215121的年龄改为22岁。UPDATE StudentSET Sage = 22WHERE Sno = 200215121;5. 将所有学生的年龄增加1岁。UPDATE StudentSET Sage= Sage+1; 6. 将计算机科学系全体学生的成绩置零。UPDATE SCSET Grade = 0WHERE CS= (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno );7. 删除计算机科学系所有学生的选课记录DELETE FROM SCWHERE CS= (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno ); 8. 删除学号为200215128的学生记录(注意此时SC表中,已经有相关记录)。DELETE FROM SCWHERE Sno = 200215128 ;DELETE FROM StudentWHERE Sno = 200215128 ; 九、 视图练习:1. 用CREATE VIEW语句,将上面的查询练习26,创建为视图V_Totalcredit。CREATE VIEW V_Totalcredit (Sno, Tcredit)AS SELECT Sno, Sum(Ccredit) FROM SC, Course WHERE SC.Cno=Course.Cno GROUP BY Sno2. 打开视图V_Totalcredit的设计窗口,将Tcredit改名为Totcredit3. 用DROP VIEW语句,将视图V_Totalcredit删除。 DROP VIEW V_Totalcredit4. 用菜单命令,重新创建视图V_Totalcredit5. 利用视图V_Totalcredit进行查询:所有学生的学号、姓名和所修课程的总学分(要考虑有的学生没有选修课程)SELECT Sno, Sname, TotcreditFROM Student LEFT OUTER JOIN V_Totalcredit ON (Student.Sno = V_Totalcredit.Sno)十、 触发器练习创建触发器,当Student表中的数据发生变化时(插入、更新、删除),自动修改Dept_age表中的数据(提示,需要两个触发器)(1)当在Student表中插入或修改学生信息时,在Dept_age更新或插入数据CREATE TRIGGER trg_newage ON StudentAFTER INSERT, UPDATEAS BEGINUPDATE Dept_age SET Avg_age = (SELECT AVG(Sage) FROM Student WHERE Student. Sdept = Dept_age. Sdept) WHERE Sdept IN ( SELECT Sdept FROM inserted );INSERT INTO Dept_age (Sdept, Avg_age)SELECT Sdept, AVG(Sage) FROM StudentWHERE Sdept IN ( SELECT Sdept FROM inserted ) AND Sdept NOT IN (SELECT Sdept FROM Dept_age) GROUP BY Sdept; END; (2)当在Student表中删除学生信息时,在Dept_age更新或删除数据CREATE TRIGGER trg_delage ON StudentAFTER DELETE AS BEGINU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司生产流程管理制度
- 光轨道角动量光子晶体光纤的设计及性能分析
- 2025授权经销合同范本
- 情感分析与拍卖平台用户体验优化-洞察阐释
- 2024年上海青浦教育系统招聘事业编制教师真题
- 神经内科帕金森病基础知识点归纳
- 2024年安康紫阳县特岗教师招聘真题
- 2025年四川轻化工大学数学竞赛试题
- 幼儿园保育工作相关表格与工作制度:实验幼儿园户外活动检查记录表
- 基于类间关系建模的异常区域分割算法研究
- 2025版 初中 语文 学考复习 第三部分 模拟练《江西省2025年初中语文学业水平考试模拟练(三)》课件
- 2024年危险化学品生产经营单位其他从业人员考试题库附答案
- DB45T 2364-2021 公路路基监测技术规范
- 造价咨询进度控制措施全
- 电力储能用飞轮储能系统技术规范
- 必修二公式结论默写-高中数学人教A版(2019)必修第二册
- 2024年成人高考成考(专升本)医学综合试卷与参考答案
- 园林绿化风险因素辨识及防控措施考核试卷
- 人力资源购销合同模板
- 白酒的品评-讲义-
- 广东省深圳市2024年中考英语真题(含答案)
评论
0/150
提交评论