ISTINCT 列名称 FROM 表名称
使用 DISTINCT 关键词
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders
"Orders"表:
| Company |
OrderNumber |
| IBM |
3532 |
| W3School |
2356 |
| Apple |
4698 |
| W3School |
6953 |
结果:
| Company |
| IBM |
| W3School |
| Apple |
| W3School |
请注意,在结果集中,W3School 被列出了两次。
如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:
SELECT DISTINCT Company FROM Orders
结果:
| Company |
| IBM |
| W3School |
| Apple |
WHERE 子句用于规定选择的标准。
WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:
| 操作符 |
描述 |
| = |
等于 |
| <> |
不等于 |
| > |
大于 |
| < |
小于 |
| >= |
大于等于 |
| <= |
小于等于 |
| BETWEEN |
在某个范围内 |
| LIKE |
搜索某种模式 |
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
使用 WHERE 子句
如果只希望选取居住在城市 "Beijing" 中的人,我们需要向 SELECT 语句添加 WHERE 子句:
SELECT * FROM Persons WHERE City='Beijing'
"Persons" 表
| LastName |
FirstName |
Address |
City |
Year |
| Adams |
John |
Oxford Street |
London |
1970 |
| Bush |
George |
Fifth Avenue |
New York |
1975 |
| Carter |
Thomas |
Changan Street |
Beijing |
1980 |
| Gates |
Bill |
Xuanwumen 10 |
Beijing |
1985 |
结果:
| LastName |
FirstName |
Address |
City |
Year |
| Carter |
Thomas |
Changan Street |
Beijing |
1980 |
| Gates |
Bill |
Xuanwumen 10 |
Beijing |
1985 |
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值:
这是正确的:
SELECT * FROM Persons WHERE FirstName='Bush'
这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush
数值:
这是正确的:
SELECT * FROM Persons WHERE Year>1965
这是错误的:
SELECT * FROM Persons WHERE Year>'1965'
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
原始的表 (用在例子中的):
| LastName |
FirstName |
Address |
City |
| Adams |
John |
Oxford Street |
London |
| Bush |
George |
Fifth Avenue |
New York |
| Carter |
Thomas |
Changan Street |
Beijing |
| Carter |
William |
Xuanwumen 10 |
Beijing |
AND 运算符实例
使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:
SELECT * FROM Persons WHEREFirstName='Thomas' AND LastName='Carter'
结果:
| LastName |
FirstName |
Address |
City |
| Carter |
Thomas |
Changan Street |
Beijing |
OR 运算符实例
使用 OR 来显示所有姓为 "Carter" 或者名为 "Thomas" 的人:
SELECT * FROM Persons WHEREfirstname='Thomas' OR lastname='Carter'
结果:
| LastName |
FirstName |
Address |
City |
| Carter |
Thomas |
Changan Street |
Beijing |
| Carter |
William |
Xuanwumen 10 |
Beijing |
结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
结果:
| LastName |
FirstName |
Address |
City |
| Carter |
Thomas |
Changan Street |
Beijing |
| Carter |
William |
Xuanwumen 10 |
Beijing |
ORDER BY 语句用于对结果集进行排序。
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
原始的表 (用在例子中的):
Orders 表:
| Company |
OrderNumber |
| IBM |
3532 |
| W3School |
2356 |
| Apple |
4698 |
| W3School |
6953 |
实例 1
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
结果:
| Company |
OrderNumber |
| Apple |
4698 |
| IBM |
3532 |
| W3School |
6953 |
| W3School |
2356 |
实例 2
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
| Company |
OrderNumber |
| Apple |
4698 |
| IBM |
3532 |
| W3School |
2356 |
| W3School |
6953 |
实例 3
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
| Company |
OrderNumber |
| W3School |
6953 |
| W3School |
23 |