三条常用的sql语句
union(联合)
定义: 表和表之间的数据以纵向的方式连接在一起。之前的内连接,外连接都是以横向的方式连接在一起
注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT
语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
--返回table1的column_name(s)字段和table2的column_name(s)(去重)
注释:默认地,UNION
操作符选取不同的值。如果允许重复的值,请使用 UNION ALL
。
SQL UNION ALL 语法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
--返回table1的column_name(s)字段和table2的student字段(不去重)
注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
order by(排序)
定义:ORDER BY 关键字用于对结果集进行排序。
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
select * from student order by a;
--默认按照升序排序
select * from student order by b,a;
--先按照b排升序,b相同则按照a排升序
select * from student order by b desc,a;
--先按照b排降序,b相同则按照a排升序
select * from student order by b,a desc;
--先按照b排升序,然后按照a排降序
select * from student order by b desc,a desc;
--先按照b排降序,然后按照a排降序
SELECT a,b FROM table ORDER BY a;
--返回a和b列,并将结果按照a升序排序
SELECT a,b FROM table ORDER BY a,b;
--返回a和b列,并将结果按a升序排序,如a有重复,则重复部分按b升序排序
SELECT a,b FROM table ORDER BY a DESC, b ASC;
--返回a和b列,并将结果按a降序排序,如a有重复,则重复部分按b升序排序
即 desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。
join(连接)
定义:JOIN 用于把来自两个或多个表的行结合起来。
内连接(inner join
):返回表1和表2满足条件(ON后面的是条件)的全部行。即取满足条件的交集
如果表中有至少一个匹配,则返回行
SELECT * FROM table1 INNER JOIN table2 ON table1.a=table2.b;
或
SELECT * FROM table1 JOIN table2 ON table1.a=table2.b;
--INNER JOIN 与 JOIN 是相同的。
左连接(left join
):返回表1(左表)的全部行以及表2(右表)满足条件的全部行,即取左表+交集,缺失数据用NULL表示
即使右表中没有匹配,也从左表返回所有的行
SELECT * FROM table1 LEFT JOIN table2 ON table1.a=table2.b;
或
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.a=table2.b;
--在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
右连接(right join
):返回右表全部行和左表满足条件的全部行,即右表+交集,缺失数据用NULL表示
即使左表中没有匹配,也从右表返回所有的行
SELECT * FROM table1 RIGHT JOIN table2 ON table1.a=table2.b;
或
SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.a=table2.b;
--在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。
全连接(full join
):FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。返回左右表全部行,缺失数据用NULL表示.
只要其中一个表中存在匹配,则返回行
SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.a=table2.b;