按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
如果你想查找所有以 开头的州 可以使用如下语句
输入/输出
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 107 8 45
BOLIVAR 233 4 80
BOLD 210 15 100
COSTALES 211 10 78
6 rows selected。
假设你的公司的雇员每年可以有 12 天的休假时间 现在使用你所知道的逻辑运算来实现以
下要求 名字是以 B 开头并且他的休假时间已经超过了 50 天的员工
输入/输出
EMAIL wyhsillypig@163。 54
…………………………………………………………Page 55……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》 SELECT LASTNAME YEARS * 12 LEAVETAKEN REMAINING
FROM VACATION WHERE LASTNAME LIKE B% AND
YEARS *12 LEAVETAKEN 50
LASTNAME REMAINING
BLEDSOE 51
BOLD 80
分析
这个查询语句是你讫今为止学到的最为复杂的语句 SELECT 子句中使用了算术运算符来
确定每一个员工还有多少天剩余的假期 标准的算式为 YEARS * 12 – LEAVETAKEN 而
更为清楚的表达方法为 YEARS * 12) LEAVETAKEN
LIKE 中使用了通配符%来发现所有的以 B 开头的员工 而比较运算的 则用来发现所有休
假时间超过 50 天的员工
这里我们使用了逻辑运算符号 AND 来使查找到的记录同时满足两个条件 带下划线的
AND
AND 只有当两个表达式的值都为真的时候才会返回真 如果任意一个表达式的值不是真
那么结果就会是假的 例如 找一下在你的公司中工作不超过 5 年但是剩余的休假时间超
过 20 天的员工
输入
SQL》 SELECT LASTNAME FROM VACATION WHERE YEARS20
输出
LASTNAME
BAKER
BOLIVAR
如果你想知道在你的公司中工作时间 年以上人员工和休假时间不足已有假期的 的
员工呢 你可以写成下边这样
输入/输出
SQL》 SELECT LASTNAME WORKAHOLICS
2 FROM VACATION
3 WHERE YEARS 》= 5