ImageVerifierCode 换一换
格式:DOC , 页数:58 ,大小:3.01MB ,
资源ID:5612210      下载积分:14 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5612210.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(安徽工业大学数据库实验报告.doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

安徽工业大学数据库实验报告.doc

1、数据库系统概论实验报告书专业班级学 号姓 名指导教师安徽工业大学计算机科学与技术学院目录实验一:数据定义语言 1实验二:数据操纵语言 10实验三:数据查询语言17实验四:视图、授权控制与事务处理43实验五:Oracle存储过程与触发器54数据库学习总结56实验一:数据定义语言 实验日期 年 月 日 实验目的 熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引。 实验内容 Oracle上机环境以及Oracle客户端的配置参见附录。1 SQL数据定义语句: 例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中

2、Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。创建表Student:CREATE TABLE STUDENT( SNOCHAR(5), SNAMEVARCHAR2(8), SDEPTCHAR(2)NOT NULL, SCLASSCHAR(2) NOT NULL, SAGENUMBER(2),CONSTRAINT SNOS_PK PRIMARY KEY(SNO);创建表Course:CREATE TABLE Course( CNOCHAR(3), CNAMEVARCHAR2(16), CTIMENUMBER(3),CONSTRAINT CNOC

3、_PK PRIMARY KEY(CNO);创建表Teach:CREATE TABLE Teach( TNAMEVARCHAR2(8), TSEXCHAR(2), CNOCHAR(3), TDATEDATE, TDEPTCHAR(2),CONSTRAINT TCT_PK PRIMARY KEY(TNAME,CNO,TDEPT),CONSTRAINT CNOT_FK FOREIGN KEY(CNO) REFERENCES Course(CNO);创建表Score:CREATE TABLE SCORE( SNOCHAR(5), CNOCHAR(3), SCORENUMBER(5,2),CONSTRA

4、INT SCS_PK PRIMARY KEY(SNO,CNO),CONSTRAINT SNOS_FK FOREIGN KEY(SNO) REFERENCES Student(SNO),CONSTRAINT CNOS_FK FOREIGN KEY(CNO) REFERENCES Course(CNO) );插入数据:1、StudentINSERT INTO Student VALUES(96001,马小燕 ,CS,01,21)?INSERT INTO Student VALUES(96002,黎明 ,CS,01,18)?INSERT INTO Student VALUES(96003,刘东明 ,

5、MA,01,18)?INSERT INTO Student VALUES(96004,赵志勇 ,IS,02,20)?INSERT INTO Student VALUES(97001,马蓉 ,MA,02,19)?INSERT INTO Student VALUES(97002,李成功 ,CS,01,20)?INSERT INTO Student VALUES(97003,黎明 ,IS,03,19)?INSERT INTO Student VALUES(97004,李丽 ,CS,02,19)?INSERT INTO Student VALUES(96005,司马志明,CS,02,18)INSERT

6、 INTO Student VALUES(20001,赵薇 ,IS,02,19)2、CourseINSERT INTO Course VALUES(001,数学分析,144)?INSERT INTO Course VALUES(002,普通物理,144)?INSERT INTO Course VALUES(003,微机原理,72)?INSERT INTO Course VALUES(004,数据结构,72)?INSERT INTO Course VALUES(005,操作系统,64)INSERT INTO Course VALUES(006,数据库原理,64)?INSERT INTO Cour

7、se VALUES(007,DB_Design,48)?INSERT INTO Course VALUES(008,程序设计,56)3、TeachINSERT INTO Teach VALUES(王成钢,男,004,TO_DATE( 1999-09-05, YYYY-MM-DD),CS)?INSERT INTO Teach VALUES(李正科,男,003,TO_DATE( 1999-09-05, YYYY-MM-DD),CS)?INSERT INTO Teach VALUES(严敏 ,女,001,TO_DATE( 1999-09-05, YYYY-MM-DD),MA)?INSERT INTO

8、 Teach VALUES(赵高 ,男,004,TO_DATE( 1999-09-05, YYYY-MM-DD),IS)?INSERT INTO Teach VALUES(李正科,男,003,TO_DATE( 2000-02-23, YYYY-MM-DD),MA)?INSERT INTO Teach VALUES(刘玉兰,女,006,TO_DATE( 2000-02-23, YYYY-MM-DD),CS)?INSERT INTO Teach VALUES(王成钢,男,004,TO_DATE( 2000-02-23, YYYY-MM-DD),IS)?INSERT INTO Teach VALUE

9、S(马悦 ,女,008,TO_DATE( 2000-09-06, YYYY-MM-DD),CS)?INSERT INTO Teach VALUES(王成钢,男,007,TO_DATE( 1999-09-05, YYYY-MM-DD),CS)?4、ScoreINSERT INTO Score VALUES(96001,001,77.5)?INSERT INTO Score VALUES(96001,003,89 )?INSERT INTO Score VALUES(96001,004,86 )?INSERT INTO Score VALUES(96001,005,82 )?INSERT INTO

10、 Score VALUES(96002,001,88 )?INSERT INTO Score VALUES(96002,003,92.5)?INSERT INTO Score VALUES(96002,006,90 )?INSERT INTO Score VALUES(96005,004,92 )?INSERT INTO Score VALUES(96005,005,90 )?INSERT INTO Score VALUES(96005,006,89 )?INSERT INTO Score VALUES(96005,007,76 )?INSERT INTO Score VALUES(96003

11、,001,69 )?INSERT INTO Score VALUES(97001,001,96 )?INSERT INTO Score VALUES(97001,008,95 )?INSERT INTO Score VALUES(96004,001,87 )?INSERT INTO Score VALUES(96003,003,91 )?INSERT INTO Score VALUES(97002,003,91 )INSERT INTO Score VALUES(97002,004, )?INSERT INTO Score VALUES(97002,006,92 )?INSERT INTO S

12、core VALUES(97004,005,90 )?INSERT INTO Score VALUES(97004,006,85 )?INSERT INTO Score VALUES(97004,008,75 )?INSERT INTO Score VALUES(97003,001,59 )?INSERT INTO Score VALUES(97003,003,58 ) 例1-2: (修改数据库表) 在Student表中增加SEX(C,2) 字段。ALTER TABLE Student ADD SEX CHAR(2); 例1-3: (修改列名) 将Student表中列名SEX修改为SSEX。A

13、LTER TABLE Student RENAME COLUMN SEX TO SSEX; 例1-4: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。ALTER TABLE Student MODIFY SNAME VARCHAR2(10) NOT NULL; 例1-5: (建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。CREATE INDEX SC_GRADE ON Score(CNO ASC,SCORE DESC); 例1-6: (删除索引) 删除索引SC_GRADE。DROP INDEX SC_GRAD

14、E; 例1-7: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。CREATE TABLE S1( SNOCHAR(5), SNAMEVARCHAR2(10) NOT NULL, SDCHAR(2) NOT NULL, SANUMBER(2); 例1-8: (修改数据库表) 删除成绩表Score的参照完整性约束关系。TER TABLE Score DROP CONSTRAINT SNOS_FK;ALTER TABLE Score DROP CONSTRAINT CN

15、OS_FK; 例1-9: (修改数据库表) 添加成绩表Score的参照完整性约束关系。ALTER TABLE Score ADD CONSTRAINT SNO_FK FREIGN KEY(SNO) REFERENCES STUDENT(SNO);ALTER TABLE Score ADD CONSTRAINT CNOS_FK FOREIGN?KEY(CNO) REFERENCES Course(CNO); 例1-10: (修改数据库表名) 将数据库表S1改名为Student_Temp。RENAME S1 TO Student_Temp; 实验要求 熟悉Oracle上机环境,掌握Oracle客户

16、端的配置; 建立数据库表,修改数据库表结构,建立、删除索引; 实验方法 按照附录中的操作步骤进行客户端的配置; 将实验需求用SQL语句表示; 执行SQL语句; 查看执行结果,如果结果不正确,进行修改,直到正确为止。 实验总结 SQL语句以及执行结果; 对重点实验结果进行分析; 实验中的问题和提高; 收获与体会。从实验一中我学会了表的建立、表的内部一些格式的修改,我在实验一就把数据全插入了,因为student表的性别列在开始的时候没有建立,所以在开始的他并没有显示,到后来为了和实验报告上的表一样,还得重新添加性别列。我知道了因为各表之间有了关联,所以有些时候简单的修改回行不通,我就遇到了“未找到

17、父项关键字”等等问题,还好后来都改正过来了,总的来说,也算开始了解SQL语言了。实验二:数据操纵语言 实验日期 年 月 日 实验目的 在实验一的基础上,熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。 实验内容 2 SQL数据操纵语句: 例2-1:(插入数据) 按前面各表中的数据分别插入到教学数据库的四个数据库表中。 例2-2:(多行插入) 将表Student中在计算机系(CS)的学生数据插入到表Student_Temp中。INSERTINTOSTUDENT_TEMP(SNO,SNAME,SD,SA)SELECTSNO,SNAME,SDEPT,SAGE FROMSTUDENTWHER

18、ESDEPT=CS(以上操作中,注意用COMMIT提交数据,将数据保存到数据库服务器) 例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。CREATE TABLE STUDENT_GR(SNO CHAR(5),SNAME VARCHAR2(10),GAVG NUMBER(5,2); INSERT INTO STUDENT_GR(SNO,GAVG) SELECT SNO,AVG(SCORE) FROM SCORE GROUP BY SNO; 例2-4: (修改数据) 将Student_Temp表中所有学生的年龄加2。UPDATE S

19、TUDENT_TEMP SET SA=SA+2; 例2-5: (修改数据) 将Course表中程序设计课时数修改成与数据结构的课时数相同。UPDATE COURSE SET CTIME=(SELECT CTIME FROM COURSE WHERE CNAME=数据结构)WHERE CNAME=程序设计; 例2-6: (插入数据) 向Score表中插入数据(98001, 001, 95),根据返回信息解释其原因。INSERT INTO SCORE VALUES(98001,001,95); 因为Score中的Sno是参照Student表中的Sno,而Student表中没有98001的Sno,所

20、以插入失败。 例2-7: (插入数据) 向Score表中插入数据(97001, 010, 80),根据返回信息解释其原因。INSERT INTO SCORE VALUES(97001,010,80);因为Score中的Cno是参照Course表中的Cno,而Course表中没有010的Cno,所以插入失败。例2-8: (删除数据) 删除Student表中学号为96001的学生信息,根据返回信息解释其原因。DELETE FROM STUDENT WHERE SNO=96001; 因为Score表中的Sno是参照Student表中的Sno,Sno_FK 默认关系是当父表的被删除时,如果该行在子表中

21、引用,则它不能被删除。相当于ON DELETE RESTRICTED.例2-9: (删除数据) 删除Course表中课程号为003 的课程信息,根据返回信息解释其原因。DELETE FROM COURSE WHERE CNO=003; 因为Score表中的Cno是参照Course表中的Cno,Cno_FK 默认关系是当父表的被删除时,如果该行在子表中引用,则它不能被删除。相当于ON DELETE RESTRICTED. 例2-10: (删除数据) 删除学生表Student_Temp中学号以96打头的学生信息。DELETE FROM STUDENT_TEMP WHERE SNO LIKE 96%

22、;(此操作后,注意用ROLLBACK回退可能更新的数据) 例2-11: (删除数据) 删除数据库表Student_Temp中所有学生的数据。DELETE FROM STUDENT_TEMP; 例2-12:(删除表) 删除数据库表Student_Temp和Student_Gr。DROP TABLE STUDENT_TEMP PURGE; DROP TABLE STUDENT_GR PURGE; 实验要求 对数据库表进行插入、修改和删除数据的操作。 实验方法 按照附录中的操作步骤进行客户端的配置; 将实验需求用SQL语句表示; 执行SQL语句; 查看执行结果,如果结果不正确,进行修改,直到正确为止

23、。 实验总结 SQL语句以及执行结果; 对重点实验结果进行分析; 实验中的问题和提高; 收获与体会。实验心得:相对实验一来讲,实验二大多是对表的内部数据的修改,以及删除一些不必要的表。在(2-7、2-8、2-9)中删除一些数据时,我就发现因为关联等原因,一些表的数据在删除时会违反完整约束条件所以是删不掉的。主要还是学会了发现问题和解决问题吧。实验三:数据查询语言 实验日期 年 月 日 实验目的 体会SQL语言数据查询功能的丰富和复杂。 实验内容 3 SQL数据查询语句: 例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。Select Sno,Sname,SSex,sage

24、from Student; 例3-2: (不选择重复行) 求选修了课程的学生学号。Select Distinct Sno from Score; 例3-3: (选择表中的所有列) 求全体学生的详细信息。Select * from Student; 例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。Select Sno,Sname,2015-Sage AS 出生年份 from Student; 例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。Select Sno AS 学号,2012-Sage AS 出生年份 from Student; 例

25、3-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。Select Sname,Sage from Student WHERE Sage19; 例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。Select Sname,Sdept,Sage from Student WHERE Sage18 AND Sdept IN(IS,CS); 例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。Select Sno,Sage from Student WHERE Sage between 19 AND 22; 例3

26、-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。Select Sno,Sage from Student WHERE Sage NOT between 19 AND 22; 例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。Select * from Student WHERE Sdept IN(MA,CS); 例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。Select * from Student WHERE Sdept NOT IN (MA,CS); 例3-12:(匹配查询) 求姓名是以“李”打头的学生。Select * f

27、rom Student WHERE Sname LIKE 李%; 例3-13:(匹配查询) 求姓名中含有“志”的学生。Select * from Student WHERE Sname LIKE %志%; 例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。Select * from Student WHERE Sname LIKE %马_; 例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩。Select Sno,Cno,SCore from Score WHERE Sno LIKE 96_

28、AND SCore between 80 AND 90 AND Cno IN(001,003); 例3-16:(匹配查询) 求课程名中包含 _ 字符的课程号、课程名和学时数。Select Cno,Cname,Ctime from Course WHERE Cname LIKE %_% ESCAPE; 例3-17:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。Select Sno,Cno from Score WHERE SCore IS NULL; 例3-18:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数,要求按课程号升序、分数降序的顺序显示结果。Sel

29、ect Sno,Cno,SCore from Score WHERE Cno IN(003,004) ORDER BY Cno ASC,SCore DESC; 例3-19:(组函数) 求学生总人数。Select COUNT(Sno) from Student; 例3-20:(组函数) 求选修了课程的学生人数。Select COUNT(DISTINCT Sno) from Score; 例3-21:(组函数) 求计算机系学生的平均年龄。Select AVG(Sage) from Student WHERE Sdept=CS; 例3-22:(组函数) 求选修了课程001的最高、最低与平均成绩。Se

30、lect MAX(SCore),MIN(SCore),AVG(SCore) from Score WHERE Cno=001; 例3-23:(分组查询) 求各门课程的平均成绩与总成绩。Select AVG(SCore),SUM(SCORE) from Score GROUP BY Cno; 例3-24:(分组查询) 求各系、各班级的人数和平均年龄。Select COUNT(Sno),AVG(Sage) from Student GROUP BY Sdept,Sclass; 例3-25:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。 SELECT SNAME,SDEPT,C

31、OUNT(*)FROM STUDENT WHERE SDEPT=CS GROUP BY SDEPT;如果在分组后的查询结果中在选择出一组符合条件的分组需用HAVING字句,不能用WHERE字句。否则会出错。 例3-26:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。 SELECT SAGE FROM STUDENT GROUP BY SNO;因为用的是GROUP BY语句所以查询出来的是一组一组的数据,而Select后面的Sage要与GROUP BY后面的 保持一致。 例3-27:(分组查询) 求学生人数不足3人的系及其相应的学生数。 Select Sdept,COUNT(

32、DISTINCT Sno) from Student GROUP BY Sdept HAVING COUNT(DISTINCT Sno)3; 例3-28:(分组查询) 求各系中除01班之外的各班的学生人数。 Select Sclass,COUNT(Sno) from Student GROUP BY Sdept,Sclass HAVING Sclass 01; 例3-29:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。SELECT COUNT(SCore) AS Count FROM Score; SELECT SUM(SCore) AS Sum FROM Sco

33、re;SELECT AVG(SCore) AS Avg FROM Score; SELECT MAX(SCore) AS Max FROM Score; SELECT MIN(SCore) AS Min FROM Score; SELECT SCore FROM Score ORDER BY SCore DESC; SELECT SCore FROM Score ORDER BY SCore ASC; 例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。SELECT SNAME,CNAME,SCORE FROM STUDENT S,CO

34、URSE C,SCORE SC WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND SC.CNO= 001 AND (SCORE NOT BETWEEN 70 AND 90); 例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。 Select Sname,Cno,SCore from Student S,Score SC WHERE S.Sno=SC.Sno; 例3-32:(自身连接查询) 求年龄大于 李丽 的所有学生的姓名、系和年龄。 SELECT S1.SNAME,S1.SDEPT,S1.SAGE FROM STUDENT S1,S

35、TUDENT S2 WHERE S2.SNAME=李丽 AND S1.SAGES2.SAGE; 例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩,要求必须将002和003课程的相关信息显示出来。 Select Sno,Course.Cno,Cname,SCore from Score RIGHT OUTER JOIN Course ON Score.Cno=Course.Cno WHERE SCORE.Cno IN(002,003); 例3-34:(子查询) 求与 黎明 年龄相同的学生的姓名和系。SELECT SNAME,SDEPT FROM Stud

36、ent WHERE SAGE IN ( SELECT SAGE FROM Student WHERE SNAME=黎明) 例3-35:(子查询) 求选修了课程名为 数据结构 的学生的学号和姓名。Select Sno,Sname from Student WHERE Sno IN(Select Sno from Score WHERE Cno =(Select Cno from Course WHERE Cname=数据结构); 例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。Select Sname,Sdept from Student WHERE SageANY(S

37、elect Sage from Student WHERE Sdept=MA); 例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。 Select Sname,Sdept from Student WHERE SageALL(Select Sage from Student WHERE Sdept=MA); 例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。 SELECT SNO,Sname,Sdept from Student WHERE SNO IN(Select SNO from Score WHERE Cno=004); 例3-39:(返回

38、多列的子查询) 求与 黎明 同系且同龄的学生的姓名和系。 Select Sname,Sdept from Student WHERE (Sdept,Sage)IN(Select Sdept,Sage from Student WHERE Sname=黎明) AND SNAME 黎明; 例3-40:(多个子查询) 求与 黎明 同系,且年龄大于 李丽 的学生的信息。SELECT * FROM Student WHERE SDEPT IN(SELECT SDEPT FROM Student WHERE SNAME=黎明) AND SAGE=(SELECT SAGE FROM Student WHER

39、E SNAME=李丽) 例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。 SELECT X.SNAME,X.SAGE FROM STUDENT X,STUDENT Y WHERE X.SAGE=Y.SAGE AND X.SDEPT=MA AND Y.SDEPT=MA AND X.SNOY.SNO 例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。 Select Sname from Student WHERE SSex=女 AND Sno IN(Select Sno from Score WHERE Cno IN(Select DI

40、STINCT Cno from Teach WHERE Tname=王成钢); 例3-43:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。Select DISTINCT Tname, Cno from Teach WHERE Cno IN(SELECT Cno FROM Score GROUP BY CNO HAVING COUNT(Cno)3); 例3-44:(集合查询) 列出所有教师和同学的姓名和性别。Select Sname,SSEX from Student UNION Select Tname,TSEX from Teach; 例3-45:(相关子查询) 求未选修课

41、程004的学生的姓名。 Select SNO,Sname from Student WHERE SNO NOT IN (Select SNO from Score WHERE Cno=004); 例3-46:(相关子查询) 求选修了全部课程的学生的姓名。 Select Sname from Student WHERE NOT EXISTS(Select * from Course WHERE NOT EXISTS(Select * from Score WHERE Sno=Student.Sno AND Cno=Course.Cno); 例3-47:(相关子查询) 求至少选修了学生 96002

42、 所选修的全部课程的学生的学号。 SELECT DISTINCT SNO FROM SCORE SC1 WHERE NOT EXISTS(SELECT * FROM SCORE SC2 WHERE SC2.SNO=96002 AND NOT EXISTS(SELECT * FROM SCORE SC3 WHERE SNO=SC1.SNO AND CNO=SC2.CNO) 例3-48:(相关子查询) 求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。Select Sno,Cno,SCore from Score SC WHERE SCore(Select AVG(SCore) from Score SC1 WHERE SC1.Cno=SC.Cno ); 例3-49:(相关子查询) 查询被一个以上的学生选修的课程号。Select DISTINCT Cno from Score SC WHERE

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服