2020-09-21

高级查询:

多表联查:

多表联查可以通过连接运算实现,即将多张表通过主外键关系关联在一起进行查询。

笛卡尔积:相乘

内联:

多张表公共的部分

方式1: select * from 表1,表2 where 表1.主键=表2.外键

方式2:

select * from 表1 inner join 表2 on 表1.XXX=表2.XXX

外联:

左外联:

select * from 表1 left join 表2 on 表1.XXX=表2.XXX

右外联:

select * from 表1 right join 表2 on 表1.XXX=表2.XXX

UNION :

查询两张表的并集 连接查询 或 并集查询

查询时,的字段个数必须相等

语法:

select A.field1 as f1, A.field2 as f2 from A union (select B.field3 as f1, field4 as f2 from B) order by 字段 desc/asc

注意: 1列名不一致时,会以第一张表的表头为准,并对其栏目。 2会将重复的行过滤掉。 3如果查询的表的列数量不相等时,会报错。 4在每个子句中的排序是没有意义的,mysql在进行合并的时候会忽略掉。 5如果子句中的排序和limit进行结合是有意义的。 6可以对合并后的整表进行排序。

注意:如果不去重复 用 UNION ALL

子查询:

1.where子查询又叫内部查询

eg:查询每个班下id 最大的学生(where子查询)

SELECT stu WHERE stuid IN ( SELECT MAX(stuid) FROM student GROUP BY classno ) id,stuname, classno FROM student

2 from型子查询:

把内层的查询结果当成临时表,供外层sql再次查询。查询结果集可以当成表看待。 临时表要使用一个别名。

3 exists型子查询: 把外层sql的结果,拿到内层sql去测试,如果内层的sql成立,则该行取出。内层查询是exists后的查询。

4 any, some, all子查询:

(1) any 子查询 表示满足其中任意一个条件 假设any内部的查询语句返回的结果个数是三个, 如:result1,result2,result3,那么, select ...from ... where a > any(...); ->相当于: select ...from ... where a > result1 or a > result2 or a > result3; some 是 any的别名,所以用法是一样的,可以替代使用 子查询

(2)all 子查询 表示满足其中所有条件条件,ALL关键字与any关键字类似,只不过上面的or改成and。 假设any内部的查询语句返回的结果个数是三个, select ...from ... where a > all(...); -> select ...from ... where a > result1 and a > result2 and a > result3

 

case when then end语句

Case具有两种格式。

简单Case函数和Case搜索函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值