SELECT DISTINCT 语句
对于重复的记录,使用关键词 DISTINCT 可返回唯一不同的值。
SELECT DISTINCT 列名 FROM 表名
TOP 子句
TOP 返回前N条数目的记录。(适用大部分数据库系统,如:MSSQL、MySQL 、Oracle 等)
--MSSQL | |
SELECT TOP N 列名 | |
FROM 表名 | |
--MySQL | |
SELECT 列名 | |
FROM 表名 | |
LIMIT N | |
--Oracle | |
SELECT 列名 | |
FROM 表名 | |
WHERE ROWNUM <= N |
LIKE
用于匹配指定模式的记录。
SELECT 列名 | |
FROM 表名 | |
WHERE 列名 LIKE 匹配条件 |
IN
筛选出IN子句中限定值的记录
SELECT 列名 | |
FROM 表名 | |
WHERE 列名 IN (值1,值2,...) |
BETWEEN
BETWEEN ... AND 会选取介于两个值之间的记录范围。这些值可以是数值、文本或者日期。
SELECT 列名 | |
FROM 表名 | |
WHERE 列名 | |
BETWEEN 值1 AND 值2 |
UNION
合并两个或多个 SELECT 筛选结果集。
注意这些结果集列数目相同、列顺序相同,数据类型相似。
UNION:默认是过滤重复记录
UNION ALL:保留重复的记录
SELECT 列名 FROM 表名 | |
UNION|UNION ALL | |
SELECT 列名 FROM 表名 |
SQL连接【重点】
所谓连接就是从不同的数据表中,根据它们之间的关系【显现了关系数据库的特点】,关联得到我们需要的完整结果集。
SQL连接可以分为:内连接[INNER JOIN]、外连接[LEFT JOIN、RIGHT JOIN]、全连接[FULL JOIN]、交叉连接[CROSS JOIN]。
- INNER JOIN: 列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值
- LEFT JOIN(左联接): 以左表为基准比较,即使右表中没有匹配,也从左表返回所有的行,某些数据库称LEFT OUTER JOIN
- RIGHT JOIN(右联接): 以右表为基准比较,即使左表中没有匹配,也从右表返回所有的行,某些数据库称RIGHT OUTER JOIN
- FULL JOIN: 只要其中一个表中存在匹配,就返回行,另一个表不存在则用空值代替,需要ON条件,某些数据库称FULL OUTER JOIN
- CROSS JOIN:也称笛卡尔积,返回两个表的所有行记录组合
--INNER JOIN | LEFT JOIN | RIGHT JOIN | FULL JOIN | |
SELECT 列名 | |
FROM 表1 | |
INNER JOIN | LEFT JOIN | RIGHT JOIN | FULL JOIN 表2 | |
ON 表1.列名=表2.列名 | |
--CROSS JOIN | |
SELECT 列名 FROM 表1 CROSS JOIN 表2 |
提示:SQL连接使用较多,而且很实用,需要知道各种连接的差异。后面也会进一步的辅以实例说明。
SELECT INTO 语句
从一个表中选取数据,并把数据插入另一个表中。对于备份数据很有效又实用。
SELECT 列名 | |
INTO 新表名 | |
FROM 旧表名 --可以连接其它表 | |
WHERE 旧表列名=值1 --可选 |
理解了才能更好的应用