还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据库系统概论》实验报告书专业班级网134学号119074415姓名云飞指导教师周兵安徽工业大学计算机科学与技术学院SELECT DISTINCT SNO FROM Score SCIWHERE NOEXISTS SELECT*FROM ScoreSC2WHERE SCI.SNO=96002AND NOEXISTS SELECT*FROM ScoreSC3WHERE SNO=SC
1.SNO ANDCN0=SC
2.CNO;例3-48:相关子查询求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩SELECT SNOCNO.SCORE FROM Score SCIWHERE EXTSTSSELECT*FROM ScoreSC2GROUP BY CNO HAVINGSCI.SCOREAVGSCORE ANDCNO=SC
1.CNO例3-49:相关子查询查询被一个以上的学生选修的课程号SELECT CNO FROM Course WHERE EXISTS SELECT*FROM Score GROUP BYCNO HAVINGCOUNT SNO1ANDCN0=Course.CNO;例3-50:相关子查询查询所有未选课程的学生姓名和所在系.SELECT SNAME,SDEPT FROM Student WHERE NOT EXISTSSELECT*FROM Score WHERE SNO=Student.SNO;[实验要求]对数据库表进行各种查询操作[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;©收获与体会心得体会实验3是很重要的知识点,用了50个例子向我一一解释了各种查询数据,其中包括子查询,双重嵌套,三重嵌套,开始的时候学习感觉十分吃力,很多东西都绕在一起,但是学习这个要耐心,理解问题的关键字,理解每句语句的含义,例如在嵌套中要理解每重嵌套的作用,找到关键字的位置,并理解他的作用还有一些没有弄懂的可以网上百度一下,查阅一些资料这样才会弄懂问题的本质要有耐心,才能学好这一章,实验四视图、授权控制与事务处理[实验日期][实验目的]通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能[实验内容]
4.SQL视图的定义与操纵:例4-1:(建立视图)建立计算机系的学生的视图STUDENT_CSocreate viewSTUDENT_CS as select*from Student where SDEPT=CS;例4-2:(建立视图)建立由学号和平均成绩两个字段的视图STUDENT_GR.create viewSTUDENT_GR(SNO,AG)asselect SNO,AVG(SCORE)ag from Score group by SNO;例4-3:(视图查询)利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息select*from STUDENT_CS whereSAGE19;例4-4:(视图查询)利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩select SNO,AG fromSTUDENT_GR whereAG88;例4-5:(视图更新)利用视图STUDENT_CS,增加学生(’96006,,‘张然,‘CS,02,男,19)oinsert intoSTUDENT_CS values(96006,‘张然‘,‘CS,‘02,‘男,19);例4-6:(视图更新)利用视图STUDENT.CS,将学生年龄增加1岁观察其运行结果并分析原因update STUDENT_CS setSAGE=SAGE+1;例4-7:(视图更新)利用视图STUDENT_GR,将平均成绩增加2分观察其运行结果并分析原因updateSTUDENT_GR setAG=AG+2;例4-8:(视图更新)删除视图STUDENT_CS中学号为‘96006’的学生的全部数据delete fromSTUDENT_CS whereSNO=96006,;例4-9:(视图更新)删除视图STUDENT_GR的全部数据delete fromSTUDENTGR;例4-10:(删除视图)删除视图STUDENT_CS和STUDENT_GROdrop viewSTUDENTCS;drop viewSTUDENTGR;
5.SQL数据控制语句例5-1(授权)给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限grant selecton Studentto U149074352,U149074351with grantoption;例5-2:(授权)给邻近同学(用户)授予Teach表上的所有权限grant allon Teachto U149074352,U149074351例5-3:(授权)给所有用户授予Score表上的SELECT权限grant selecton Scoreto public;例5-4:授权验证观察左右邻近同学查询你所授权的表中的内容例5-5:收回授权收回上面例子中的所有授予的权限revoke selecton Studentfrom U149074352,U149074351;revoke allon TeachfromU149074352,U149074351;revoke selecton Scorefrom public;
6.SQL事务处理例6-1事务回退将课程名称表中的‘程序设计课程学时数修改为
80、微机原理课程学时数修改为70学时,查询全部课程的总学时数后,取消所有修改ROLLBACK再次查询全部课程的总学时数注意比较分析两次查询的结果update Courseset CTIME=80where CNAME=程序设计;update Courseset CTIME=70where CNAME=微机原理;select CNO,SUMCTIME fromCourse group by CNO;rollback;select CNO,SUMCTIME fromCourse group by CNO;例6-2:事务提交将课程名称表中的‘程序设计课程学时数修改为
80、微机原理课程学时数修改为70学时,查询全部课程的总学时数后,确认所有修改COMMIT再次查询全部课程的总学时数注意比较分析两次查询的结果update Courseset CTIME=80where CNAME=>程序设计;update Courseset CTIME=70where CNAME=,微机原理;select CNO,SUMCTIME fromCourse groupby CNO;commit;select CNO,SUMCTIME fromCourse groupby CNO[实验要求]
①建立视图,视图查询,视图更新;
②给某一或全部用户授权和收回授权;
③事务回退,事务提交[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会心得体会这个实验是一些视图的问题和授权和实物问题,我发现他与数据处理方面差不多,所以感觉还是挺好学的可以让别人查询我的数据同时,我发现这个实验很有趣,只要处理好数据,就可完成这个实验实验五Oracle存储过程与触发器[实验日期]年月日[实验目的]通过实验进一步理解和掌握Oracle数据库的存储过程和触发器[实验内容]
4.存储过程与触发器例7T:(存储过程)创建一个显示学生总人数的存储过程create orreplace procedureSTU_COUNT(SUM OUTNUMBER)asbeginselect COUNT(*)into SUMfrom Student;end;例7-2:(存储过程)创建显示学生信息的存储过程STUDENT_LIST,并引用STU_COUNT存储过程例7-3:(存储过程)创建一个显示学生平均成绩的存储过程例7-4:(存储过程)创建显示所有学生平均成绩的存储过程例7-5:(修改数据库表)在Student表中增加SA表(N,6,2)字段例7-6:(存储过程)创建存储过程,计算每个学生的平均成绩保存到学生表SAVG字段中例7-7(触发器)当更新学生成绩表SCORE中的学生成绩时,自动计算该学生的平均成绩保存到学生表SAVG字段中例7-8:(触发器)创建包含插入、删除、修改多种触发事件的触发器DML_LOG,对SCORE表的操作进行记录用INSERTING、DELETING、UPDATING谓词来区别不同的DML操作先创建事件记录表LOGS,该表用来对操作进行记录该表的字段含义解释如下LOG」D:操作记录的编号,数值型,它是该表的主键,自动增1,可由序列自动生成LOG.TABLE:进行操作的表名,字符型,非空,该表设计成可以由多个触发器共享使用比如我们可以为Student表创建类似的触发器,同样将操作记录到该表LOG_DML操作的动作,即INSERT、DELETE或UPDATE三种之一LOG_KEY_ID:操作时表的主键值,数值型之所以记录表的主键,是因为主键是表的记录的惟一标识,可以识别是对哪一条记录进行了操作对于Score表,主键是由SN0_CN0构成L0G_DATE操作的日期,日期型,取当前的系统时间LOG_USER操作者,字符型,取当时的操作者账户名比如登录SCOTT账户进行操作,在该字段中,记录账户名为SCOTT[实验要求]
①创建、调试和修改、调用和执行Oracle存储过程;
②创建、调试和修改、测试Oracle触发器.[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会.实验一数据定义语言[实验日期]年.・月.・日[实验目的]熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引[实验内容]Oracle上机环境以及Oracle客户端的配置参见附录
1.SQL数据定义语句例1-1建立数据库表建立教学数据库的四个数据库表,其中Student表中不包含SSEXC,2字段,Sname字段为Sname C,8且可为空CREATE TABLEStudent SNOCHAR5,SNAME CHAR10NULL,SDEPT CHAR2,SCLASS CHAR2,SAGE NUMBER2,CONSTRAINT SON_PK PRIMARY KEY SNO;CREATE TABLECourseCNO CHAR3,CNAME VARCHAR216,CTIME NUMBER3,CONSTRAINT CNO_PK PRIMARYKEY CNO;CREATE TABLETeachTNAME CHAR8,TSEX CHAR2,CNO CHAR3,TDATE DATE,TDEPT CHAR2,CONSTRAINT TT_PK PRIMARYKEY TNAME,CNO,TDEPT,CONSTRAINT CNO_FK FOREIGNKEY CNOREFERENCES CourseCNO;CREATE TABLEScore SNOCHAR5,CNO CHAR3,SCORE NUMBER5,2,CONSTRAINT SC_PK PRIMARYKEY SNO,CNO,CONSTRAINT CNO1_FK FOREIGNKEYCNO REFERENCESCourseCNO,CONSTRAINT SNO_FK FOREIGNKEY SNOREFERENCES StudentSNO;Score表中定义外键的名称不能为CNO,被Teach表中约束条件占用例1-2:修改数据库表在Student表中增加SEXC,2字段ALTER TABLEStudent ADDSEX CHAR2;例1-3:修改列名将Student表中列名SEX修改为SSEXALTER TABLEStudent RENAMECOLUMN SEXTO SSEX;例1-4:修改数据库表将Student表中把Sname字段修改为Sname C,10且为非空ALTER TABLEStudent MODIFYSNAME CHAR10NOT NULL例『5:建立索引为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADECREATE UNIQUEINDEX SC_GRADE ONScore CNOASC,SCORE DESC例1-6:删除索引删除索引SC_GRADEDROP INDEXSC_GRADE;例1-7:建立数据库表建立数据库表S1SNO,SNAME,SD,SA,其字段类型定义与Student表中的相应字段SNO,SNAME,SDEPT,SAGE的数据类型定义相同CREATE TABLESlSNO CHAR5PRIMARYKEYNOT NULL,SNAME CHAR10,SD CHAR2,SA NUMBER2;create tableSI asselect SNO,SNAME,SDEPT asSD,SAGE asSA fromStudentwhere1=2;例1-8:修改数据库表删除成绩表Score的参照完整性约束关系ALTER TABLEScore DROPCONSTARINT SNO_FK;ALTER TABLEScore DROPCONSTARINT CNO1_FK;例『9:修改数据库表添加成绩表Score的参照完整性约束关系ALTER TABLESCORE ADDCONSTRAINT CNO1_FK FOREIGNKEYCNO REFERENCESCourseCNO;ALTER TABLESCORE ADDCONSTRAINT SNO_FK FOREIGNKEY SNOREFERENCES StudentSNO;例1-10:修改数据库表名将数据库表S1改名为Student_TempoRENAME SITO Student_Temp;[实验要求]
①熟悉Oracle上机环境,掌握Oracle客户端的配置;
②建立数据库表,修改数据库表结构,建立、删除索引;
①按照附录中的操作步骤进行客户端的配置;
②将实验需求用SQL语句表示;
③执行SQL语句;
④查看执行结果,如果结果不正确,进行修改,直到正确为止[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会;实验心得从这个实验中我学会了表的建立,内部一些格式的修改,在开始的时候我认为十分麻烦,但是随着我接触的多了,我感到有些代码都是相似的,找到相关的关联,就能够事半功倍还有就是我发现许多表之间存在着联系,所以我要抓住相互的联系,才能更好的发挥数据语言的作用实验二数据操纵语言[实验日期]年月日[实验目的]在实验一的基础上,熟练掌握和使用DML语言,对数据进行增加、修改和删除操作[实验内容]
2.SQL数据操纵语句例27:插入数据按前面各表中的数据分别插入到教学数据库的四个数据库表中例2-2:多行插入将表Student中在计算机系CS的学生数据插入到表Student_Temp中INSERT INTOStudent_TempSNO,SNAME,SD,SASELECT SNO,SNAME,SDEPT,SAGE FROM STUDENTWHERE SDEPT=CS,;以上操作中,注意用COMMIT提交数据,将数据保存到数据库服务器例2-3利用查询来实现表的定义与数据插入求每一个学生的平均成绩,把结果存入数据库表Student Gr中CREATE TABLEStudent_GrSNO CHAR10,SAVG NUMBER5,2;INSERT INTOStudent_GrSNO,SAVGSELECT SNO,AVGScoreFROM ScoreGROUP BY SNO;(create tableStudent_Gr as(selectSNO,AVG(SCORE)from ScoregroupbySNO);)例2-4:(修改数据)将Student.Temp表中所有学生的年龄加2UPDATE Student_Temp SETSA=SA+2;例2-5:(修改数据)将Course表中程序设计课时数修改成与‘数据结构的课时数相同UPDATE CourseSET CTIME=(SELECT CTIME FROM CourseWHERE CNO=004)WHERE CNO=008’;例2-6:(插入数据)向Score表中插入数据(i98001,00『,95),根据返回信息解释其原因INSERT INTOSCORE VALUES(98001001,95);插入的数据如果某个字段是外键那么该值要么为空要么在主键表中有对应的主键值,否则就不满足参照完整性约,Score表中的SNO字段是根据Student中的SNO建立的,然而Student中的SNO中没有98001o例2-7:(插入数据)向Score表中插入数据「97001—‘
010、80),根据返回信息解释其原因INSERT INTOSCORE VALUES(,97001/010,,85);因为Score表中的CNO字段是根据Course中的CNO建立的,Course表中并没有课程号是010的例2-8:(删除数据)删除Student表中学号为96001的学生信息,根据返回信息解释其原因DELETE FROM Student WHERE SNO9600f;因为Student表中学号已经被别的表作为外键,不可以被删除,违反完整约束条件例2-9(删除数据)删除Course表中课程号为‘003’的课程信息,根据返回信息解释其原因DELETE FROMCOURSE WHERE CNO=003;因为Course表中课程号已经被别的表作为外键,不可以被删除,违反完整约束条件例2-10:(删除数据)删除学生表Student.Temp中学号以96打头的学生信息DELETE FROM Student.Temp WHERE SNO LIKE96%;(此操作后,注意用ROLLBACK回退可能更新的数据)例2-11:(删除数据)删除数据库表Student.Temp中所有学生的数据DELETE FROM Student_Temp WHERE2!=0;(此处的条件语句为真即可,例如2=2)例2-12:(删除表)删除数据库表Student_Temp和Student_GroDROP TABLEStudent_Temp;DROP TABLEStudent_Gr;[实验要求]对数据库表进行插入、修改和删除数据的操作[实验方法]1按照附录中的操作步骤进行客户端的配置;2将实验需求用SQL语句表示;
③执行SQL语句;
④查看执行结果,如果结果不正确,进行修改,直到正确为止
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会实验心得感觉实验2是对实验1的补充,实验2需要掌握的是对内部数据的修改和删除一些不必要的表通过实验,我发现有些东西不是想删除就可以删除的,他们存在着完整约束条件,所以不能够实现那个操作在发生了这个问题时,需要的是认真思索,找到问题的根源,这样既能够解决问题,也能都理解问题的本质原因,能够更好地帮助我的学习,非常不错!实验三数据查询语言[实验日期]年月日[实验目的]体会SQL语言数据查询功能的丰富和复杂[实验内容]
3.SQL数据查询语句例3-1:(选择表中的若干列)求全体学生的学号、姓名、性别和年龄SELECT SNO,SNAME,SSEX,SAGE FROM Student;例3-2:(不选择重复行)求选修了课程的学生学号SELECT DISTINCTSNO FROM Score WHERE CNO ISNOT NULL;例3-3:(选择表中的所有列)求全体学生的详细信息SELECT*FROM Student;例3-4:(使用表达式)求全体学生的学号、姓名和出生年份SELECT SNO,SNAME,2016-SAGE AS〃出生年份〃FROM Student;例3-5:(使用列的别名)求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”SELECT SNOAS〃学号2016-SAGE AS〃出生年份〃FROM Student;例3-6:(比较大小条件)求年龄大于19岁的学生的姓名和年龄SELECT SNAME,SAGE FROM Student WHERESAGE19;例3-7:(比较大小条件)求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄SELECT SNAME,SDEPT,SAGE FROM Student WHERE SDEPT=CS AND SAGE18;例3-8:(确定范围条件)求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄SELECT SNO,SAGE FROM Student WHERESAGE BETWEEN20AND22;例3-9:(确定范围条件)求年龄不在19岁与22岁之间的学生的学号和年龄SELECT SNO,SAGE FROM Student WHERESAGE NOTBETWEEN19AND22;例3T0:(确定集合条件)求在下列各系的学生信息数学系、计算机系SELECT*FROM Student WHERE SDEPTIN(MA,CS);例3T1:(确定集合条件)求不是数学系、计算机系的学生信息SELECT*FROM Student WHERE SDEPTNOT INMA,CS;例3T2:匹配查询求姓名是以“李”打头的学生例3-13:(匹配查询)求姓名中含有“志”的学生SELECT*FROM Student WHERE SNAMELIKE李对;SELECT*FROM Student WHERE SNAMELIKE%志%;例3T4:(匹配查询)求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生SELECT*FROM Student WHERE SNAMELIKE%马_’;(未解决)例3-15:(匹配查询)求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩SELECT SNO,CNO,SCORE FROM Score WHERE CNO IN001;003AND SCOREBETWEEN80AND90AND SNOLIKE96%’;例3-16:(匹配查询)求课程名中包含字符的课程号、课程名和学时数SELECT CNO,CNAME,CTIME FROM CourseWHERECNAME LIKE%\_%ESCAPE;(point)例3-17:(涉及空值查询)求缺少学习成绩的学生的学号和课程号SELECT SNO,CNO FROM Score WHERESCORE ISNULL;例3T8:(控制行的显示顺序)求选修003课程或004课程的学生的学号、课程号和分数,要求按课程号升序、分数降序的顺序显示结果SELECT*FROM Score WHERECNO IN(003,004)ORDER BYCNO,SCORE DESC;例3-19:(组函数)求学生总人数SELECT COUNT(*)FROM Student;例3-20:(组函数)求选修了课程的学生人数SELECT COUNT(DISTINCTSNO)FROMScore;例3-21:(组函数)求计算机系学生的平均年龄SELECT AVG(SAGE)FROM Student WHERE SDEPT=CS,;例3-22:(组函数)求选修了课程001的最高、最低与平均成绩SELECT MAX(SCORE),MIN(SCORE),AVG(SCORE)FROMScore WHERECNO001’;例3-23:(分组查询)求各门课程的平均成绩与总成绩SELECT AVG(SCORE),SUM(SCORE)FROMScoreGROUP BYCNO;例3-24:(分组查询)求各系、各班级的人数和平均年龄SELECT COUNT(SNO),AVG(SAGE)FROM StudentGROUP BY SDEPT,SCLASS;例3-25:(分组查询)输入以下查询语句并执行,观察出现的其结果并分析其原因.SELECT SNAME,SDEPT,COUNT(*)FROM STUDENTWHERE SDEPT=CS GROUP BYSDEPT;SELECT列表项中不存在的列可以出现在GROUP BY的列表项中,但是SELECT列表中出现的GROUPBY里必须有此处SNAME未出现在GROUP BY中;例3-26:(分组查询)分析以下语句为什么会出现错误并给出正确的查询语句SELECT SAGE FROMSTUDENTGROUP BYSNO;SELECT列表项中不存在的列可以出现在GROUP BY的列表项中,但是SELECT列表中出现的GROUP BY里必须有此处SAGE未出现在GROUP BY中;例3-27:(分组查询)求学生人数不足3人的系及其相应的学生数SELECT SDEPT,COUNT SNO FROM StudentGROUPBYSDEPT HAVINGCOUNT SNO3;例3-28:分组查询求各系中除01班之外的各班的学生人数SELECT SDEPT,SCLASS,COUNT SNO FROM StudentGROUPBYSDEPT,SCLASS HAVINGSCLASS!=or;POINT例3-29:(涉及空值的查询)分别观察各组函数、行的显示顺序以及分组查询与空值的关系select COUNTSCOREfrom Score;select SUMSCOREfrom Score;select AVGSCOREfrom Score;select MAXSCOREfrom Score;select MINSCOREfrom Score;select SCOREfrom ScoregroupbySCORE asc;select SCOREfromScoregroupbySCORE desc;例3-30:(连接查询)求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩SELECT SANME,,CNAME,SCORE FROMStudent,Course,Score,WHERE Score.CNO=00f ANDSC0RE90ORSC0RE70AND Course.CN0=Score.CNO ANDStudent.SN0=Score.SNO;例3-31:连接查询与表的别名求选修了课程的学生的学生姓名、课程号和成绩SELECT SNAME,CNO,SCORE FROMStudent,Score WHEREStudent.SN0=Score.SNO;例3-32:自身连接查询求年龄大于‘李丽的所有学生的姓名、系和年龄SELECT X.SNAME,X.SDEPT,X.SAGE FROMStudent X,Student YWHERE X.SAGEY.SAGE ANDY.SNAME-李丽例3-33:外部连接查询求选修了课程002或003的学生的学号、课程号、课程名和成绩,要求必须将002和003课程的相关信息显示出来SELECT Score.SNO,Score.CNO,Course.CNAME,SCORE,CTIMEFROMCourse,ScoreWHERECourse.CNOIN002,003AND Score.CN0=Course.CNO+;例3-34:(子查询)求与‘黎明’年龄相同的学生的姓名和系SELECT SNAME,SDEPT FROMStudent WHERESAGE INSELECT SAGE FROMStudent WHERE SNAME=,黎明,;例3-35:子查询求选修了课程名为数据结构的学生的学号和姓名SELECT SNO,SNAME FROMStudentWHERESNO INSELECT SNOFROMScoreWHERECNO=SELECT CNOFROM CourseWHERECNAME=数据结构例3-36:子查询ANY求比数学系中某一学生年龄大的学生的姓名和系SELECT SANMESDEPT FROMStudentWHERESAGEANYSELECT SAGEFROMStudentWHERE SDEPT=MA ANDSDEPTOMA;例3-37:子查询ALL求比数学系中全体学生年龄大的学生的姓名和系SELECT SNAME,SDEPT FROMStudentWHERESAGEALLSELECT SAGEFROMStudentWHERESDEPT=MA ANDSDEPTOW9;例3-38:子查询EXISTS求选修了课程004的学生的姓名和系SELECT SNAME,SDEPT FROMStudentWHEREEXISTS SELECT*FROMScoreWHERECNO=004AND SNO二Student,SNO;例3-39:返回多列的子查询求与‘黎明同系且同龄的学生的姓名和系SELECT SNAME,SDEPT FROMStudentWHERESDEPT=SELECT SDEPTFROMStudentWHERE SNAME=黎明,ANDSAGE=SELECTSAGEFROMStudentWHERE SNAME=黎明,;单行子查询返回多个行,因为Student表中有两名学生叫黎明例3-40多个子查询求与‘‘黎明’同系,且年龄大于‘李丽的学生的信息SELECT*FROMStudentWHERESDEPT=SELECT SDEPTFROMStudentWHERESNAME=黎明’ANDSAGESELECTSAGE FORMStudentWHERESANME=李丽;point例3-41:子查询中使用表连接求数学系中年龄相同的学生的姓名和年龄SELECT X.SNAME,X.SAGEFROMStudent X,Student YWHERE X,SAGE二Y.SAGE ANDX.SDEPT=MA ANDY.SDEPT=MA ANDX.SNOOY.SNO;例3-42:连接或嵌套查询检索至少选修王成刚老师所授课程中一门课程的女学生姓名SELECT SNAMEFROMStudentWHERESNOIN SELECTSNOFROMScoreWHERECNOIN SELECT CNOFROM TeachWHERETNAME=王成刚例3-43:嵌套与分组查询检索选修某课程的学生人数多于3人的教师姓名SELECT TNAMEFROM TeachWHRERE CNOINSELECTCNOFROMScoreGROUPBYCNOHAVING3C0UNTSNO;例3-44:集合查询列出所有教师和同学的姓名和性别SELECT SANME,SSEX FROMStudent UNIONSELECT TNAMETSEX FROMTeach;例3-45:相关子查询求未选修课程004的学生的姓名SELECT SNAMEFROMStudentWHERESNONOT INSELECTSNOFROMScoreWHRER CN0=004;例3-46:相关子查询求选修了全部课程的学生的姓名SELECT SNAMEFROMStudentWHERE NOTEXISTS SELECT*FROMCourseWHERENOTEXISTSSELECT*FROMScore WHERESNO=Student.SNO ANDCN0=Course.CNO;例3-47:(相关子查询)求至少选修了学生’96002,所选修的全部课程的学生的学号。
个人认证
优秀文档
获得点赞 0