SQL表达式,条件语句与运算
2017-04-17 14:37
274 查看
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 操作将包
括边界值
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 操作将包
括边界值
相关文章推荐
- SQL_3_表达式、条件语句与运算
- SQL重入门(2)--Select语句、表达式、条件语句与运算
- SQL--表达式,条件语句,运算和WHERE子句 (2)
- Shell脚本[运算表达式,条件控制语句]
- C# -- lambda表达式转为where条件sql语句的方法2
- Shell脚本[运算表达式,条件控制语句]
- C# -- lambda表达式转为where条件sql语句的方法
- 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
- Sql 查询语句中 Where条件语句中 元操作符的运算优先顺序
- SQL 查询语句中交叉条件的应用!
- 如何用sql语句对性别的 约束条件让它只能填 男 或 女
- sql语句根据特定条件改变排序及效率测试
- 实现多条件模糊查询SQL语句
- 多条件搜索时sql语句的自动生成
- sql语句中的条件控制 case ..when.
- 对条件子句中带IN的SQL语句使用绑定变量
- sql语句根据特定条件改变排序及效率测试
- 用在ObjectDataSource里的一条多条件SQL语句构造
- SQL条件判断语句
- 多项查询条件组合下的SQL语句生成