友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第11部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
WHERE NAME LINCOLN
在这个例子中每一个字母都是大写的 但是这不是必需的 上边的查询语句完全可以
写成这样
select name startterm endterm
from presidents
where name LINCOLN
注意 LINCOLN 在这里仍然是大写的 尽管 SQL 语句对大小写并不敏感 但在数据
库中的数据却是大小写敏感的 举例来说 许多公司在储存数据时用大写字母 在这种情
况下 所有的字段名也将是大写字母 那么在检索条件为 name='Lincoln' 的数据时将不会得
到任何结果 这种情况在每个实例应用中都会遇到
注意 在 SQL 语句中大小写是不敏感的
现在我们来看另一个例子 在这个例子中的空格有问题吗 不是 这个语句完全可以
正常执行
Select name startterm endterm from presidents where name='LINCOLN'
但是 如果你注意在你的语句中使用空格和大写字母会增强语句的可读性 当它变成
你的工程 编程 的一部分时会更便于维护
另一个重要的特性是分号 当在 SQL 语句中出现分号就意味着本条语句已经结束
为什么在格式中大小写是不重要的 原因何在 答案是 — — 关键字 关键字是 SQL 语
法中的保留字 在 SQL 语句中 关键字是可选择的 但其内容有强制性 在本例中的关键
字有
SELECT
FORM
WHERE
看一下目录 你会找到需要在其它几天中学习的关键字
EMAIL wyhsillypig@163。 33
…………………………………………………………Page 34……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
数据报的形成 — — SELECT 和 FROM
随着对 SQL 的了解 你会发现你键入的 SELCT 和 FROM 在远远多于其它的关键字
它不像 CREATE 那样迷人或像 DROP 那样残忍 但是如果你在同计算机会话并需要计算机
返回结果时它们却是必不可少的 这与最初选择何种数据库没有关系
我们先从 SELECT 开始讨论 因为 SELECT 是在 SQL 中使用最为频繁的语句
语法
SELECT
没有其它的语句可以比 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;
输出
EMAIL wyhsillypig@163。 38
…………………………………………………………Page 39……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
AMOUNT
25
25。1
98
50
200。32
245。34
6 rows selected
分析
注意只有六行数据被选择 这是因为你使用了 DISTINCT 所有只有不重复的数据才
会被显示 ALL 是在 SELECT 中默认的关键字 你几乎从来也不会用到 ALL 因为 SELECT
与 SELECT ALL 是等价的
试一下这个例子 作为你对 SQL 的第一次 也是唯一的一次 实际体验
输入
SQL》 SELECT ALL AMOUNT
FROM CHECKS;
输出
AMOUNT
150
245。34
200。32
98
150
2
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!