SQL表达式,条件语句与运算

UNION 与UNION ALL
UNION 将返回两个查询的结果并去除其中的重复部分下边有两个值勤人员表
输入:
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

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

FALCONER
从属运算IN and BETWEEN
这两个运算符对你已经做过的例子提供了更快捷的操作如果你想找一个你在Colorado,
California,和Louisiana 的朋友可以输入
输入:
SQL> SELECT * FROM FRIENDS WHERE STATE= 'CA' OR STATE ='CO' OR STATE =
'LA'
输出
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555-6666 CO 80212
MAST JD 381 555-6767 LA 23456
PERKINS ALTON 911 555-3116 CA 95633
也可以输入
输入/输出:
SQL> SELECT * FROM FRIENDS WHERE STATE IN('CA','CO','LA')
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
MERRICK BUD 300 555-6666 CO 80212
MAST JD 381 555-6767 LA 23456
PERKINS ALTON 911 555-3116 CA 95633
分析
第二个实例比第一个更易读和简捷我想你一会再用以前的方法来工作了吧在IN 中也
可以使用数字例如
输入/输出:
SQL> SELECT *
2 FROM FRIENDS
3 WHERE AREACODE IN(100,381,204)
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
BUNDY AL 100 555-1111 IL 22333
MAST JD 381 555-6767 LA 23456
BOSS SIR 204 555-2345 CT 95633
如果你想要查找符合某一范围的记录例如
输入/输出:
SQL> SELECT * FROM PRICE WHERE WHOLESALE 0.25 AND WHOLESALE
0.75
ITEM WHOLESALE
TOMATOES .34
POTATOES .51
BANANAS .67
TURNIPS .45
或使用BEWTEEN 你可以这样写
输入/输出:
SQL>SELECT * FROM PRICE WHERE WHOLESALE BETWEEN 0.25 AND 0.75
ITEM WHOLESALE
TOMATOES .34
POTATOES .51
BANANAS .67
TURNIPS .45
看第二个是不是比第一个更清楚和易读
注如果批发价为0.25 的商品在表中存在那么它们也将会被返回BETWEEN 操作将包
括边界值
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值