按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
没有其它的语句可以比 SELECT 语句更简单了 但是 SELECT 语句不从独立工作 如
果你只是键入了 SELECT 语句 那么你将会收到如下信息
输入
SQL》 SELECT;
输出
SELECT
*
ERROR at line 1
ORA…00936 missing expression
当在访问 ORACLE 时会有*出现以表示有事件产生 错误信息的意思是告诉你有一个
东西丢了 这个丢失的东西就是 FROM 子句
语法
FROM
当两条语句结合使用时就有了后台访问数据库的能力
注 你可能会对子句 关键字 或 SQL 语句感到费解 SQL 的关键字是 SQL 中的特定元
素 如SELECT 和FROM 子句则是SQL 语句的一部分 如; SELECT column1; column2; 。。。
就是一个子句 而 SQL 语句则是几个子句的结合 例如你可以将 SELECT 子句和 FROM
子句组合成为一个 SQL 语句
注 每一个种 SQL 都有其特定的出错信息 例如 Microsoft Query 会显示说它不能运行查
询 并引导你发现错误所在 Borland's Interbase 将会弹出一个错误对话框 Personal
EMAIL wyhsillypig@163。 34
…………………………………………………………Page 35……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Oracle7 的引擎将会出现如前所述的信息 并给出一个错误号码 所以当你手工输入 SQL
语句时会看到详细的错误信息 以及对错误的简要诠释
例子
在进一步学习之前 我们先来看一个将要在下面的例子中用到的数据库 这个数据库
体现了 SELECT 和 FROM 的基本功能 在实际应用时我们将会用到在第 8 天 熟练地操作
数据 中讲到的技巧来构建这个数据库 但是我们现在的目的是学习如何使用 SELECT 和
FROM 所以我们假设数据库已经建好了 本例中使用 CHECKS 表 这个表的内容如下
CHECK# PAYEE AMOUNT REMARKS
1 MaBell 150 Havesonsnexttime
2 ReadingR。R。 245。34 TraintoChicago
3 MaBell 200。32 CellularPhone
4 LocalUtilities 98 Gas
5 JoesStaleDent 150 Groceries
6 Cash 25 WildNightOut
7 JoansGas 25。1 Gas
你的第一个查询
输入
SQL》select * from checks
输出
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
6 Cash 25 Wild Night Out
7 Joans Gas 25。1 Gas
7 rows selected。
分析
请看例子的输出结果 注意第 1 列和第 3 列是右对齐的而第 2 列和第 4 列是左对齐的
EMAIL wyhsillypig@163。 35
…………………………………………………………Page 36……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
这是因为对于数字类型采用右对齐而对于字符类型则是采用左对齐的 数据的类型将在第
9 天的 表的建立与维护 中讨论
在 SELECT 中的*表示要返回 FROM 中所指定的表中的所有列 并按照数据库中的固
有顺序来排序
完成一个 SQL 语句
在 SQL 运行时 分号 即意味着通知解释程序当前语句已经结束 例如 SQL*PLUS
在没有遇到分号时将不会执行语句 但是在其它的 SQL 解释器中可能不会用到分号 例如
Microsoft Query 和 Borland's ISQL 不需要查询终止符 因为你是在编辑框中输入查询语句
并且当你在按下按钮以后才开始执行查询
对列进行排序
在前边的例子中使用了*来选择了选定表格中的所有列 并且是按照其在数据库中的固
定顺序来排序的 如果需要对特定的列排序 你应该按下边所写的那样输入
输入
SQL》 SELECT payee remarks amount check# from checks;
注意在 SELECT 子句中给出了每个列的名字 排序是根据列的先后顺序来进行的 注
意将最后列的列名与其后的子句 这里是 FROM 用空格分开 输出的结果如下
输出
PAYEE REMARKS AMOUNT CHECK#
Ma Bell Have sons next time 150 1
Reading R。R。 Train to Chicago 245。34 2
Ma Bell Cellular Phone 200。32 3
Local Utilities Gas 98 4
Joes Stale Dent Groceries 150 5
Cash Wild Night Out 25 6
Joans Gas Gas 25。1 7
7 rows selected。
这句话也可以写成下边的形式
输入
EMAIL wyhsillypig@163。 36
…………………………………………………………Page 37……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SELECT payee; remarks; amount; check#
FROM checks;
注意 这里的 FROM 子句已经写到第二行了 这是一种个人习惯 其输出的结果如下
输出
PAYEE REMARKS AMOUNT CHECK#
Ma Bell Have sons next time 150 1
Reading R。R。 Train to Chicago 245。34 2
Ma Bell Cellular Phone 200。32 3
Local Utilities Gas 98 4
Joes Stale Dent Groceries 150 5
Cash Wild Night Out 25 6
Joans Gas Gas 25。1 7
7 rows selected。
分析
语句的格式变更不会对输出的结果造成影响 现在你已经知道了如何对输出的结果进
行排序 试着将表格的列按照你的要求进行排序
选择特定的列
如果你不想看到数据库中的每一列 当然 你使用 SELECT *将所有的列显示出是可
行的 但是如果你只想看一下 CHECKS 中的号码与数量列 那么你可以输入如下语句
输入
SQL》 SELECT CHECK#; amount from checks;
输出
CHECK# AMOUNT
1 150
2 245。34
3 200。32
4 98
5 150
6 25
7 25。1
现在你可以按要求显求所需要的列 注意大小写的使用 它不会对查询的结果造成影
EMAIL wyhsillypig@163。 37
…………………………………………………………Page 38……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
响
如何从不同的表中查找到所需要的信息呢
从不同的表中选择
假设你有一个名为 DEPOSITS 表 其内容如下
输出
DEPOSIT# WHOPAID AMOUNT REMARKS
1 Rich Uncle 200 Take off Xmas list
2 Employer 1000 15 June Payday
3 Credit Union 500 Loan
分析
你需要对数据源作一下简单的改动
查找不重复的数据
如果你看过原来的 CHECKS 表 你会发现其中有一些数据是重复的 例如 AMOUNT
列
输入
SQL》 select amount from checks
输出
AMOUNT
150
245。34
200。32
98
150
25
25。1
请注意 150 在这里是重复的 如果你只想查看不重复的数据 可以这样做
输入
SQL》 select DISTINCT amount from checks;
输�