SQL的理论基础-关系代数

关系代数

关系代数是一种对数据集的抽象,定义了一个或多个的集合以及针对这些集合的一套运算规则。是sql语言的理论基础。其发明本身为解决运算问题。

集合运算

运算符含义英文
Union
Difference
Intersection
×笛卡尔积Cartesian Product

比较运算

>大于 ≥大于 =等于 <小于 ≤小于 ≠不等于

关系运算符

运算符含义英文
σ选择Selection
π投影Projection
链接Join
÷Division

关系代数运算

  • 并 full join
  • 广义笛卡尔积
  • 投影(筛选列并去重)
  • 选择

外连接

  • left/right join

SELECT * FROM tb left join ta on ta.a=tb.x;

  • full join

SELECT * FROM tb full join ta on ta.a=tb.x;

full join:Oracle 支持,Mysql 不支持但可以通过过左外连接 + union + 右外连接来间接实现(注意是union不是union all)

  • inner join 取交集,等同于left join 去掉右表为空的,或 right join 去掉左表为空的

SELECT * FROM tb inner join ta on ta.a=tb.x;

  • cross join 笛卡尔积(在不加条件的情况下)

SELECT * FROM tb cross join ta;

  • 相等关系
    • FROM tb,ta == cross join = 笛卡尔积
    • FROM tb,ta where 条件 == cross join on 条件 == inner join
    • full join == left join union right join

from left join on 和 from where 条件的区别

  • left join on
    • 条件是用来生成临时表的。以左表为主表(结果可能会重复)根据 on 条件去找作为从表的右表里符合条件的值合在一起。
    • 如果右表出现 on 条件中的字段值重复会出现,左表的列为了对应右表重复的值,而出现多条拷贝来对应右表中条件相同的记录。这个时候可以通过在 on 条件中用 and 来增加筛选条件。
  • where
    • 条件是在生成临时表(笛卡尔积)之后,再对临时表进行约束。
  • cross join
    • 等同于 where

SQL语言执行顺序

1 from
2 join
3 on
4 where(约束声明。不能使用列别名,Mysql 会报:1054 - Unknown column)
5 group by(可以开始使用列别名)
6 avg/ sum/ count/ max/ min/
7 having(过滤声明。having的原理是先select 然后从select出来的进行筛选。而where是先筛选在select。)
8 select(特指 select 层的操作,如 select if(battery >= 50, 1, 0) 是先得到结果再进行 if 判断)
9 distinct
10 order by
11 limit

SQL语言的分类

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值