2023年6月27日发(作者:)
SQL语句基础-⼦查询⼦查询在SQL语句中,⼀个select-from-where语句称为⼀个查询块。如果⼀个select语句嵌套在⼀个select,insert,update或delete语句中,则称之为⼦查询或者内存查询。包含⼦查询的语句则称为主查询或者外层查询⼦查询语句⼀般出现在where和having⼦句中写在where中的⼦句中的⼦查询⼀般有下⾯的形式WHERE <列名> [NOT] IN (⼦查询) // (集合WHERE <列名> ⽐较运算符 (⼦查询) //(单值WHERE EXISTS (⼦查询) //(是否空值例如:使⽤⼦查询进⾏基于集合的查询//查询与钟⽂辉同学在同⼀个系的同学//第⼀步先查询钟⽂辉同学所在的系//然后把系作为已知条件查找同学信息SELECT * FROM StudentWHERE Sdept IN(SELECT Sdept FROM Student Where Sname ='钟⽂辉') ;使⽤⼦查询进⾏⽐较查询//查询选修了C04课程且课程成绩⾼于此课程平均成绩的的学⽣学号和该门课成绩//先查出C04课程的平均成绩//然后把平均成绩作为已知条件查找同学学号和成绩SELECT Sno, Grade FROM SCWHERECno='C04' AND Grade>(SELECT AVG(Grade) FROM SC Where Cno ='C04') ;带有ANY和ALL的⼦查询//查询⽐C03课程成绩都⾼的选了C04课程的学⽣的学号和成绩SELECT Sno, Grade FROM SCWHERECno='C04' AND Grade>ALL(SELECT Grade FROM SC Where Cno ='C03') ;使⽤带EXSITS谓词的⼦查询//查询选修了C04课程且课程的学⽣姓名SELECT Sname FROM SCWHERE EXISTS(SELECT * FROM SCWhere = AND Cno ='C04');注意,带exists谓词的⼦查询是先执⾏外层,再执⾏内层查询,根据内存查询返回的true和false来判断外层数据是否满⾜条件。查询的集合运算SQL提供与关系代数中集合并,交,差对应的谓词,他们分别是UNION,INTERSECT,EXCEPT,当使⽤这些操作进⾏查询时,参与运算的两个查询分别⽤括号括起来。例如://查询计算机系和机电系的所有学⽣信息( SELECT *FROM Student
WHERE Sdept='计算机系')UNION( SELECT *FROM Student
WHERE Sdept='机电系')//查询同时选修了C03和C04课程的学⽣的学号(SELECT Sno FROM SC WHERE Cno='C03')INTERSECT(SELECT Sno FROM SC WHERE Cno='C04')//查询选修了C01但是没有选修C02课程的学⽣的学号(SELECT Sno FROM SC WHERE Cno='C01')EXCEPT(SELECT Sno FROM SC WHERE Cno='C02')
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687817654a47748.html
评论列表(0条)