SQL中的SELECT表连接,记录联合和别名
一、表连接:
1、内连接:选取两张表中相互匹配的记录
select 表.字段,.... from 表1名,表2名,... where 表1.字段=表2.字段;
2、外连接:SQL JOIN 基于两个或多个表之间的共同字段把这些表的行结合起来返回
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
JOIN 类型:
INNER JOIN:两边表中都匹配则返回行,使用JOIN即默认使用INNER JOIN类型,INNER省略则代表使用INNER JOIN类型。
LEFT JOIN:从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
RIGHT JOIN:从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
FULL JOIN:结合了 LEFT JOIN 和 RIGHT JOIN 的结果
二、记录联合:
SQL UNION 操作符合并两个或多个 SELECT 语句的结果。需要注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table1 UNION [ALL] SELECT column_name(s) FROM table2;
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
三、SQL 别名:通过使用 SQL别名,可以为表名称或列名称指定别名。创建别名是为了让列名称的可读性更强。
列的 SQL 别名语法
SELECT column_name AS alias_name FROM table_name;
表的 SQL 别名语法
SELECT column_name(s) FROM table_name AS alias_name;
别名只会在搜索出的结果显示中起到效果,如SELECT name AS n FROM table_name;在显示列明的时候不会显示name而会显示n。
还可以使用一些SQL函数,如:SELECT name, CONCAT(url, ‘, ‘, alexa, ‘, ‘, country) AS site_info table_name;第二列列名称会改为site_info,内容为把url,alexa,country用逗号连接起来的字符串。
表的别名实例:SELECT w.name, a.date FROM table_name01 AS w, table_name02 AS a WHERE a.site_id=w.id;