友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第14部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
成如下方式
输入/输出
SQL》 SELECT * FROM FRIENDS WHERE AREACODE》=300
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
BULHER FERRIS 345 555…3223 IL 23332
当然 你使用 AREACODE》299 时会得到相同的结果
注 在这个语句中 300 没有使用引号 对于数字型字段是不需要加引号的
小于与小于等于
如你所料 它们的使用方法与大于和大于等于操作相同 但结果相反
输入
SQL》 SELECT * FROM FRIENDS WHERE STATE《 LA
输出
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
BUNDY AL 100 555…1111 IL 22333
MERRICK BUD 300 555…6666 CO 80212
BULHER FERRIS 345 555…3223 IL 23332
注 为什么 STATE 会变成 ST 呢 这是因为这一列只有两个字符宽 所以结果只会返回两
个字符 如果列为 COWS 那么它将会显示成 CO 而 AREACODE 和 PHONE 所在列的
列宽大于它们自身的名字 所以它们不会被截去
分析
请等一下 你现在知道《 在字符字段中的用法了吗 当然知道了 你可以在各种数据类型
中进行你想要的比较操作 结果会因数据类型的不同而不同 例如 你在下例中使用小写
字符
输入/输出
EMAIL wyhsillypig@163。 50
…………………………………………………………Page 51……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》SELECT * FROM FRIENDS WHERE STATE 《 la
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
BUNDY AL 100 555…1111 IL 22333
MEZA AL 200 555…2222 UK
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
BULHER FERRIS 345 555…3223 IL 23332
分析
因为大写的字母代码比小写的小 所以大写的字符总是排在小写字符的前面 这里再说一
次 为了保证安全 请在执行前检查大小写情况
技巧 想知道你所进行操作的结果 那你先要检查一下你的电脑所采用的字符编码集 PC
机解释器使用的是 ASCLL 编码 而其它平台则使用 EBCDIC 编码
要想在结果中显示 Louisiana 键入
输入/输出
SQL》 SELECT * FROM FRIENDS WHERE STATE SELECT * FROM FRIENDS WHERE FIRSTNAME AL
输出
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
BULHER FERRIS 345 555…3223 IL 23332
想找一下不在 California 住的人 可以写成
输入/输出:
SQL》 SELECT * FROM FRIENDS WHERE STATE != CA
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
BUNDY AL 100 555…1111 IL 22333
MEZA AL 200 555…2222 UK
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
BULHER FERRIS 345 555…3223 IL 23332
注意 =和符号都表示不等于
字符操作
无论数据的输出是否为有条件输出 你都可以对其中的字符串进行操作 本部分将会讲述
两个操作符 LIKE 和|| 以及字符串连接的概念
LIKE
如果你想从数据库中选出一部分数据并把它们添到一个模板中 并且不需要非常精确的匹
配 你可以用 = 来对每一种可能的情况进行操作 但是这一过程烦琐而又耗时 这时
你可以使用 LIKE 如下例
输入
EMAIL wyhsillypig@163。 51
…………………………………………………………Page 52……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》SELECT * FROM PARTS
输出
NAME LOCATION PARTNUMBER
APPENDIX MID…STOMACH 1
ADAMSAPPLE THROAT 2
HEART CHEST 3
SPINE BACK 4
ANVIL EAR 5
KIDNEY MID…BACK 6
你怎样找出其中有 BACK 的记录呢 粗看一下这里有两个记录 可不幸的是它们有一点差
别
请试一下
输入/输出:
SQL》SELECT * FROM PARTS WHERE LOCATION LIKE %BACK%
NAME LOCATION PARTNUMBER
SPINE BACK 4
KIDNEY MID…BACK 6
你可能注意到了在这条语句的 LIKE 后边使用了% 在 LIKE 表达式中 %是一种通配符
它表示可能在 BACK 中出现的其它信息 如果你输入如下
输入
SQL》SELECT * FROM PARTS WHERE LOCATION LIKE BACK%
你将会检索到所有以 BACK 开头的 LOCATION 记录
输出
NAME LOCATION PARTNUMBER
SPINE BACK 4
如果你输入
输入
SQL》 SELECT * FROM PARTS WHERE NAME LIKE A%
你将会得到所有 NAME 中以 开头的记录
输出
NAME LOCATION PARTNUMBER
APPENDIX MID…STOMACH 1
ADAMS APPLE THROAT 2
ANVIL EAR 5
那么 LIKE 语句是否对大小写敏感呢 请看下边的例子
输入/输出:
SQL》 SELECT * FROM PARTS WHERE NAME LIKE 'a%'
no rows selected
分析
回答是敏感的 当涉及到数据是时候总是大小写敏感的
如果你想查找在某一确定的位置上有字符的数据时你应该如何去做呢 你可以使用另一个
通配符 — — 下划线
下划线 _
输入
SQL》 SELECT * FROM FRIENDS
输出
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
EMAIL wyhsillypig@163。 52
…………………………………………………………Page 53……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
BUNDY AL 100 555…1111 IL 22333
MEZA AL 200 555…2222 UK
MERRICK UD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
BULHER FERRIS 345 555…3223 IL 23332
PERKINS ALTON 911 555…3116 CA 95633
BOSS SIR 204 555…2345 CT 95633
如果你想查找所有以 开头的州 可以使用如下语句
输入/输出
SQL》 SELECT * FROM FRIENDS WHERE STATE LIKE C_
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555…6666 CO 80212
PERKINS ALTON 911 555…3116 CA 95633
BOSS SIR 204 555…2345 CT 95633
也可以在一个语句中使用多个下划线 如
输入/输出
SQL》 SELECT * FROM FRIENDS WHERE PHONE LIKE 555…6_6_
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
这个语句也可以写成如下形式
输入/输出
SQL》 SELECT * FROM FRIENDS WHERE PHONE LIKE 555…6%
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
看 它们的结果是一样的 这两个通配符也可以联合起来使用 下边的例子将找出所有的
第 个字母为 的记录
输入 输出
SQL》 SELECT * FROM FRIENDS WHERE FIRSTNAME LIKE _L%
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
BUNDY AL 100 555…1111 IL 22333
MEZA AL 200 555…2222 UK
PERKINS ALTON 911 555…3116 CA 95633
连接
可以将两个字符串连接起来 例如
输入
SQL》 SELECT FIRSTNAME || LASTNAME ENTIRENAME FROM FRIENDS
输出
ENTIRE NAME
AL BUNDY
AL MEZA
BUD MERRICK
JD MAST
FERRIS BULHER
ALTON PERKINS
SIR BOSS
7 rows selected。
EMAIL wyhsillypig@163。 53
…………………………………………………………Page 54……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
分析
请注意这里使用的是 而不是 号 如果你试图使用 号来连接两个字符串的话 对于我
们使用的 SQL 解释程序(Personal Oracle7)将会产生如下错误信息
输入/输出
SQL》 SELECT FIRSTNAME LASTNAME ENTIRENAME FROM FRIENDS
ERROR
ORA…01722 invalid number
它试图将两个数字做加法运算 但是它没有在表达式中找到任何数字
注 有一些解释器也采用加号来连接字符串 请检查一下你的解释器
对于连接字符串这里有更多的实例
输入/输出
SQL》 SELECT LASTNAME || || FIRSTNAME NAME FROM FRIENDS
NAME
BUNDY AL
MEZA AL
MERRICK BUD
MAST JD
BULHER FERRIS
PERKINS ALTON
BOSS SIR
7 rows selected。
分析
这条语句在姓与名之间插入了一个逗号
注 请注意在姓与名之间的多余的空格 这些空格是数据的一部分 对于确定的数据类型
空格将右填充至达到字段的设定宽度 请检查你的解释器 有关数据类型内容将在第 9 天
的 表的创建与维护 中讨论
至现在为止你已经学完了所有的比较操作符 对于一些问题这种方法非常好 可是如果你
是想找出所有的名字中的第一个字母为 P 并且他的应有的休假时间已经超过了 3 天的人
呢
逻辑运算
逻辑运算用于 SQL 的 WHERE 子句中将两个或更多条件组合在一起
休假的时间总是人们在工作时讨论的热门话题 现在我们来为财务部门设计一个名为渡假
VACATION 的表 内容如下
输入
SQL》 SELECT * FROM VACATION
输出
LASTNAME EMPLOYEENUM YEARS LEAVETAKEN
ABLE 101 2 4
BAKER 104 5 23
BLEDSOE
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!