初学javaDay23-MySQL篇

MySQL多表查询

多表查询分为如下三个: tips:[]括起来的表示可省略
1内连接查询
1.1 隐式内连接 :需要通过表与表的关系使用where普通条件查询

select  多个字段	from 表名1,表名2 where  条件(判断条件>=,=,...)		

1.2 显示内连接 (自连接 :有两张表 employee 通过别名的方式自连接)

select 多个字段 from 表名1 [inner] join 表名2  on 条件...	

2.外连接查询
2.1 左外连接:需要将左表的全部数据 以及交集部分(条件)显示出来 (后期在查询中使用居多!)

select 多个字段 from 表名1 left[outer] join 表名2 on 条件...

2.2 右外连接 :同理的

select 多个字段 from 表名1 right[outer] join 表名2 on 条件...			

3.子查询:查询中嵌套查询,被的嵌套查询称为子查询,分为三种情况
情况1:单行单列的 判断条件(=,>,>=,<=,<…) 被嵌套的查询语句 (具体的某个值) :使用聚合函数
情况2:单列多行的
举例员工工资是3000,5000,6000, …salary = 3000 or salary = 5000 or salary = 6000

select 多个表中的字段  from 表名    字段  in(子查询)	

情况3:多行多列

select 
					多个字段 
			  from
					表名1 别名,
					(select 相关字段 from  表名 where  条件) 别名			-- 虚表						
				where  条件判断....

MySQL事务

mysql默认自动提交,如果使用手动提交,最终没有提交话,最终结果不会出现!(增删改 DML)
1)start transaction ;
2) rollback;如果事务中存在异常:回到原始点
3)commit;手动提交事务

全局变量 mysql是否开启自动提交 (默认自动) @@ global (全局)
SELECT @@autocommit; 1为开启自动提交事务(默认值1)
SET @@autocommit = 0 ; 设置开启模式,0为手动开启事务

事务的隔离级别(了解) :多个事务操作同一个数据(并发)的时候,可能出现的一些问题(使用数据库的隔离级别来解决)
1.read uncommitted 读未提交 : 一个事务读取到另一个事务没有提交的数据(非常严重)
2.read committed 读已提交 : 能够防止脏读, 出现不可重复读的问题
3.repeatable read 可重复读 : 在每次读取到数据,应该是一样的 (mysql 默认的隔离级别),防止脏读,并且还可以防止不可重复读 ,但是不防止幻读!
4.serializable 串行化: 防止所有的事务隔离级别的问题 (脏读,不可重复读,幻读) 相当于多线程中的锁机制

隔离级别越高,性能越差,安全性越高

事务的特性(ACID):
原子性(Atomicity) 每个事务都是一个整体,要么同时成功 要么同时失败。 如:转账
一致性(Consistency) 处理事务前后的这数据的总量不变
隔离性(Isolation) 事务与事务之间不应该相互影响,执行时保持隔离的状态。(两个事务分别独立的)
持久性(Durability):存储数据的(持久化)
一旦事务执行成功,对数据库的修改是持久的。就算关机,也是保存下来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值