SQL重要关键字

192 阅读2分钟

SQL

SQL JOIN

四种SQL JOIN 基本概念

  • INNER JOIN:如果表中有至少一个匹配,则返回行

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

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

  • FULL JOIN:只要其中一个表中存在匹配,则返回行

INNER JOIN

实际上是等值连接

等值连接:等值连接是指使用相等比较运算符(如=、<>, ! =, <, >, <=, >=等)来连接两个或多个表中列值相等的所有行。

只返回两个表根据指定列相匹配的行

LEFT JOIN

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

可以理解为 保留左表所有行 ,若右表有匹配左表的行就加上,如果没有匹配,则把对应的右表的列值设为null

没有匹配则置为null

SQL LEFT JOIN 语法

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

或:

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

RIGHT JOIN 同理

FULL OUTER JOIN(mysql不支持)FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.

SQL UNION

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | weibo.com/         | 20    | CN      |
| 5  | Facebook     | www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

mysql> SELECT * FROM apps;

+----+------------+-------------------------+---------+

| id | app_name | url | country |

+----+------------+-------------------------+---------+

| 1 | QQ APP | im.qq.com/ | CN |

| 2 | 微博 APP | weibo.com/ | CN |

| 3 | 淘宝 APP | www.taobao.com/ | CN |

+----+------------+-------------------------+---------+

union

  • Union:去除重复行,返回去重的结果集。

union all

  • Union All:不去除重复行,返回包含所有行的结果集,包括重复的行。

在实际应用中,应根据需求选择合适的操作符。如果不需要保留重复的行,可以使用 UNION ALL 以获得更好的性能。如果需要保留重复的行,或者不确定是否存在重复数据,则应使用 UNION