复杂的查询操作

查询格式:

select <目标列名序列>    ---需要哪些列
from <表名>        ---来自于哪些表
where <行选择条件>    ---根据什么条件
group by <分组依据列>
having <组选择条件>
order by <排序依据列>

连接查询:
关键字:内连接查询、外连接查询、交叉连接查询

1、内连接查询
关键字:from 表1 join 表2 on <连接条件>

SELECT s.sno,sname 姓名,AVG(grade) 平均分 FROM student s JOIN score sc ON s.sno = sc.sno GROUP BY 姓名
//内连接实现显示学生平均分和该同学的名字和学号

SELECT s2.`sdept`,COUNT(s1.`sno`) 男生人数,COUNT(s2.`sno`)女生人数 FROM student s1 JOIN student s2 ON s1.`sdept` = s2.`sdept` WHERE s1.`ssex` = '男' AND s2.`ssex` = '女' GROUP BY s2.`sdept`
//显示每个系的系别,男生人数,女生人数和总人数(再想想)

内连接(默认)
关键字:from 表1 [innner] join 表2 on <连接条件>
作用域:如果两个表的相关字段满足连接条件就从两个表中提取相关字段的数据组成新的记录。(满足条件的查询)

自连接:(两张同样的表,取了别名后进行相互的连接)


外连接:左连接,右连接
关键字:from 表1 [left|right] [outer] join 表2 on <连接条件>
作用域:不满足条件的也一并输出,
参考资料:https://www.cnblogs.com/yyjie/p/7788413.html

top 限定结果查询(仅限在SQL server中使用)
关键词:select top n X... from 表 ...

例:select top 3 s.sname,s.sdept,sc.grade from student s join score on s.sno = sc.sno order by sc.grade

子查询

可以运用在select,insert,update,delete.

关键字:
基于集合的子查询:
where 表达式 [not]in(子查询)
先执行子查询后执行主查询
SELECT * FROM student WHERE sno NOT IN (SELECT sno FROM student WHERE sdept = '计算机系')

转载于:https://www.cnblogs.com/Stakes-ds/p/8454442.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值