数据库的交、并、差、笛卡尔积运算(代码实现)

数据库的交、并、差、笛卡尔积运算(代码实现)INTERSECT EXCEPT1 交运算 UNION 例 3 40 查询选修了号或号课程或二者都选修了的学生学号 课程号和成绩

大家好,欢迎来到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

(0)
上一篇 2025-09-25 21:20
下一篇 2025-09-25 21:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信