MySQL-表连接

MySQL别名

SELECT CONCAT_WS(', ', lastName, firstname) AS `Full name`      #CONCAT_WS函数用于字符串的拼接
FROM employees;

MySQL-INNER JOIN运算

功能介绍:将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录。

INNER JOIN语句之前,必须指定以下条件:

第一,在From语句中指定主表。

第二,表中要连接的主表应该出现在INNER JOIN语句中。理论上说,可以连接多个其他表。 但是,为了获得更好的性能,应该限制要连接的表的数量(最好不要超过三个表)。

第三,连接条件或连接谓词。连接条件出现在INNER JOIN语句的ON关键字之后。连接条件是将主表中的行与其他表中的行进行匹配的规则。

假设使用INNER JOIN子句连接两个表:t1和t2

SELECT column_list FROM t1 INNER JOIN t2 ON join_condition;

  对于t1表中的每一行,INNER JOIN语句将它与t2表的每一行进行比较,以检查它们是否都满足连接条件。当满足连接条件时,INNER JOIN将返回由t1t2表中的列组成的新行。

  请注意,t1t2表中的行必须根据连接条件进行匹配。如果找不到匹配项,查询将返回一个空结果集。当连接超过2个表时,也应用此逻辑。

 

MySQL-LEFT JOIN运算

功能介绍:从两个或多个数据库表查询数据。

假设要从两个表t1和t2查询数据。
SELECT 
    t1.c1, t1.c2, t2.c1, t2.c2
FROM
    t1
        LEFT JOIN
    t2 ON t1.c1 = t2.c1;

  当使用LEFT JOIN语句将t1表加入t2表时,如果来自左表t1的行与基于连接条件(t1.c1 = t2.c1)的右表t2匹配,则该行将被包含在结果集中。

  如果左表中的行与右表中的行不匹配,则还将选择左表中的行并与右表中的“”行组合。“”行对于SELECT子句中的所有相应列都包含NULL值。

MySQL-CROSS JOIN运算

功能介绍:CROSS JOIN语句从连接的表返回行的笛卡儿乘积。

连接两个表:T1和T2的CROSS JOIN子句的语法:
SELECT 
    *
FROM
    T1
        CROSS JOIN
    T2;

  将两张表的情况全部列举出来

  结果表: 列= 原表列数相加,行= 原表行数相乘

 MySQL-INTERSECT操作符(交集)

功能介绍:INTERSECT运算符是一个集合运算符,它只返回两个查询或更多查询的交集。

INTERSECT语法:

(SELECT column_list 
FROM table_1)
INTERSECT
(SELECT column_list
FROM table_2);

INTERSECT运算符用于两个查询,应用以下规则:

第一:列的顺序和数量必须相同。

第二:相应列的数据类型必须兼容或可转换

 

posted @ 2017-12-31 01:14  Nice1949  阅读(185)  评论(0编辑  收藏  举报