1.MySQL别名
MySQL允许我们对列名,计算字段以及表起别名,以缩短sql语句,使可读性更强。通常以AS连接原名与别名,但也可不需要,即原名与别名之间只需要空格即可。如
SELECT column_name AS alias_name
FROM table_name AS alias_name;
或
SELECT column_name alias_name
FROM table_name alias_name;
2.inner join (内联结)
inner join (或者join)顾名思义,即是将数个表以它们的某个相同字段进行连接,得到一个全新的表,联结条件为on子句。值得注意的是,两个表的相同字段只会在字段数据均存在的情况下才会返回,即左表不存在但右表存在的行,不会返回。如
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
3.left join(左联结)
left join在联结上的特点便是,只会返回左表的行,即使右表没有也会返回。如
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
4.cross join
如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;若带where子句,则类似inner join效果,且cross join 只能用where 而不能用on。如
SELECT *
FROM table1
CROSS JOIN table2;
5.自连接
自连接即是对一个表中的不同字段建立关系以便挖掘出字段之间的联系,当然我们可以通过给定不同的别名来创建相当于两个表来进行操作。如
SELECT FIRST.Num, SECOND.Num, FIRST.Stop
FROM Route FIRST, Route SECOND
WHERE FRIST.Stop=SECOND.Stop;
上面的SQL代码,求出了路经相同城市的车次的信息。原表中的车次和车站是“1Vs1”关系,通过自连接后,得到了车次和车站的“多Vs1”关系。
6.UNION
Union操作符用于合并两个及以上的select语句结果集。需要注意的是,union内部select语句必须拥有相同数量的列,列也拥有相似的数据类型,同时,每条 SELECT 语句中的列的顺序必须相同。如
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。