SQL 高级查询

《SQL 高级查询》

1.TOP

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

语法:

SELECT TOP number|percent column_name(s) FROM table_name

例:

SELECT TOP 1 * FROM Persons

SELECT TOP 25 PERCENT * FROM Persons

2.LIKE

通配符:

% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

语法:

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:

SELECT * FROM Persons
WHERE City LIKE 'N%'

从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:

SELECT * FROM Persons
WHERE City LIKE '%g'

从 “Persons” 表中选取居住在包含 “on” 的城市里的人:

SELECT * FROM Persons
WHERE City LIKE '%on%'

从 “Persons” 表中选取居住在不包含 “on” 的城市里的人:

SELECT * FROM Persons
WHERE City NOT LIKE '%on%'

从 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:

SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'

从”Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:

SELECT * FROM Persons
WHERE City LIKE '[ALN]%'

从”Persons” 表中选取居住的城市不以“A” 或 “L” 或 “N” 开头的人:

SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'


3.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.BETWEEN 

操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

语法:

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人:

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'

以字母顺序显示不介于 “Adams”(包括)和 “Carter”(不包括)之间的人:

SELECT * FROM Persons
WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'

例:日期:

SELECT * FROM Users 

WHERE AddTime 

BETWEEN ‘2010-3-29 11:26:00.000’ AND ‘2010-3-31 10:09:24.999’


5.Alias

通过使用 SQL,可以为列名称和表名称指定别名(Alias)。

语法:

SELECT column_name(s)
FROM table_name
AS alias_name

LastName设置其别名为Family,FirstName为Name:

SELECT LastName AS Family, FirstName AS Name
FROM Persons

6.join


 join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据


JOIN(INNER JOIN): 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行


JOIN(INNER JOIN)语法:

INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 “Persons” 中的行在 “Orders” 中没有匹配,

就不会列出这些行。

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

LEFT JOIN 语法: 

LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

RIGHT JOIN 语法: 

RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

FULL JOIN 语法: 

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 “Persons” 中的行在表 

“Orders” 中没有匹配,或者如果 “Orders” 中的行在表 “Persons” 中没有匹配,这些行同样会列出。

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2 
ON table_name1.column_name=table_name2.column_name


    原文作者:SQL
    原文地址: https://blog.csdn.net/csdn9_14/article/details/52659044
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞