必学高级SQL语句
2007-05-14 17:39
260 查看
ORDER BY关键词用于对结果进行排序。
结果:
注意:在以上的结果中有两个相等的公司名称(W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为nulls时,情况也是这样的。
-------------------------------------------------------------------------------------------------------------------------------------------------------
AND和OR可在WHERE子语句中把两个或多个条件结合起来。
假如所有列出的条件都成立,AND会显示一行。假如列出的条件中有一个成立,OR操作符会显示一行。
------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------
重要事项:不同的数据库对BETWEEN...AND操作符的处理方式是有差异的。某些数据库会列出介于"Hansen"和"Pettersen"之间的人,但不包括"Hansen"和"Pettersen";某些数据库会列出介于"Hansen"和"Pettersen"之间并包括"Hansen"和"Pettersen"的人;而另一些数据库会列出介于"Hansen"和"Pettersen"之间的人,包括"Hansen",但不包括"Pettersen"。所以:请检查你的数据库是如何处理BETWEEN....AND操作符的!
--------------------------------------------------------------------------------------------------------------------------------------------------
通过使用SQL,别名(Alias)可用于列名称和表名称。
对行进行分类
ORDER BY子语句用于对行进行排序。Orders:
Company | OrderNumber |
---|---|
Sega | 3412 |
ABC Shop | 5678 |
W3Schools | 2312 |
W3Schools | 6798 |
实例
以字母顺序显示公司名称:SELECT Company, OrderNumber FROM Orders ORDER BY Company
结果:
Company | OrderNumber |
---|---|
ABC Shop | 5678 |
Sega | 3412 |
W3Schools | 6798 |
W3Schools | 2312 |
实例
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):ELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
Company | OrderNumber |
---|---|
ABC Shop | 5678 |
Sega | 3412 |
W3Schools | 2312 |
W3Schools | 6798 |
实例
以逆字母顺序显示公司名称:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
Company | OrderNumber |
---|---|
W3Schools | 6798 |
W3Schools | 2312 |
Sega | 3412 |
ABC Shop | 5678 |
实例
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
结果:
Company | OrderNumber |
---|---|
W3Schools | 2312 |
W3Schools | 6798 |
Sega | 3412 |
ABC Shop | 5678 |
-------------------------------------------------------------------------------------------------------------------------------------------------------
AND和OR可在WHERE子语句中把两个或多个条件结合起来。
假如所有列出的条件都成立,AND会显示一行。假如列出的条件中有一个成立,OR操作符会显示一行。
原始的表 (用在例子中的):
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Svendson | Stephen | Kaivn 18 | Sandnes |
实例
使用AND来显示所有姓为"Tove"并且名为"Svendson"的人:SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Svendson | Tove | Borgvn 23 | Sandnes |
实例
使用OR来显示所有姓为"Tove"或者名为"Svendson"的人:SELECT * FROM Persons WHERE firstname='Tove' OR lastname='Svendson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Svendson | Tove | Borgvn 23 | Sandnes |
Svendson | Stephen | Kaivn 18 | Sandnes |
实例
我们也可以把AND和OR结合起来(使用圆括号来组成复杂的表达式):SELECT * FROM Persons WHERE (FirstName='Tove' OR FirstName='Stephen') AND LastName='Svendson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Svendson | Tove | Borgvn 23 | Sandnes |
Svendson | Stephen | Kaivn 18 | Sandnes |
IN
假如您已经确定希望返回的确切的值至少属于列中之一,那么可以使用操作符IN。SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..)
原始的表 (在实例中使用:)
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
实例 1
如需显示名字是"Hansen"或者"Pettersen"的人,请使用下面的SQL:SELECT * FROM Persons WHERE LastName IN ('Hansen','Pettersen')
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
BETWEEN ... AND
操作符BETWEEN ... AND会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2
原始的表 (在实例中使用:)
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
实例 1
如需以字母顺序显示介于"Hansen"(包括)和"Pettersen"(不包括)之间的人,请使用下面的SQL:SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
实例 2
如需使用上面的例子显示范围之外的人,请使用NOT操作符:SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
通过使用SQL,别名(Alias)可用于列名称和表名称。
列名别名
语法:
SELECT column AS column_alias FROM table
表名称别名
语法:
SELECT column FROM table AS table_alias
实例: 使用一个列名别名
表(Persons):
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
SQL:
SELECT LastName AS Family, FirstName AS Name FROM Persons
结果:
Family | Name |
---|---|
Hansen | Ola |
Svendson | Tove |
Pettersen | Kari |
实例: 使用一个表名称别名
表(Persons):
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
SQL:
SELECT LastName, FirstName FROM Persons AS Employees
结果:
表 Employees:LastName | FirstName |
---|---|
Hansen | Ola |
Svendson | Tove |
Pettersen | Kari |
相关文章推荐
- (Sql Server高级技巧)使用SQL语句实现备份与还原
- LINQ to SQL语句之动态查询高级特性
- SQL Server SQL高级查询语句小结
- SQL高级语句-JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
- 高级SQL语句简单举例
- SQL高级语句-SQL UNIQUE 约束,唯一标识数据库表中的每条记录。
- SQL Server SQL高级查询语句小结
- sql高级语句
- Android SQLite SQL语句高级进阶
- SQL 高级语句
- SQL高级语句-BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
- SQL Server SQL高级查询语句小结
- sql高级查询语句
- 分享一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询等)。
- SQL语句面试题目:一般查询和高级子查询
- Mysql高级SQL语句
- T_SQL 语句编程与高级查询
- ERP 高级查询(Advanced Query)设计与实现 SQL语句解析成LLBL Gen ORM代码
- 常见sql查询语句(二)---高级查询
- SQL高级语句-PRIMARY KEY 约束,为列或列集合提供了唯一性的保证。