以下全部内容来自W3School SQL教程,我在学习的过程中完全自己照着敲了一遍,加深学习印象。
SQL TOP 子句
TOP子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
注释:并非所有的数据库系统都支持 TOP 子句。
SQL Server 的语法:
SELECT TOP number|percent column_name(s) FROM table_name
MySQL TOP 和Oracle 中的SQL SELECT TOP 是等价的
MySQL语法:
SELECT column_name(s) FROM table_name LIMIT number
例子:
SELECT * FROM Persons LIMIT 10
Oracle 语法:
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
例子
SELECT * FROME Persons WHERE ROWNUM <= 10
Persons 表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
4 | Obama | Barack | Pennsylvania Avenue | Washington |
SQL TOP 实例:
现在,我们希望从上面的 “Persons” 表中选取头两条记录。
我们可以使用下面的 SELECT 语句:
SELECT TOP2 * FROM Persons
其结果是:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
SQL TOP PERCENT 实例
现在,我们希望从上面的 “Persons” 表中选取 50% 的记录。
我们可以使用下面的 SELECT 语句:
SELECT TOP 50 PERCENT FROM Persons
其结果为:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
SQL LIKE 操作符
LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SQL LIKE 操作符语法
SELECT column_numes(s)
FROM table_name
WHERE column_name LIKE pattern
Persons 表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
LIKE 操作符实例
实例1 以某字符开头
现在,我们希望从上面的 “Persons” 表中选取居住在
以 “N” 开始
的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT *
FROM Persons
WHERE City LIKE 'N%'
提示:”%” 可用于定义通配符(模式中缺少的字母)。
其结果为:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
2 | Bush | George | Fifth Avenue | New York |
例子 2 以某字符结尾
接下来,我们希望从 “Persons” 表中选取居住在
以 “g” 结尾
的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT *
FROM Persons
WHERE City LIKE 'g%'
其结果为:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
3 | Carter | Thomas | Changan Street | Beijing |
例子 3 包含某字符
接下来,我们希望从 “Persons” 表中选取居住在
包含 “lon”
的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT *
FROM Persons
WHERE City LIKE '%lon%'
其结果为:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
例子 4 不包含某字符(排除)
通过使用 NOT 关键字,我们可以从 “Persons” 表中选取居住在
不包含 “lon”
的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT *
FROM Persons
WHERE City NOT LIKE '%lon%'
其结果为:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
SQL 通配符
在搜索数据库中的数据时,我们可以使用 SQL 通配符。
SQL 通配符
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
SQL 通配符必须与 LIKE 运算符一起使用。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一字符 |
Persons表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
使用 % 通配符(替代一个或多个字符)
例子 1
现在,我们希望从上面的 “Persons” 表中选取居住在
以 “Ne” 开始
的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE 'Ne%'
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
2 | Bush | George | Fifth Avenue | New York |
例子 2
接下来,我们希望从 “Persons” 表中选取居住在
包含 “lond” 的
城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE '%lond%'
Persons表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
使用 _ 通配符(仅替代一个字符)
例子 1
现在,我们希望从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE LastName like '_eorge'
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
2 | Bush | George | Fifth Avenue | New York |
例子 2
接下来,我们希望从 “Persons” 表中选取的这条记录的姓氏以 “C” 开头,然后是一个任意字符,然后是 “r”,然后是任意字符,然后是 “er”:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
3 | Carter | Thomas | Changan Street | Beijing |
使用 [charlist] 通配符(字符列中的任何单一字符)
例子 1
现在,我们希望从上面的 “Persons” 表中选取居住的城市
以 “A” 或 “L” 或 “N” 开头
的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Psersons WHERE City LIKE '[ALN]%'
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
例子 2
现在,我们希望从上面的 “Persons” 表中选取居住的城市
不以 “A” 或 “L” 或 “N” 开头
的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Psersons WHERE City LIKE '[^ALN]%'
或者
SELECT * FROM Psersons WHERE City LIKE '[!ALN]%'
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
3 | Carter | Thomas | Changan Street | Beijing |
SQL IN 操作符
IN 操作符允许我们在 WHERE 子句中规定多个值。
SQL IN 语法:
SELECT column_name(s)
FROM table_name
WHERE colunm_name
IN (value1,value2,……)
Persons表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
IN 操作符实例
现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:
我们可以使用下面的 SELECT 语句:
SELECT *
FROM Persons
WHERE LasrName
IN ('Adams','Caeter')
结果集:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
3 | Carter | Thomas | Changan Street | Beijing |