多表查询以及数据库事务相关

数据库的三大范式

第一范式:1NF

        数据库表中每一列是不能再拆分的原子数据项,如果出现复合列,必须单独列出来

第二范式:2NF

        在1NF的基础上,数据库中一张表描述一件事,且表中的非主键字段必须完全依赖于主键字段,完全依赖是指不能存在仅依赖主键一部分的列

第三范式:3NF

        在2NF的基础上,任何非主列不得传递依赖于主键

多表查询

内连接,外连接,子查询(实际开发中使用不到,执行sql小绿太低)

内连接

        隐式内连接---看不到join关键字,使用where条件

                语法: select 字段列表 from 表名名1,表名名2 where 连接条件 ;

        显示内连接---inner join 关键字 ,inner可以省略

                语法: select 字段列表 from 表名名1 inner join 表名名2 on 连接条件;

外连接

        左外连接(推荐)

                左外连接:将左边表数据以及满足两种表条件的数据全部展示;

                        语法:select 字段列表 from 表名1 left outer join 表名2 on 连接条件;

        右外连接

                语法:select 字段列表 from 表名1 left outer join 表名2 on 连接条件

子查询:select 语句嵌套select语句

        这种场景实际开发使用很少,查询的效率比较低,常用where条件使用比较运算符,或者使用in集合语句,或者使用一条select语句的结果作为一个"虚表"和其他表查询

数据库事务以及数据库事务的隔离级别

数据库事务

        在实际开发中,当这个业务需要同时操作多个sql,或者多张表同时添加、删除、修改,将整个业务操作整体使用事务管理起来,要么他们同时执行成功,要么同时执行失败

        关系型数据库:事务是默认自动提交的

        要启用事务管理业务操作的话,必须为"手动提交"

                开启事务: start transaction;

                如果执行多个sql时出现问题(异常),将事务回滚: rollback;

                提交事务: commit;

关系型数据库事务的特点(重点)--- 传统型事务的特点(ACID)

        原子性: 使用事务管理的业务操作(执行多个sql),要么同时执行成功,要么同时失败

        一致性: 在事务管理的业务操作过程中,执行之前和执行之后它的数量总量不变

        隔离性: 业务和业务之间是独立,业务又需要被事务管理,事务和事务之间是独立的,相互之间不影响,分离开来

        持久性: 针对增删改操作,只要提交事务,即使关机了,数据永久保存

数据库事务的隔离级别

        read uncomitted;

                读未提交(会产生最严重的问题:脏读(一个事务读到另一个没有提交事务))

        read committde;

                读已提交,可以有效防止脏读,但是会现在一个问题"不可重复读"(在提交事务之前和事务,数据不一致!)

        repeatable read ;

                可重复度(mysql默认的隔离级别,可以有效防止脏读以及不可重复读,会出现"幻读")

        serializable;

                串行话:级别最高,安全性最高,但效率最低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值