SQL语句基础

您所在的位置:网站首页 sql语句子查询执行顺序 SQL语句基础

SQL语句基础

2024-06-28 12:01| 来源: 网络整理| 查看: 265

子查询

在SQL语句中,一个select-from-where语句称为一个查询块。如果一个select语句嵌套在一个select,insert,update或delete语句中,则称之为子查询或者内存查询。包含子查询的语句则称为主查询或者外层查询 子查询语句一般出现在where和having子句中 写在where中的子句中的子查询一般有下面的形式

WHERE [NOT] IN (子查询) // (集合WHERE 比较运算符 (子查询) //(单值WHERE EXISTS (子查询) //(是否空值 例如: 使用子查询进行基于集合的查询 //查询与钟文辉同学在同一个系的同学 //第一步先查询钟文辉同学所在的系 //然后把系作为已知条件查找同学信息 SELECT * FROM Student WHERE Sdept IN( SELECT Sdept FROM Student Where Sname ='钟文辉') ;

使用子查询进行比较查询

//查询选修了C04课程且课程成绩高于此课程平均成绩的的学生学号和该门课成绩 //先查出C04课程的平均成绩 //然后把平均成绩作为已知条件查找同学学号和成绩 SELECT Sno, Grade FROM SC WHERECno='C04' AND Grade>( SELECT AVG(Grade) FROM SC Where Cno ='C04') ;

带有ANY和ALL的子查询

//查询比C03课程成绩都高的选了C04课程的学生的学号和成绩 SELECT Sno, Grade FROM SC WHERECno='C04' AND Grade>ALL( SELECT Grade FROM SC Where Cno ='C03') ;

使用带EXSITS谓词的子查询

//查询选修了C04课程且课程的学生姓名 SELECT Sname FROM SC WHERE EXISTS( SELECT * FROM SC Where SC.Sno=Student.Sno 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')


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3