大家好,欢迎来到IT知识分享网。
前言
1. 并运算(UNION)
它可以对多个表进行查询也可以对单个表进行查询。
例如
(SELECT 学号, 姓名 FROM 学生表1 WHERE 性别 = '男' and 年龄 = 20) UNION (SELECT 学号, 姓名 FROM 学生表1 WHERE 性别 = '女' and 年龄 = 19)
(SELECT 学号, 姓名 FROM 学生表1 WHERE 性别 = '男') UNION (SELECT 学号, 姓名 FROM 学生表2 WHERE 性别 = '男')
(SELECT 学号, 姓名 FROM 学生表1 WHERE 性别 = '男') UNION (SELECT 学号, 姓名 FROM 学生表2 WHERE 性别 = '男') UNION (SELECT 学号, 姓名 FROM 学生表2 WHERE 年龄 = 18 and 性别 = '女')
同理,这个结果应为上次的结果加上(学生表2)中18岁的女生,这里就不画图了。感兴趣可以自己用DBMS软件调试。
2. 交运算(INTERSECT)
(SELECT 学号, 姓名 FROM 学生表1 WHERE 性别 = '男') INTERSECT (SELECT 学号, 姓名 FROM 学生表1 WHERE 年龄 = 18)
(SELECT 年龄 FROM 学生表1 WHERE 性别 = '男') INTERSECT (SELECT 年龄 FROM 学生表2 WHERE 性别 = '女')
3. 差运算(EXCEPT)
一个小插曲
在实验代码的时候发现minus一直报错,找了好久才知道minus是Oracle里面的语法,SQL server 应用 EXCEPT。
他也可以多语句同时使用,举例:
SELECT 学号 FROM 学生表1 WHERE 性别 = '男' except SELECT 学号 FROM 学生表1 WHERE 年龄 = 17 except SELECT 学号 FROM 学生表1 WHERE 年龄 = 18
4. 笛卡尔积运算
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}
lid | name |
---|---|
101 | 北京 |
102 | 太原 |
101 | NULL |
102 | NULL |
II表:
matid | qty | lid | mname |
---|---|---|---|
10011 | 1 | 101 | 北京 |
20012 | 1 | 102 | 太原 |
10011 | 1 | 102 | 太原 |
10011 | 1 | 102 | 太原 |
结果:
lid | name | matid | qty | lid | mname |
---|---|---|---|---|---|
101 | 北京 | 10011 | 1 | 101 | 北京 |
102 | 太原 | 10011 | 1 | 101 | 北京 |
101 | NULL | 10011 | 1 | 101 | 北京 |
102 | NULL | 10011 | 1 | 101 | 北京 |
101 | 北京 | 20012 | 1 | 102 | 太原 |
102 | 太原 | 20012 | 1 | 102 | 太原 |
101 | NULL | 20012 | 1 | 102 | 太原 |
102 | NULL | 20012 | 1 | 102 | 太原 |
101 | 北京 | 10011 | 1 | 102 | 太原 |
102 | 太原 | 10011 | 1 | 102 | 太原 |
101 | NULL | 10011 | 1 | 102 | 太原 |
102 | NULL | 10011 | 1 | 102 | 太原 |
101 | 北京 | 10011 | 1 | 102 | 太原 |
102 | 太原 | 10011 | 1 | 102 | 太原 |
101 | NULL | 10011 | 1 | 102 | 太原 |
102 | NULL | 10011 | 1 | 102 | 太原 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125580.html