前情提要:没系统学过数据库,但是做过简单的网页,知道从数据库中选取一些信息展示到网页上面,同时较熟悉pandas中对Dataframe的操作,因此这里有时候会将数据库和pandas的一些操作进行比较
图片来源:北师大慕课
一些概念
SQL 语言: structural request language
ACID: Atomicity原子性 Consistency一致性 Isolation隔离性 Durability耐久性
增删改查CRUD
-
C:create,向数据库插入一条记录;
常用操作格式:
insert into users(username,password) values(?,?); -
R:read,查询数据库记录;
常用操作格式:
select * from users; -
U:update,修改数据库记录;
常用操作格式:
update users set password=? where username=?; -
D:delete,删除数据库记录。
常用操作格式:
delete from users where id=?;
基本关系代数运算
关系数据库系统中 表 是 关系 ,行是元组

1. 选择
σ e e i d = 19215588 ( e x a m i n e e ) \sigma_{eeid=19215588}(examinee) σeeid=19215588(examinee) 选出符合条件的元组组成新关系,类似于pandas的df的query
2. 投影
Π e e i d ( e x a m i n e r ) \Pi_{eeid}(examiner) Πeeid(examiner) 选出子集
3. 笛卡尔积
像合并两张表, 左边的关系如果有三个元组,右边的关系有4个元组,那运算得到的关系有12个元组。
附加关系代数运算

-
自然联结和集合交:类似于pandas里面的merge
自然联结: 做笛卡尔积之后,根据两列的共同属性进行合并,也就是pandas的merge(on='column_name', how='inner'),表达式为 e x a m i n e e ∞ d e p a r t m e n t examinee\space \infty \space department examinee ∞ department
集合交:也是类似的,表达式如 π e e i d ( e x a m i n e e ) ∩ π e e i d ( e x a m p a p e r ) \pi_{eeid}(examinee) \cap \pi_{eeid}(exampaper) πeeid(examinee)∩πeeid(exampaper) -
属性联结:指定对应列联结,与自然联结的区别如下所示:

-
条件联结: e x a m i n e e ∞ e x a m i n e e . d n a m e = d e p a r t m e n t . d n a m e d e p a r t m e n t examinee\space \infty_{examinee.dname=department.dname} \space department examinee ∞examinee.dname=department.dname department
-
赋值运算:

扩展关系代数运算

- 广义投影:这个没什么好说的,就是根据运算找到符合条件的投影
- 聚集:就是对列进行运算,avg,sum 等等。还有分组聚集,就是pandas里面的groupby如下面的例子
d n a m e G a v g ( e r a g e ) ( e x a m i n e r ) _{dname}G_{avg(erage)}(examiner) dnameGavg(erage)(examiner)
如果我们用pandas来写呢?就是:df.group_by(["dname"]).avg() - 外联结,merge之后left,right,inner 和 outer(Full,F)例子如下:

这篇博客介绍了SQL关系模型,包括一些核心概念如ACID原则和CRUD操作,以及基本和扩展的关系代数运算。通过与pandas操作的对比,阐述了选择、投影、笛卡尔积等概念,并提及了自然联结、集合交、属性联结和聚集等高级运算。

7350

被折叠的 条评论
为什么被折叠?



