参考链接:SQL 教程
一、TOP选取头部数据
TOP 子句用于规定要返回的记录的数目。对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。但并非所有的数据库系统都支持 TOP 子句。
SELECT TOP 值 PERCENT 列名称 FROM 表名称 #SQLServer语法
SELECT 列名称 FROM 表名称 LIMIT 值 #MySQL语法
二、LIKE查找类似值
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT * FROM 表名称 WHERE 列名称 LIKE 值
SQL 通配符(模式中缺少的字母)必须与 LIKE 运算符一起使用,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 代表零个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或[!charlist] | 不在字符列中的任何单一字符 |
以 "N" 开始即'N%',以 "g" 结尾即'%g',包含 "lon" 即'%lon%',第一个字符之后是 "eorge" 即'_eorge',以 "A" 或 "L" 或 "N" 开头即'[ALN]%'。
可通过在LIKE前添加 NOT 关键字,表示排除某类值。
三、IN锁定多个值
IN 操作符允许我们在 WHERE 子句中规定多个值。
SELECT * FROM 表名称 WHERE 列名称 IN (值1,值2,值3)
四、BETWEEN选取区间数据
操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT * FROM 表名称 WHERE 列名称 BETWEEN 值1 AND 值2
不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。某些数据库会列出介于值1和值2之间的人,但不包括值1和值2;某些数据库会列出介于值1和值2之间并包括值1和值2的人;而另一些数据库会列出介于值1和值2之间的人,包括值1,但不包括值2。
五、AS别名
通过使用 SQL,可以为列名称和表名称指定别名(Alias),别名使查询程序更易阅读和书写。
SELECT * FROM 表名称 AS 别名 #表别名
SELECT 列名称 AS 别名 FROM 表名称 #列别名
假设我们有两个表分别是:"Persons" 和 "Product_Orders",我们分别为它们指定别名 "p" 和 "po"。现在,我们希望列出 "John Adams" 的所有订单:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
实际应用时,这个 AS
可以省略,但是列别名需要加上 " "。
六、JOIN多表关联
JOIN用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
SELECT 列名称
FROM 表A
INNER|LEFT|RIGHT|FULL JOIN 表B
ON 表A主键列 = 表B外键列
- INNER JOIN: 内部连接,返回两表中匹配的行(与 JOIN 是相同的)
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 从左表和右表那里返回所有的行
七、UNION合并结果集
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。列名总是等于 UNION 中第一个 SELECT 语句中的列名。
SELECT 列名称 FROM 表A
UNION
SELECT 列名称 FROM 表B
UNION 操作符默认为选取不同的值。如果查询结果需要显示重复的值,请使用 UNION ALL。
八、NOT NULL非空
NOT NULL 约束强制列不接受 NULL 值。
SELECT * FROM 表名称 WHERE 列名称 IS NOT NULL