子查询与高级查询

sql 子查询

1,一个select from where 称作为一个查询块,一个select嵌套在select,insert,update,delect语句中,称为子查询或者内存查询包含子查询则称为主查询或者外层查询。
子查询一边出现在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 WHERE Cno='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');
查询的集合运算
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')

高级查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值