【SQL】作为前端,应该了解的SQL知识(第四弹)

本文介绍了数据库查询中的集合运算,包括UNION用于取并集,UNIONALL保留重复行,INTERSECT用于取交集,以及EXCEPT(在Oracle中为MINUS)获取差集。此外,还详细阐述了联结操作,如INNERJOIN、LEFTJOIN、RIGHTJOIN以及不常用的CROSSJOIN,解释了各种联结方式在数据匹配和合并时的行为特点。

📑集合运算

集合运算就是对满足同一规则的记录进行的加减等四则运算。

👉 对行数进行增减。

📃UNION

取并集

集合运算符会去除重复的记录

SELECT product_id, product_name
 FROM Product
**UNION**
SELECT product_id, product_name
 FROM Product2;

注意:

  1. 作为运算对象的记录的列数必须相同
  2. 作为运算对象的记录中的列类型必须一致
  3. 可以使用任何SELECT语句,但是ORDER BY子句只能在最后使用一次

🌼UNION ALL

保留重复行

📃INTERSECT

取交集

SELECT product_id, product_name
 FROM Product
**INTERSECT**
SELECT product_id, product_name
 FROM Product2
ORDER BY product_id;

📃EXCEPT(MINUS)

注:ORACLE中是 MINUS

取差集

注意被减数和减数的位置。

-- 从Product中减去Product2的内容
SELECT product_id, product_name
 FROM Product
**EXCEPT**
SELECT product_id, product_name
 FROM Product2
ORDER BY product_id;

📑联结

以列为单位对表进行联结,就是进行添加列的操作

 👉 对列数进行操作

📃INNER JOIN

    SELECT < 表1的别名 >.< 列名1 >,< 表2的别名 >.< 列名2 >
      FROM <表1>
INNER JOIN <表2>
        ON <条件1> = <条件2>  -- ON后面的是联结键

📃LEFT JOIN

即使右表中没有匹配,也从左表返回所有的行 如果右表中没有匹配的行,则用null填补。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.id_P = Orders.id_P
ORDER BY Persons.LastName

📃RIGHT JOIN

即使左表中没有匹配,也从右表返回所有的行

SELECT Persons.LastName,Persons.FirstName,Orders.OrderNo
FROM Persons
RIGHT JOIN Orders 
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

📃CROSS JOIN(不经常使用)

交叉联结

也就是笛卡尔积

进行交叉联结时无法使用内联结和外联结中所使用的 ON 子句, 这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中 的记录数通常是两张表中行数的乘积

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Tricia.

感谢大人投喂~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值