按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
输入/输出
SQL》 SELECT LASTNAME WORKAHOLICS
2 FROM VACATION
3 WHERE YEARS 》= 5
4 AND
5 ((YEARS *12)…LEAVETAKEN)/(YEARS * 12) 《 0。50
WORKAHOLICS
BAKER
BLEDSOE
给这些人放假吧 也让我们结束对 AND 的学习
OR
你也可以使用 OR 来对几个条件进行合并 当其中的任一个条件为真时 其结果就会为真
值 为了展示它与 AND 的不同 下面我们用 OR 来换掉上一个例子中的 AND
输入:
SQL》 SELECT LASTNAME WORKAHOLICS
2 FROM VACATION
3 WHERE YEARS 》= 5
4 OR
5 ((YEARS *12)…LEAVETAKEN)/(YEARS * 12) 》= 0。50
输出:
EMAIL wyhsillypig@163。 55
…………………………………………………………Page 56……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
WORKAHOLICS
ABLE
BAKER
BLEDSOE
BOLD
COSTALES
分析
上例中的结果仍然在其中 但是我们又多个几个记录 这几个记录出现的原因是它们满足
我们所提出的条件中的一个 OR 只要记录满足其中的一个条件就会把记录返回
NOT
顾名思义 它对条件取反 条件为假时结果为真 条件为真时结果为假
下边的 SELECT 子句将返回所有开头的名字不是 B 的员工
输入
SQL》 SELECT *
2 FROM VACATION
3 WHERE LASTNAME NOT LIKE 'B%'
输出:
LASTNAME EMPLOYEENUM YEARS LEAVETAKEN
ABLE 101 2 4
COSTALES 211 10 78
当 NOT 应用于NULL 时可以使用操作符 IS 让我们再来看一下 PRICES 表中WHOLESALE
列 ORANGES 记录中的空值
输入/输出:
SQL》 SELECT * FROM PRICE
ITEM WHOLESALE
TOMATOES 。34
POTATOES 。51
BANANAS 。67
TURNIPS 。45
CHEESE 。89
APPLES 。23
ORANGES
7 rows selected。
想找出所有的非空项 可以写出如下语句
输入/输出:
SQL》SELECT * FROM PRICE WHERE WHOLESALE IS NOT NULL
ITEM WHOLESALE
TOMATOES 。34
POTATOES 。51
BANANAS 。67
TURNIPS 。45
CHEESE 。89
APPLES 。23
6 rows selected。
集合运算 SET
在第一天 介绍 SQL 中我们已经知道了 SQL 是基于集合的理论的 下面这一部分将讨论
集合运算
UNION 与 UNION ALL
UNION 将返回两个查询的结果并去除其中的重复部分 下边有两个值勤人员表
EMAIL wyhsillypig@163。 56
…………………………………………………………Page 57……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输入:
SQL》 SELECT * FROM FOOTBALL
输出:
NAME
ABLE
BRAVO
CHARLIE
DECON
EXITOR
FUBAR
GOOBER
7 rows selected。
输入:
SQL》 SELECT * FROM SOFTBALL
输出:
NAME
ABLE
BAKER
CHARLIE
DEAN
EXITOR
FALCONER
GOOBER
7 rows selected。
在这两个表中有哪些不重复的人员呢
输入/输出:
SQL》 SELECT NAME FROM SOFTBALL
2 UNION
3 SELECT NAME FROM FOOTBALL
NAME
ABLE
BAKER
BRAVO
CHARLIE
DEAN
DECON
EXITOR
FALCONER
FUBAR
GOOBER
10 rows selected。
UNION 返回了两个表中的 10 个记录 它们是不重复的 但是两个表中共有多少人呢 包
括重复的人员
输入/输出:
SQL》 SELECT NAME FROM SOFTBALL
2 UNION ALL
3 SELECT NAME FROM FOOTBALL
NAME
ABLE
EMAIL wyhsillypig@163。 57
…………………………………………………………Page 58……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
BAKER
CHARLIE
DEAN
EXITOR
FALCONER
GOOBER
ABLE
BRAVO
CHARLIE
DECON
EXITOR
FUBAR
GOOBER
14 rows selected。
分析
可以看到 UNION ALL 与 UNION 一样对表进行了合并 但是它不去掉重复的记录 可是
如果我们想知道都有谁同时在两个表中呢 UNION 无法做到这一点 我们需要学习使用
INTERSECT
INTERSECT 相交
INTERSECT 返回两个表中共有的行 看下例 它将返回两个表中有存在的员工
输入:
SQL》 SELECT * FROM FOOTBALL
2 INTERSECT
3 SELECT * FROM SOFTBALL
输出
NAME
ABLE
CHARLIE
EXITOR
GOOBER
分析
这些记录是两个表中都存在的
MINUS 相减
MINUS 返回的记录是存在于第一个表中但不存在于第二个表中的记录 例如
输入:
SQL》 SELECT * FROM FOOTBALL MINUS SELECT * FROM SOFTBALL
输出
NAME
BRAVO
DECON
FUBAR
上例中显示了三个不在垒球队中的足球队员 如果你把语句的次序颠倒 那么你将得到在
垒球队中但不在足球队中的队员
输入:
SQL》 SELECT * FROM SOFTBALL MINUS SELECT * FROM FOOTBALL
输出
NAME
BAKER
DEAN
EMAIL wyhsillypig@163。 58
…………………………………………………………Page 59……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
FALCONER
从属运算 IN and BETWEEN
这两个运算符对你已经做过的例子提供了更快捷的操作 如果你想找一个你在 Colorado;
California;和 Louisiana 的朋友 可以输入
输入:
SQL》 SELECT * FROM FRIENDS WHERE STATE= 'CA' OR STATE ='CO' OR STATE =
'LA'
输出