sql left join 多表连接SQL语句的并集UNION交集JOIN(内连接,外连接)等介
1. a. 并集UNION SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2 b. 交集JOIN SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name c. 差集NOT IN SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2) d. 笛卡尔积 SELECT * FROM table1 CROSS JOIN table2 与 SELECT * FROM table1,table2相同
2. SQL中的UNION 与UNION ALL的区别是,前者会去除重复的条⽬,后者会仍旧保留。 a. UNION SQL Statement1 UNION SQL Statement2 b. UNION ALL SQL Statement1 UNION ALL SQL Statement2
3. SQL中的各种JOIN SQL中的连接可以分为内连接,外连接,以及交叉连接(即是笛卡尔积) a. 交叉连接CROSS JOIN 如果不带WHERE条件⼦句,它将会返回被连接的两个表的笛卡尔积,返回结果的⾏数等于两个表⾏数的乘积;举例 SELECT * FROM table1 CROSS JOIN table2 等同于 SELECT * FROM table1,table2 ⼀般不建议使⽤该⽅法,因为如果有WHERE⼦句的话,往往会先⽣成两个表⾏数乘积的⾏的数据表然后才根据WHERE条件从中选择。因此,如果两个需要求交际的表太⼤,将会⾮常⾮常慢,不建议使⽤。 b. 内连接INNER JOIN 如果仅仅使⽤ SELECT * FROM table1 INNER JOIN table2 没
有指定连接条件的话,和交叉连接的结果⼀样。但是通常情况下,使⽤INNER JOIN需要指定连接条件。 -- 等值连接(=号应⽤于连接条件, 不会去除重复的列) SELECT * FROM table1 AS a INNER JOIN table2 AS b lumn -- 不等连接(>,>=,,!) 例如SELECT * FROM table1 AS a INNER JOIN table2 AS b lumn<&lumn -- ⾃然连接(会去除重复的列) c. 外连接OUTER JOIN ⾸先内连接和外连接的不同之处:内连接如果没有指定连接条件的话,和笛卡尔积的交叉连接结果⼀样,但是不同于笛卡尔积的地⽅是,没有笛卡尔积那么复杂要先⽣成⾏数乘积的数据表,内连接的效率要⾼于笛卡尔积的交叉连接。指定条件的内连接,仅仅返回符合连接条件的条⽬。外连接则不同,返回的结果不仅包含符合连接条件的⾏,⽽且包括左表(左外连接时), 右表(右连接时)或者两边连接(全外连接时)的所有数据⾏。 1)左外连接LEFT [OUTER] JOIN 显⽰符合条件的数据⾏,同时显⽰左边数据表不符合条件的数据⾏,右边没有对应的条⽬显⽰NULL 例如 SELECT * FROM table1 AS a LEFT [OUTER] JOIN lumn 2)右外连接RIGHT [OUTER] JOIN 显⽰符合条件的数据⾏,同时显⽰右边数据表不符合条件的数据⾏,左边没有对应的条⽬显⽰NULL 例如 SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。