Java学习笔记_多表查询和事务安全
作者:互联网
三范式
范式( Normal Form)的基本分类:第一范式,第二范式,第三范式,巴斯-科德范式,第四范式,第五范式(完美范式)
第一范式:每列不可再分
第二范式: 一张表只描述一件事. 表中的每一个字段都依赖于主键
第三范式: 任何非主属性不依赖于其他非主属性(从表的外键必须使用主表的主键)
笛卡尔积现象
多表查询时左表的每条数据和右表的每条数据组合, 这种效果成为笛卡尔积
内连接
用左表的记录去匹配右表的记录,如果符合条件的则显示
1.隐式内连接: 看不到join关键字, 条件使用 where指定
2.显示内连接: 使用inner join...on 语句, 可以省略inner select 字段名 from 左表 inner join 右表 on 条件
左外链接
select 字段名 from 左表 left outer join 右表 on 条件; 用左表的记录去匹配右表
右外链接
select 字段名 from 左表 right outer join 右表 on 条件; 用右表的记录去匹配左表
子查询
一条select语句结果作为另一条select语句语法一部分
1.子查询结果只要是单列,肯定在where后面作为条件. 是单列多行的情况,结果集类似于一个数组,父查询使用IN运算符.
2.子查询的结果是多行多列,肯定在from后面作为表
事物务全
1.操作事物
手动提交事务
start transaction 开启事务
commit 提交事务
rollback 回滚事务
取消自动提交事务
set autocommit = 0;
2.回滚点
设置回滚点 savepoint 回滚点名字
回滚到回滚点 rollback to 回滚点名字
3.事物务四大特性
原子性(Atomicity)不可分割
一致性(Consistency)事务前后数据的完整性必须保持一致
隔离性(Isolation)多个事务间互不干扰
持久性(Durability)事物务提交,它对数据库的改变是永久的
4.事务的隔离级别
并发访问的问题
脏读:一个事物读取到了另一个事务尚未提交的数据
不可重复读:一个事务中两次读取的数据内容不一致,这是事务update时引发的问题
幻读:一个事务中两次读取的数据的数量不一致,这是insert或delete时引发的问题
MySQL数据库有四种隔离级别:上面的级别最低
读未提交 read uncommitted 都未解决
读已提交 read committed 解决了脏读(Oracle和SQL Server的默认隔离级别)
可重复读 repeatable read 解决了不可重复读和脏读(MySQL的默认隔离级别)
串行化 serializable 都解决了
MySQL事务隔离级别相关命令
1.查询全局事务隔离级别
show variable like '%isolation%';或select @@tx_isolation;
2.设置事务隔离级别
set global transaction isolation level 级别字符串;
标签:事务,多表,范式,笔记,右表,左表,Java,级别,select 来源: https://blog.csdn.net/zhenyuw123/article/details/90286839