友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第16部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
NAME='WALDO'
这里没有使用 AS 但它的结果与上例是完全一样的
WHERE 是使用频度仅次于 SELECT 和 FROM 的语句
STARTING WITH 子句
STARTING WITH 子句附加于 WHERE 子句上 它的作用与 LIKE exp% 相似 试
比较下边的两个查询
INPUT
SELECT PAYEE AMOUNT REMARKS FROM CHECKS WHERE PAYEE
LIKE('Ca%')
OUTPUT
PAYEE AMOUNT REMARKS
Cash 25 Wild Night Out
Cash 60 Trip to Boston
Cash 34 Trip to Dayton
再看看下边的查询
INPUT
SELECT PAYEE AMOUNT REMARKS FROM CHECKS WHERE PAYEE STARTING
WITH('Ca')
OUTPUT
PAYEE AMOUNT REMARKS
Cash 25 Wild Night Out
Cash 60 Trip to Boston
Cash 34 Trip to Dayton
结果是相同的 你甚至可以同时使用它们 例如
INPUT
SELECT PAYEE AMOUNT REMARKS FROM CHECKS
WHERE PAYEE STARTING WITH('Ca') OR REMARKS LIKE 'G%'
OUTPUT
EMAIL wyhsillypig@163。 100
…………………………………………………………Page 101……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
PAYEE AMOUNT REMARKS
Local Utilities 98 Gas
Joes Stale Dent 150 Groceries
Cash 25 Wild Night Out
Joans Gas 25。1 Gas
Cash 60 Trip to Boston
Cash 34 Trip to Dayton
Joans Gas 15。75 Gas
警告 STARTIN WITH 为许多 SQL 解释器所支持 在你喜欢上它之前请先检查你
的 SQL 解释器是否支持它
ORDER BY 子句
在有些时候你可能会希望查询输出的结果按一定的排序规则来显示 可是 正如你所
知道的 SELECT FROM 语句只会给你一个列表 除非你已经定义了关键字 见第 10 天
创建视图和索引 否则你查询的结果是依据它们在输入时的次序排列的 请看下表
INPUT
SQL》SELECT * FROM CHECKS
OUTPUT
CHECK# PAYEE AMOUNT REMARKS
1 Ma Bell 150 Have sons next time
2 Reading R。R。 245。34 Train to Chicago
3 Ma Bell 200。32 Cellular Phone
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
9 Abes Cleaners 24。35 X…Tra Starch
20 Abes Cleaners 10。5 All Dry Clean
8 Cash 60 Trip to Boston
21 Cash 34 Trip to Dayton
分析
请相信我 数据输出的情况的确是按照它们被输入的先后次序排序的 在第 8 天的 数
据操作 中我们将知道如何使用 INSERT 来创建一个新的表 那时你就可以试一下 看看
EMAIL wyhsillypig@163。 101
…………………………………………………………Page 102……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
数据是不是如你所猜想的那样来排序
ORDER BY 子句为你提供了对输出的结果进行排序的方法 例如 将记录按 CHECKS
号进行排序 语句如下
INPUT
SQL》SELECT * FROM CHECKS ORDER BY CHECK#
OUTPUT
CHECK# PAYEE AMOUNT REMARKS
1 MaBell 150 Have next sonstime
2 Reading R。R。 245。34 Train to Chicago
3 Ma Bell 200。32 Cellular Phone
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
8 Cash 60 Trip to Boston
9 Abes Claeners 24。35 X…Tra Starch
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
20 Abes Cleaners 10。5 All Dry Clean
21 Cash 34 Trip to Dayton
现在数据已经按照你的要求进行排序而不是按照它们被输入的次序进行排序了 下边
的例子则表明 BY 是 ORDER 不可缺少的组成部分
INPUT/OUTPUT
SQL》 SELECT * FROM CHECKS ORDER CHECK#
ERROR at line 1:
ORA…00924: missing BY keyword
如果你想让数据按降序排列 也就是说数值最大的排在最前边 那么非常幸运 下例
中 PAYEEs 表中的 PAYEEs 列就是按降序排列的
INPUT/OUTPUT
SQL》SELECT * FROM CHECKS ORDER BY PAYEE DESC
CHECK# PAYEE AMOUNT REMARKS
2 Reading R。R。 245。34 Train to Chicago
1 Ma Bell 150 Have sons next time
3 Ma Bell 200。32 Cellular Phone
4 Local Utilities 98 Gas
EMAIL wyhsillypig@163。 102
…………………………………………………………Page 103……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
5 Joes Stale Dent 150 Groceries
17 Joans Gas 25。1 Gas
16 Cash 25 Wild Night Out
8 Cash 60 Trip to Boston
21 Cash 34 Trip to Dayton
9 Abes Cleaners 24。35 X…Tra Starch
20 Abes Cleaners 10。5 All Dry Clean
在 ORDER BY 后边的 DESC 表示用降序排列来代替默认的升序排列 下例则出现了
很少使用的关键字 ASC 表示要按升序进行排列
INPUT
SQL》SELECT PAYEE AMOUNT FROM CHECKS ORDER BY CHECK# ASC
OUTPUT
PAYEE AMOUNT
Ma Bell 150
Reading R。R 245。34
Ma Bell 200。32
Local Utilities 98
Joes Stale Dent 150
Cash 60
Abes Cleaners 24。35
Cash 25
Joans Gas 25。1
Abes Cleaners 10。5
Cash 34
输出的结果与最初没有使用 ASC 时是一样的 这是因为 ASC 是默认的选项 本例也
表明了用于排序的字段并不一定要出现在 SELECT 子句中 尽管我们选择的是 PAYEE 和
AMOUNT 但是排序却是按 CHECKS 进行的
ORDER BY 可以使用多个字段 下例是按 PAYEE 和 REMARKS 进行排序的
INPUT
SQL》SELECT * FROM CHECKS ORDER BY PAYEE REMARKS
OUTPUT
CHECK# PAYEE AMOUN REMARKS
T
20 Abes Cleaners 10。5 All Dry Clean
EMAIL wyhsillypig@163。 103
…………………………………………………………Page 104……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
9 Abes Cleaners 24。35 X…Tra Starch
8 Cash 60 Tripto Boston
21 Cash 34 Tripto Dayton
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
5 Joes Stale Dent 150 Groceries
4 Local Utilities 98 Gas
3 Ma Bell 200。32 Cellular Phone
1 Ma Bell 150 Havesonsnexttime
2 Reading R。R。 245。34 Trainto Chicago
分析
注意在排序之前 CASH 在表中的输入次序 CHECK 号依次为 16 8 21 在 ORDER BY
子句中加入了 REMARK 字段后结果是按照 REMARK 的字母顺序进行排序 在 ORDER BY
中的列的次序对排序的结果会有影响吗 试着掉换一下 PAYEE 和 REMARKS 的次序
INPUT
SQL》SELECT * FROM CHECKS ORDER BY REMARKS PAYEE
OUTPUT
CHECK# PAYEE AMOUNT REMARKS
20 Abes Cleaners 10。5 All Dry Clean
3 Ma Bell 200。32 Cellular Phone
17 Joans Gas 25。1 Gas
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
1 Ma Bell 150 Have sons next time
2 Reading R。R 。245。34 Train to Chicago
8 Cash 60 Trip to Boston
21 Cash 34 Trip to Dayton
16 Cash 25 Wild Night Out
9 Abes Cleaners 24。35 X…Tra Starch
分析
你大概已经猜出来了 结果是完全不相同的 下例显示了如何将一列按字母的正顺排
列而把第二列按字母的逆序进行排列
INPUT/OUTPUT
SQL》 SELECT * FROM CHECKS ORDER BY PAYEE ASC REMARKS DESC
EMAIL wyhsillypig@163。 104
…………………………………………………………Page 105……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
CHECK# PAYEE AMOUNT REMARKS
9 Abes Cleaners 24。35 X…Tra Starch
20 Abes Cleaners 10。5 All Dry Clean
16 Cash 25 Wild Night Out
21 Cash 34 Trip to Dayton
8 Cash 60 Trip to Boston
17 Joans Gas 25。1 Gas
5 Joes Stale Dent 150 Groceries
4 Local Utilities 98 Gas
1 Ma Bell 150 Have sons next time
3 Ma Bell 200。32 Cellular Phone
2 Reading R。R 。245。34 Train to Chicago
分析
在这个例子中 PAYEE 按正序排列而 REMARK 按逆序排列 请注意 CASH 中的
REMARK 是怎样相对于 PAYEE 排序的
技巧 假如你已经知道了你想要进行排序的列是表中的第一列的话 那么你可以用 ORDER
BY 1 来代替输入列的名字 见下例
INPUT/OUTPUT
SQL》 SELECT * FROM CHECKS ORDER BY 1
CHECK# PAYEE AMOUNT REMARKS
1 Ma Bell 150 Have sons next time
2 Reading R。R 。245。34 Train to Chicago
3 Ma Bell 200。32 Cellular Phone
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
8 Cash 60 Trip to Boston
9 Abes Cleaners 24。35 X…Tra Starch
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
20 Abes Cleaners 10。5 All Dry Clean
21 Cash 34 Trip to Dayton
分析
它的结果与你在今天的早些时候写下的这个语句的结果是一样的
SELECT * FROM CHECKS ORDER BY CHECK#
EMAIL wyhsillypig@163。 105
…………………………………………………………Page 106……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
GROUP BY 子句
在第三天时我们学习了汇总类函数 COUNT SUM AVG MIN MAX 如果你想
看一下支出的总费用你可以用如下语句
INPUT
SELECT * FROM CHECKS
下表是修改以后的 CHECKS 表
CHECKNUM PAYEE AMOUNT REMARKS
1 Ma Bell 150 Have sons next time
2 Reading R。R 。245。34 Train to Chicago
3 Ma Bell 200。33 Cellular Phone
4 Local Utilities 98 Gas
5 Joes Stale Dent 150 Groceries
16 Cash 25 Wild Night Out
17 Joans Gas 25。1 Gas
9 Abes Cleaners 24。35 X…Tra Starch
20
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!