您的位置:首页 > 数据库

SQL 之 基于行的逻辑

2016-10-06 00:16 141 查看
关键字: WHERE、
TOP/LIMIT/ROWNUM

 
1. 应用查询条件
SELECT columnlist
FROM tablelist
WHERE condition
ORDER BY columnlist
 
PS:WHERE子句必须总在FROM和ORDER
BY之间。事实上,任何子句都必须按这个顺序,ORDER BY是最后的。
 
示例一
SELECT
FirstName,
LastName,
QuantityPurchased
FROM Orders
WHERE LastName = ‘Harper’
 
输出
FirstName   LastName    QuantityPurchased
---------------------------------------------------
Brenda      Harper       5
 
字符列的值要用单引号’’括起,如果是数字字段则不用。
 
2. WHERE子句操作符
比如示例一WHERE子句的等号=用作操作符:表对相等性的判断。
相等
= 、不相等 <>、大于>、小于<、大于或等于>=、小于或等于<=
SELECT
FirstName,
LastName,
FROM Orders
WHERE LastName > ‘K’
ORDER BY FirstName
结果
FirstName   LastName

----------------------------
Natalie      Lopez
William      Smith
 
PS:文本大于’K’即
以L-Z(在K后面) 开头的文本
 
同理,其实这些操作符也可以用在查询格式的CASE语句(简单格式仅仅是相等性判断):
CASE
WHEN column1 > value1 THEN result1
END
 
3. 限制行
不关心返回哪些行,只想看一个子集(看其中的数据是怎样的),这种情况用TOP。
TOP关键字:指定想要限制多少行(比如N行)返回,则返回表的前N行。
SELECT
TOP number
columnlist
FROM table
 
与SQL Server不同的是:
MySQL使用LIMIT关键字:
SELECT
columnlist
FROM table
LIMIT number
 
Oracle:ROWNUM <= num
SELECT
columnlist
FROM table
WHERE ROWNUM <= number
 
示例二:
SELECT
TOP 10 *
FROM table
返回表的前10行,包含所有列
 
SELECT
TOP 10
column1,
column2
FROM table
返回表的前10行,包含column1,column2
 
PS:不是随机返回N行,而是根据在数据库中的物理存储方式,限定了前N行的数据,
 
4. Sort限制行数
TOP用法:【TOP N查询】TOP和ORDER
BY子句结合使用,可以得到有序的一定数量的行,比如最大的前N行。排序作用。
SELECT
TOP 3
Title AS ‘Book Title’,
CurrentMonthSales AS
‘Quantity Sold’
FROM Books
ORDER BY CurrentMonthSales DESC
 
得到销量最多的前3名书籍(名字)
如果是只想要某个作者的销量最大的书呢?
SELECT
TOP 1
Title AS ‘Book Title’,
CurrentMonthSales AS
‘Quantity Sold’
FROM Books
WHERE Author = ‘Shakespare’
ORDER BY CurrentMonthSales DESC
 
WHERE子句一定在FROM后ORDER BY前。
 
Oracle版本的限制行和排序:
SELECT *
FROM
( SELECT
columnlist
FROM table
ORDER BY columnlist DESC )
WHERE ROWNUM <= number
 
先降序排列所有行,再使用RUMNUM来限制行数。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: