输入/输出 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" 输出