目录
一、SQL TOP语句
1.TOP 子句
2.SQL TOP 实例
3.SQL TOP PERCENT 实例
二、SQL LIKE 操作符
1.LIKE 操作符
2.SQL LIKE 操作符语法
3.LIKE 操作符实例
三、SQL通配符
1.SQL 通配符
2.使用 % 通配符
3.使用 _ 通配符
4.使用 [charlist] 通配符
四、SQL IN操作符
1.IN 操作符
2.SQL IN 语法
3.IN 操作符实例
五、SQL BETWEEN操作符
1.BETWEEN 操作符
2.SQL BETWEEN 语法
3.BETWEEN 操作符实例
六、SQL Alias(别名)
1.SQL Alias
2.使用表名称别名
3.使用一个列名别名
TOP 子句用于规定要返回的记录的数目。
注释:并非所有的数据库系统都支持 TOP 子句。MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的。
SQL Server 的语法:
SELECT TOP number|percent column_name(s)
FROM table_name
MySQL 的语法:
SELECT column_name(s)
FROM table_name
LIMIT number
例如:
SELECT *
FROM Persons
LIMIT 5
Oracle 的语法:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number
例如:
SELECT *
FROM Persons
WHERE ROWNUM <= 5
Persons 表:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
004 |
Obam |
Barack |
Pensy Aue |
Washington |
从 "Persons" 表中选取头两条记录,使用的 SELECT 语句:
SELECT TOP 2 * FROM Persons
结果:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
从 "Persons" 表中选取 50% 的记录,使用的 SELECT 语句:
SELECT TOP 50 PERCENT * FROM Persons
结果:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
Persons 表:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
①从 "Persons" 表中选取居住在以 "N" 开始的城市里的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE 'N%'
注释:"%" 可用于定义通配符(模式中缺少的字母)。
结果集:
Id |
LastName |
FirstName |
Address |
City |
002 |
Buh |
Grge |
Fifth Aue |
New York |
②从 "Persons" 表中选取居住在以 "g" 结尾的城市里的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE '%g'
结果集:
Id |
LastName |
FirstName |
Address |
City |
003 |
Car |
Tmas |
Can Street |
Beijing |
③从 "Persons" 表中选取居住在包含 "lon" 的城市里的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE '%lon%'
结果集:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
④使用 NOT 关键字,从 "Persons" 表中选取居住在不包含 "lon" 的城市里的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'
结果集:
Id |
LastName |
FirstName |
Address |
City |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
注:SQL 通配符必须与 LIKE 运算符一起使用。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
% | 代表零个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何单一字符 |
Persons 表:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
①从 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE 'Ne%'
结果集:
Id |
LastName |
FirstName |
Address |
City |
002 |
Buh |
Grge |
Fifth Aue |
New York |
②从 "Persons" 表中选取居住在包含 "lond" 的城市里的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE '%lond%'
结果集:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
①从 "Persons" 表中选取名字的第一个字符之后是 "rge" 的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE FirstName LIKE '_rge'
结果集:
Id |
LastName |
FirstName |
Address |
City |
002 |
Buh |
Grge |
Fifth Aue |
New York |
②从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "a",然后是一个任意字符,然后是 "r",使用的 SELECT 语句:
SELECT * FROM Persons
WHERE LastName LIKE 'C_a_r'
结果集:
Id |
LastName |
FirstName |
Address |
City |
003 |
Car |
Tmas |
Can Street |
Beijing |
注:灵活运用通配符
①从"Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE '[ALN]%'
结果集:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
②从"Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'
结果集:
Id |
LastName |
FirstName |
Address |
City |
003 |
Car |
Tmas |
Can Street |
Beijing |
IN 操作符允许我们在 WHERE 子句中规定多个值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
Persons 表:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
从上表中选取姓氏为 Aam 和 Car 的人,使用的 SELECT 语句:
SELECT * FROM Persons
WHERE LastName IN ('Aam','Car')
结果集:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
003 |
Car |
Tmas |
Can Street |
Beijing |
BETWEEN 操作符在 WHERE 子句中使用,操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
Persons 表:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
004 |
Gates |
Bill |
Xuanwumen 10 |
Beijing |
①以字母顺序显示介于 "Aam"(包括)和 "Car"(不包括)之间的人,使用的 SQL语句:
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'
结果集:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
注:不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Aam" 和 "Car" 之间的人,但不包括 "Aam" 和 "Car" ;某些数据库会列出介于 "Aam" 和 "Car" 之间并包括 "Aam" 和 "Car" 的人;而另一些数据库会列出介于 "Aam" 和 "Car" 之间的人,包括 "Aam" ,但不包括 "Car" 。
②使用上面的例子显示范围之外的人,使用 NOT 操作符:
SELECT * FROM Persons
WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'
结果集:
Id |
LastName |
FirstName |
Address |
City |
003 |
Car |
Tmas |
Can Street |
Beijing |
004 |
Gates |
Bill |
Xuanwumen 10 |
Beijing |
通过使用 SQL命令语句,可以为列名称和表名称指定别名(Alias)。
表的 SQL Alias 语法
SELECT column_name(s)
FROM table_name
AS alias_name
列的 SQL Alias 语法
SELECT column_name AS alias_name
FROM table_name
假设有两个表分别是:"Persons" 和 "Product_Orders"。分别为它们指定别名 "p" 和 "po"。
列出 "Joh Aam" 的所有定单,使用的 SELECT 语句:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Aam' AND p.FirstName='Joh'
不使用别名的 SELECT 语句:
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons, Product_Orders
WHERE Persons.LastName='Aam' AND Persons.FirstName='Joh'
得出结论:别名使查询程序更易阅读和书写。
Persons 表:
Id |
LastName |
FirstName |
Address |
City |
001 |
Aam |
Joh |
Oxd Street |
London |
002 |
Buh |
Grge |
Fifth Aue |
New York |
003 |
Car |
Tmas |
Can Street |
Beijing |
从Persons表中抽取LastName列重命名为Family,FirstName列重命名为Name,使用的SQL语句:
SELECT LastName AS Family, FirstName AS Name
FROM Persons
结果集:
Family |
Name |
Aam |
Joh |
Buh |
Grge |
Car |
Tmas |
提醒:各位看官可不要光只顾着看,还要在自己建立的数据库模型中不断地实操才能更好的掌握SQL语句。