SQL 高级教程
Top TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的
MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的
注释:并非所有的数据库系统都支持 TOP 子句。
1.eg: SELECT TOP number|percent column_name(s) FROM table_name
从”Persons” 表中选取头两条记录
2.eg: SELECT TOP 2
* FROM Persons
从 “Persons” 表中选取 50% 的记录
3.eg: SELECT TOP 50 PERCENT
* FROM Persons
Like
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
eg:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
eg:
SELECT * FROM Persons
WHERE City LIKE ‘N%’ (‘%xxxx%’ or ‘%X’ or ‘xx%’)
通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
SQL 通配符必须与 LIKE 运算符一起使用。
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列中的任 |
我们希望从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人
eg:
SELECT * FROM Persons
WHERE City LIKE ‘[ALN]%’
我们希望从上面的 “Persons” 表中选取居住的城市不以 “A” 或 “L” 或 “N” 开头的人:
eg:
SELECT * FROM Persons
WHERE City LIKE ‘[!ALN]%’
我们希望从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:
eg:
SELECT * FROM Persons
WHERE FirstName LIKE ‘_eorge’
In IN 操作符允许我们在 WHERE 子句中规定多个值。
eg: SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)
Between And 操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期
eg: SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 (说明:字母顺序介于value1[‘包括’]和value2[‘不包括’]之间的人)
Alias 可以为列名称和表名称指定别名(Alias)
表的 SQL Alias 语法
eg: SELECT column_name(s) FROM table_name AS alias_name
列的 SQL Alias 语法
eg: SELECT column_name AS alias_name FROM table_name
join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据
eg1: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
eg2: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
inner join 同上面的join eg2
LEFT JOIN LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行
eg: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
RIGHT JOIN RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行
eg: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
FULL JOIN 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行
eg:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName