按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
PERKINS
PERKINS
PERKINS
只有我一个人在使用这个数据库 看 SELECT 又一次对表中的每一行都返回了结果
该函数与在今天早些时候提及的日期函数类似 甚至尽管 USER 不是表中确实存在的列
但 SELECT 仍然检索了表中的每一行
总结
好长的一天啊 我们一共学习了 47 个函数 你无需记住每一个函数 只需要知道它们
的大致类型 算术函数 日期/ 时间函数 字符函数 转换函数 其它函数 而当你写一
个查询的时候你有一个明确的目标就够了
EMAIL wyhsillypig@163。 94
…………………………………………………………Page 95……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
问与答
问 为什么在 ANSI 标准中定义的函数这么少 而不同的解释器又都定义了这么多的函数
答 ANSI 标准是一个非常宽松的标准 而且如果对所有的解释器生产厂家来说过多的限
制会使其走向破产的道路 另一方面 如果 A 公司对 SQL 补充了一个用于统计的函
数包而销路特别好的话 那么 B 公司和 C 公司一定也会跟着做的
问 我认为你对 SQL 的介绍太简单了 我的工作时应该如何去使用这些函数呢
答 这个问题与一个都三角的教师所提出的问题类似 事实上我也不知道如何却求一个等
腰三角形的面积 所以 我的回答是 根据你的职业而定 你的工作中需要用到哪些
函数你就去使用它 而其它的对你来说则是没有必要掌握的 这一观点也适用于你的
查询
校练场
1 哪个函数是用来将给定字符串的第一个字母变成大写而把其它的字符变成小写的
2 哪此函数的功能就如同它的名字含义一样
3 下边的查询将如何工作
SQL》 SELECT COUNT(LASTNAME) FROM CHARACTERS;
4 下边的查询是干什么的
SQL》 SELECT SUM(LASTNAME) FROM CHARACTERS;
5 哪个函数可以将 FIRSTNAME 列与 LASTNAME 列合并到一起
6 在下边的查询中 6 是什么意思
输入
SQL》 SELECT COUNT(*) FROM TEAMSTATS;
输出
COUNT(*)
6
7 下列语句将输出什么
SQL》 SELECT SUBSTR LASTNAME;1;5 FROM NAME_TBL;
EMAIL wyhsillypig@163。 95
…………………………………………………………Page 96……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
练习
1 用今天的 TEAMSTARTS 表来写一个查询 用来显示谁的中球率低于 0。25 中球率
的计算方法为 hits/ab
2 用今天的 CHARACTERS 表来写一个查询 要求返回下边的结果
INITIALS__________CODE
K。A。P。 32
1 row selected。
EMAIL wyhsillypig@163。 96
…………………………………………………………Page 97……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第五天 SQL 中的子句
目标
今天的主题是子句 — — 它不是你在渡假时的赠品 而是你所学习的 SELECT 语句的一
个组成部分 在今天结束以后我们将学会以下子句
l WHERE
l STARTING WITH
l ORDER BY
l GROUP BY
l HAVING
为了对这些子句有一个大致的印象 请看一下 SELECT 语句的通用语法表达式
语法
SELECT 'DISTINCT | ALL' { *
| { 'schema。'{table | view | snapshot}。*
| expr } ' 'AS' c_alias '
'; { 'schema。'{table | view | snapshot}。*
| expr } ' 'AS' c_alias ' ' 。。。 }
FROM 'schema。'{table | view | snapshot}'@dblink' 't_alias'
'; 'schema。'{table | view | snapshot}'@dblink' 't_alias' ' 。。。
'WHERE condition '
'GROUP BY expr '; expr' 。。。 'HAVING condition' '
'{UNION | UNION ALL | INTERSECT | MINUS} SELECT mand '
'ORDER BY {expr|position} 'ASC | DESC'
' {expr|position} 'ASC | DESC'' 。。。'
注 根据我对 SQL 的经验 ANSI 标准确实只是 ANSI 的 建议 上述的语法格式在
大多数的 SQL 引擎下都能够工作 但是你可以发现它们之间存在着一些差别
EMAIL wyhsillypig@163。 97
…………………………………………………………Page 98……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
你无需对这些复杂的语法花费太多的精力 因为许多人发现语法表比关于新应用的示
例更容易让人困惑 本书采用简单的例子展现其特点 不过 如果我们在今天看一下有关
它的语法表述会使我们对今天的学习更容易理解
不要对语法的精确内容太担心 对于不同的解释器它们是不同的 所以 我们应该把
精力放到关系上 在最前边的是 SELECT 语句 我们在前几天已经多次使用过了 SELECT
之后应该是 FROM 在每次输入 SELECT 语句时它也应该输入 明天我们将学习 FROM
语句的新用法 之后是 WHERE GROUP BY HAVING 和 ORDER BY 其余的子句 包
括 UNION UNION ALL INTERSECT 和 MINUS 在表中已经在第 3 天时讲过了 每一个
子句的在数据的选择和操作时都扮演着它的重要角色
注 在今天的例子中我们使用两种 SQL 解释器 一种仍然是 SQL 的命令行形式 它
属于 Personal Oracle7 而另外一种则不是 它是 BORLAND 公司的 ISQL 你可以发现
输出的结果会随着解释器的不同而不同
WHERE 子句
仅使用 SELECT 和 FROM 子句 你会受到表中的每一行数据均返回的限制 例如 只
在 CHECKS 表中使用这两个关键字 你将会得到表中的全部行 共 7 行
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
使用 WHERE 子句将会使你更具有选择性 要想找到你所填写的支票中所有超过 100
元的 你可以这样写
INPUT
EMAIL wyhsillypig@163。 98
…………………………………………………………Page 99……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》SELECT * FROM CHECKS WHERE AMOUNT 100
WHERE 子句只返回了符合条件的四条记录
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
5 Joes Stale Dent 150 Groceries
使用 WHERE 也可以解决一些其它的难题 下表给出了姓名和位置 你可以提出这样
的问题— — Waldo 住在哪儿
INPUT
SQL》SELECT * FROM PUZZLE
OUTPUT
NAME LOCATION
TYLER BACKYARD
MAJOR KITCHEN
SPEEDY LIVING ROOM
WALDO GARAGE
LADDIE UTILITY CLOSET
ARNOLD TV ROOM
INPUT
SQL》SELECT LOCATION AS 〃WHERE'S WALDO?〃 FROM PUZZLE
WHERE NAME