目录
基础语句
DISTINCT
SELECT DISTINCT 列名称 FROM 表名称
表示在查询结果中对该列进行去重,不过,只能指定一个列进行去重。
WHERE
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
选出满足WHERE子句条件的数据。
内置有这些运算符(从w3中复制):
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
有些版本的SQL中,操作符<>可以写成!=
对于文本,需要用引号
BETWEEN
BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是文本、数值、日期
NOT BETWEEN ... AND ...选取范围之外的数据
例 WHERE name BETWEEN 1 AND 100;
LIKE
用于在WHERE子句中搜索列中的指定模式。
例如:选取以‘N’开头的城市:
SELECT *FROM Persons WHERE City LIKE 'N%'
这里的%和正则中的*差不多,为通配符,匹配多个任意字符。
通过NOT关键字可以选择不包含在‘lon’的城市里的人。
SELECT * FROM Persons WHERE City NOT LIKE '%lon%';
AND OR
AND和OR可以在WHERE子句中把两个或者多个条件结合起来。
例:SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
ORDER BY
用于根据指定列对结果进行排序
默认按照升序对记录进行排序
用DESC关键字可以指定降序排序
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumbe
在这个语句中,ORDER BY中有两个属性列,他是先根据Company列先排序,然后在Company列中属性值相等中的数据根据OrderNumber属性进行排序。
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
这里是前面的根据降序排,后面那个根据升序排。如(取自W3):
Company | OrderNumber |
---|---|
W3School | 2356 |
W3School | 6953 |
IBM | 3532 |
Apple | 4698 |
TOP
SELECT TOP 2 * FROM Persons:取前两条数据
SELECT TOP 50 PERCENT * FROM Persons:取前50%的数据
-
通配符
通配符 | 描述 |
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列表中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列表中的任何单一字符 |
这里要记住的不多,最后两个类似正则里的。除了第一个其他三个都是匹配一个字符串
这里的都要结合LIKE关键词在WHERE子句中使用。
IN
IN操作符允许我们在WHERE子句中规定多个值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
Alias(别名)
表的Alias语法
SELECT column_name(s)
FROM table_name AS alias_name
列的Alias语法
SELECT column_name AS alias_name
FROM table_name
例子:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p , Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
SELECT LastName AS Family, FirstName AS Name
FROM Persons
列的别名会在展示中的属性名中显示。
JOIN
join用于根据两个或者多个表中的列之间的关系进行查询数据。
这个就是上课学的连接。
FROM Persons INNER JOIN Orders ON Persons.Id_p = Orders.Id_p:将两个表进行自然连接(内连接),在SELECT中选择列需要加上表名.列名
其他连接:
- JOIN: 如果表中有至少一个匹配,则返回行:等同于INNER JOIN关键字
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行:左连接,右边允许空值
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行:右连接,左边允许空值
- FULL JOIN: 只要其中一个表中存在匹配,就返回行:全连接。
UNION
用于合并两个或多个SELECT语句的结果集。
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
默认是去重的,在UNION后加一个ALL就不去重了。纵向合并,列名为第一个select语句中的列名。