SQL学习笔记—进阶篇

发布于 / Code-指尖艺术 / 0 条评论

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
转载原创文章请注明,转载自: everglow » SQL学习笔记—进阶篇
Not Comment Found