按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
SQL》SELECT LOCATION AS 〃WHERE'S WALDO?〃 FROM PUZZLE
WHERE NAME = 'WALDO'
OUTPUT
WHERE'S WALDO?
GARAGE
好了 我答应以后不再写像这样粗俗的语句了 我已经把它们收录于 SQL BATHROOM
HUMOR — — 这是一本每个人都想得到的书 不过 这个查询显示出了在 WHERE 中用
于条件的列并没有在 SELECT 语句中出现 本例中你所选择的是 LOCATION 列而条件列
是 NAME 这是完全合法的 同时 我们也应该注意到 SELECT 语句中我们使用了 AS
它是一个可以选择的参数 用以指定 LOCATION 的别名 你以后将不会看到 AS 因为它
是多余的 ACCESS 中则不可省略— — 译者 在大多数 SQL 解释器中我们只需输入
EMAIL wyhsillypig@163。 99
…………………………………………………………Page 100……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
INPUT
SQL》SELECT LOCATION 〃WHERE'S WALDO?〃 FROM PUZZLE WHERE
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