1.TOP,LIMIT,ROWNUM子句
TOP 子句用于获取一个TOP N数字或X%的纪录。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
不是所有的数据库都支持TOP子句。例如,MySQL使用LIMIT子句来获取记录;Oracle使用ROWNUM获取有限的记录数。
SQL Server:
SELECT TOP number|percent column_name(s)
FROM table_name
MySQL:
SELECT column_name(s)
FROM table_name
LIMIT number
Oracle:
SELECT column_name(s)
FROM table_name
例子 1) SQL Server, 2) Mysql, 3) Oracle.
1) SELECT TOP 50 PERCENT * FROM Persons
2) SELECT * FROM Persons LIMIT 5
3) SELECT * FROM Persons WHERE ROWNUM <= 5
2.LIKE子句
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SQL LIKE 操作符语法如下:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
通配符
在搜索数据库中的数据时,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 |
%通配符
从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:
SELECT * FROM Persons
WHERE City LIKE 'N%'
从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:
SELECT * FROM Persons
WHERE City LIKE '%g'
从 “Persons” 表中选取居住在包含 “lon” 的城市里的人:
SELECT * FROM Persons
WHERE City LIKE '%lon%'
_通配符
从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:
SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'
从 “Persons” 表中选取的这条记录的姓氏以 “C” 开头,然后是一个任意字符,然后是 “r”,然后是任意字符,然后是 “er”:
SELECT * FROM Persons
WHERE LastName LIKE 'C_r_er'
[charlist] 通配符
从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:
SELECT * FROM Persons
WHERE City LIKE '[ALN]%'
从上面的 “Persons” 表中选取居住的城市不以 “A” 或 “L” 或 “N” 开头的人:
SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'
更多例子
组合使用通配符可以实现更多功能,参考以下例子
语句 | 描述 |
---|---|
WHERE LastName LIKE ‘_us%’ | 查找在第二和第三位置是us的任何值 |
WHERE LastName LIKE ‘A_%_%’ | 查找开始A并且长度至少为3个字符的任何值 |
WHERE LastName LIKE ‘_a%r’ | 查找第二位置为a,并以r结束的任何值 |
WHERE LastName LIKE ‘A___s’ | 查找以5位字符-开头为A,并以s结束的任何值 |
3.SQL In
IN 操作符允许我们在 WHERE 子句中规定多个值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
例如,从Persons表中选取姓氏为 Adams 和 Carter 的人:
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')
4.SQL Between
BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
不同的数据库对 BETWEEN…AND 操作符是否包含value1,value2的处理方式是有差异的。
5.SQL Alias(别名)
通过使用 SQL,可以为列名称和表名称指定别名(Alias)
表的Alias用法
SELECT column_name(s)
FROM table_name
AS alias_name
列的Alias用法
SELECT column_name AS alias_name
FROM table_name
Alias 实例: 使用表名称别名
假设我们有两个表分别是:”Persons” 和 “Product_Orders”。我们分别为它们指定别名 “p” 和 “po”。
现在,我们希望列出 “John Adams” 的所有定单。
我们可以使用下面的 SELECT 语句:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
不使用别名的 SELECT 语句:
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons, Product_Orders
WHERE Persons.LastName='Adams' AND Persons.FirstName='John'
从上面两条 SELECT 语句您可以看到,别名使查询程序更易阅读和书写。
Alias 实例: 使用一个列名别名
表 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 |
SQL:
SELECT LastName AS Family, FirstName AS Name
FROM Persons
结果:
Family | Name |
---|---|
Adams | John |
Bush | George |
Carter | Thomas |