MYSQL总结1

一.exists和in

1.IN:先查询子查询的表,然后内外表作笛卡尔积,然后按照条件筛选出对于的行。
内表较小时,适合使用IN语句。(先子查询,后主查询与其作笛卡尔积)
2.EXISTS:先查询主查询的表,然后对于主查询的表中的每一条记录,执行子查询,判断是否符合子查询中的相关条件。(先主查询,后逐条记录根据子查询判断)
3.区别:两个语句执行的相关流程不同,所以在遇到不同数量级的表时,应该选择正确的语句。(1)使用IN:主查询的表的记录较多时,子查询的表的记录较少时,使用IN。(2)使用EXISTS:主查询的表记录较少,子查询的表的记录较多。

二.IF语句

IF(判断条件,返回值1,返回值2)
解析:IF根据判断条件的True或者False来判断返回哪一个返回值,当判断条件为TRUE时(即不为0或者null),则返回返回值1,若为FALSE,则返回返回值2。
返回值可以为字符串或者是number。

三.CASE的用法

目前只是学习了在SELECT语句中使用CASE语句,但是CASE语句还可以在GROUP BY及ORDER BY语句中使用。这里只记录在SELECT语句中的用法。
1.CASE搭配SELECT语句
SELECT Column
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2

ELSE 结果n
END
FROM table

四.公用表达式(CTE)

格式:WITH cte名称(列名[可选]) AS (
查询语句主体)
注意:CTE好像只能在MYSQL8.0以上的版本使用

参考博客:
1.IN OR EXISTS:https://blog.csdn.net/qq_36561697/article/details/80713824
2.IF:https://www.cnblogs.com/xuhaojun/p/9141396.html
3.CASE:https://www.cnblogs.com/dshore123/p/8126418.html
4.CTE:https://www.cnblogs.com/yanggb/p/11165276.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值