【Java EE】Day04 MySQL多表、事务、事务隔离级别、DCL
一、多表查询
1、概述
- 笛卡尔积:两集合的所有组成情况
- 多表查询:消除笛卡尔积得到的无用数据
2、分类
- 内连接查询(满足指定条件无空值,只显示有关联的数据)
- 隐式内连接:使用where限制消除无用数据
- 显式内连接:SELECT * FROM emp INNER JOIN dept ON emp.dept_id=dept.id;
- 外连接查询
- 左外连接:left [outer] join,查询左表所有数据及其交集(以左表为参照)
- 右外连接:right[outer] join,查询右表所有数据及其交集
- 子查询
- 概念:查询中嵌套查询
- 不同结果:
- 单行单列
- 多行单列
- 多行多列
二、事务
1、概念
- 多个步骤的业务操作,要么同时成功要么同时失败(如转账)
- 操作的过程
- 开启事务:start transaction
- 回滚:rollback
- 提交:commit
-- 创建数据表
CREATE TABLE account (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
balance DOUBLE
);
-- 添加数据
INSERT INTO account (NAME, balance) VALUES ('zhangsan', 1000), ('lisi', 1000);
-- 0 开启事务
START TRANSACTION;
-- 1张三给李四转账500元
-- 2查询张三账户余额是否大于500
-- 3张三账户-500
UPDATE account SET balance = balance - 500 WHERE NAME='zhangsan';
-- 李四账户+500
-- 出错了
UPDATE account SET balance =balance + 500 WHERE NAME='lisi';
SELECT * FROM account;-- 临时数据的变化,不是持久的变化
-- 发现执行没有问题,提交事务
COMMIT;
-- 发现出问题了,应该 回滚事务
ROLLBACK;-- 回滚,保证账户的安全性
2、事务提交方式
- 自动提交(默认,-1),每条DML语句都会自动提交一次事务
- 手动提交(0):先开启事务再提交
- 修改默认方式:set @@autocommit=0;
3、事务的四大特征:
- 原子性:不可分割的最小操作单位,要么同时成功,要么同时失败
- 持久性:事务一旦提交/回滚,数据库会持久化的保存数据
- 隔离性:多个事务之间,相互独立。
- 一致性:事务操作前后,数据总量不变
4、事务的隔离级别
- 概念:多个事务操作同一批数据,会引发一些问题,通过设置不同隔离级别进行解决
- 存在的问题:
- 脏读:读取到另一个事务中没有提交的数据
- 不可重复读(虚读):同一事务读取到的数据不一样
- 幻读:事务查询不到另一事务添加到的数据(读取不到另一个事务中提交的数据)
- 不同的事务隔离级别
- read uncommitted
- 读未提交
- 产生问题:脏读、不可重复读、幻读
- read committed(Oracle默认)
- 产生问题:不可重复读、幻读
- repeatable read(MySQL默认)
- 产生问题:幻读
- 可重复读
- serializable:
- 串行hang化,锁表,效率低
- 可以解决所有问题
- read uncommitted
- 设置事务的隔离级别:SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
三、DCL
1、概述
DDL、DML、DQL、DCL
2、对用户的管理操作
- 添加用户:
- CREATE USER '用户名@主机名' identify 密码;
- 在任意电脑上登录:CREATE USER '用户名@%' identify 密码;-- 表示远程登录
- 删除用户:
- DROP USER '用户名'@'主机名';
- 修改用户密码
- UPDATE USER SET PASSWORD=PASSWORD('新密码') WHERE USER='用户名';
- DCL特有简化方式:SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('密码');
- 忘记密码解决方案:

3、权限管理
- 查询权限
- SHOW GRANTS FOR '用户名'@'主机名';
- 授予权限
- GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
- 授予所有权限给所有表:GRANT ALL ON *.* TO 'zhangsan'@'localhost';
- 撤销权限
- REVOKE 权限列表 ON 数据库.表名 FROM '用户名'@'主机名';
【Java EE】Day04 MySQL多表、事务、事务隔离级别、DCL的更多相关文章
- 数据库事务的四大特性以及事务的隔离级别(mysql)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...
- MySQL事务的隔离级别
为什么需要隔离 当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种 ...
- MySQL数据库事务的四大特性以及事务的隔离级别
一.事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因 ...
- Java 事务的隔离级别
引言 之前关于事务的文章已介绍了事务的概念以及事务的四个属性(ACID),相信你对事务应该有所认识和了解. 本篇文章是关于事务的隔离性,介绍数据库提供的多种隔离级别. 数据库访问的并发性问题 所谓事务 ...
- MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转载)
http://www.imooc.com/article/17290 http://www.51testing.com/html/38/n-3720638.html https://dev.mysql ...
- 浅谈MySQL事务及隔离级别
目录 1.什么是事务 2.事务的ACID属性 2-1.原子性(Atomicity) 2-2.一致性(Consistency) 2-3.隔离性(Isolation) 2-4.持久性(Durability ...
- MySQL事务及隔离级别详解
MySQL事务及隔离级别详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的基本架构 MySQL的基本架构可以分为三块,即连接池,核心功能层,存储引擎层. 1> ...
- MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转)
本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理 ...
- MySQL数据库事务各隔离级别加锁情况--read uncommitted篇(转)
本文转自https://m.imooc.com/article/details?article_id=17291,感谢作者 1.目的 1.1 合适人群 1.数据库事务特征我只是背过,并没有很深刻的理解 ...
- MySQL 温故知心(二) 事务的隔离级别
事务的隔离级别 A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据但是 在A事务中查询的话 查到的都是操作之后的数据没有提交的数据只有自己看得到,并没有update到数据库 查看 ...
随机推荐
- 使用 EFKLK 搭建 Kubernetes 日志收集工具栈
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247491992&idx=1&sn=a770252759 ...
- Minio设置永久下载链接
目前了解到的有如下两种方法 建议采用第二种办法 第一种方法:设置Access Policy为public 不论文件是否已经操作过分享动作,只要存储桶中有这个文件就能通过如下形式直接访问: http:/ ...
- 第一章:模型层 - 5:模型的元数据Meta
模型的元数据,指的是"除了字段外的所有内容",例如排序方式.数据库表名.人类可读的单数或者复数名等等.所有的这些都是非必须的,甚至元数据本身对模型也是非必须的.但是,我要说但是,有 ...
- Elastic:Elastic Maps 基于位置的警报 - 7.10
文章转载自:https://elasticstack.blog.csdn.net/article/details/112535618
- Kafka Eagle 3.0.1功能预览
1.概述 最近有同学留言,关于Kafka Eagle的一些使用问题.今天笔者就为大家来详细介绍Kafka Eagle 3.0.1的功能以及使用方法. 2.内容 在3.0.1版本中,EFAK优化了分布式 ...
- [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论
前言 支持向量机(Support Vector Machine,SVM)在70年代由苏联人 Vladimir Vapnik 提出,主要用于处理二分类问题,也就是研究如何区分两类事物. 本文主要介绍支持 ...
- day44-反射03
Java反射03 3.通过反射获取类的结构信息 3.1java.lang.Class类 getName:获取全类名 getSimpleName:获取简单类名 getFields:获取所有public修 ...
- P7962 [NOIP2021] 方差 (DP)
题目的意思就是可以交换差分数组,对答案进行化简:n∑ai2−(∑ai)2 ,再通过手玩分析可得最优解的差分数组一定是单谷(可以感性理解一下),因此我们将差分数组排序,依次加入,每次可以选择加在左边 ...
- Vue学习之--------Vue中过滤器(filters)的使用(代码实现)(2022/7/18)
1.过滤器 1.1 概念 过滤器: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理). 语法: 1.注册过滤器:Vue.filter(name,callback) 或 new V ...
- CJK备注
pip清华镜像库 :pip install XXX -i https://pypi.tuna.tsinghua.edu.cn/simple pip阿里巴巴镜像库:pip install XXX -i ...