SQL关系模型

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

前情提要:没系统学过数据库,但是做过简单的网页,知道从数据库中选取一些信息展示到网页上面,同时较熟悉pandas中对Dataframe的操作,因此这里有时候会将数据库和pandas的一些操作进行比较
图片来源北师大慕课

一些概念

SQL 语言: structural request language
ACID: Atomicity原子性 Consistency一致性 Isolation隔离性 Durability耐久性
增删改查CRUD

  1. C:create,向数据库插入一条记录;
    常用操作格式:
    insert into users(username,password) values(?,?);

  2. R:read,查询数据库记录;
    常用操作格式:
    select * from users;

  3. U:update,修改数据库记录;
    常用操作格式:
    update users set password=? where username=?;

  4. 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)例子如下:
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值