【数据库基础】用SQL语言关键字表示关系代数的交 并 差 内连接 外连接操作
来源:互联网 发布:如何编译linux源码 编辑:程序博客网 时间:2024/06/04 20:50
关系代数转换为SQL语言还存在着一个思维的转换。一般转换的过程如下:
SQL语言进行查询时用select….from…..where……
同时有多个条件约束时,用and or。其实本质上就是关系代数中的操作,select 就是关系代数中的投影,from后面跟着多个表名时,这些表就默认做笛卡尔积。where 后面的子句就是对表中的每一个元组进行筛选过滤,选出符合条件的元组,用到的and和or 对应关系代数中的交(intersect)和并(union)、。最后形成新表。
所以我们能不能直接用SQL语言更直接表达关系代数语句呢?
SQL提供了一些关键字来直接翻译关系代数语句。
交
如:求学过001号课程或者学过002号课程的同学的学号。
select S# from Sc where C#="001"unionselect S# from Sc where C#="002";
or
select S# from Scwhere C#="001" or C#="002";
并
如:既学过001号课程又学过002号课程的同学的学号。
select S# from Sc where C#="001"intersectselect S# from Sc where C#="002";
or
select S# from Sc where C#="001" and S# in (select S# from sc where C#="002");
差
eg:假定所有学生都有选课,求没学过002号课程的学生。
select distinct S# from Scexceptslect S# from Sc where C#="002";
or
select S# from Sc Sc1where not exists (select * from Sc SC2 where C#="002" and Sc.S#=Sc.S#);
有些低版本的DBMS不支持intersect 和expect
内链接:
为了方便,语法都按两个表连接写得。
1.θ连接
基本语法:
select 列名 [,[列名]……]from 表名1 inner join 表名2 {on 连接条件 | using (colname)(,{colname……})}}where 检索条件
2 自然连接
select 列名 [,[列名]……]from 表名1 natural join 表名2 where 检索条件
外连接
基本语法:
select 列名 [,[列名]……]from 表名1 {left outer|right outer|full outer} join 表名2 {on 连接条件 | using (colname)(,{colname……})}where 检索条件
eg:
阅读全文
0 0
- 【数据库基础】用SQL语言关键字表示关系代数的交 并 差 内连接 外连接操作
- [数据库] 关系代数θ连接操作与除操作
- SQL多表连接查询与集合的并、交、差运算查询
- SQL三表连接查询与集合的并、交、差运算查询
- 各种数据库的交、差、并的SQL实现
- 详解 SQL 对集合的操作:交、差、并
- 详解 SQL 对集合的操作:交、差、并
- 【数据库关系模型之关系代数】θ连接,等值连接和自然连接之间的差异
- 关系数据库中关系表间的连接(左连接,右连接,内连接,全连接,外连接) .
- 关系数据库中关系表间的连接(左连接,右连接,内连接,全连接,外连接)
- 关系数据库中关系表间的连接(内连接,外连接,左连接,右连接,全连接)
- 关系数据库中关系表间的连接(左连接,右连接,内连接,全连接,外连接)
- 关系数据库中关系表间的连接(左连接,右连接,内连接,全连接,外连接)
- SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN)
- SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN)
- [转]SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN)
- SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN)
- SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN)
- 生成对抗网络GAN损失函数Loss的计算
- YUV格式
- 使用TP3.2框架时遇到Call to a member function assign() on a non-object
- angularjs中日期的回显
- CCF 201609-1最大波动java
- 【数据库基础】用SQL语言关键字表示关系代数的交 并 差 内连接 外连接操作
- 微信小程序-问题:未找到入口 app.json 文件
- Oracle杀死死锁
- Java实现RC4加密算法、RSA算法、MD5算法
- jquery serializeobject();方法序列化表单的属性,返回字符串。
- Socket通信,简单的用两个手机实现TCPIP
- C++学习笔记(二):内联函数inline
- 人工智能之机器学习算法体系汇总
- 换钱的方法数