【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到数据库 查看 ...
随机推荐
- 【疑难杂症】关于pycharm无法安装插件显示网络错误问题
今天实在受不了英文的pycharm了,想着赶紧装个中文的插件,结果插件界面给我说我网络有问题 search results are not loaded check the internet conn ...
- Elasticsearch:Elasticsearch中的refresh和flush操作指南
在今天的文章里,我们来主要介绍一下Elasticsearch的refresh及flush两种操作的区别.如果我们从字面的意思上讲,好像都是刷新的意思.但是在Elasticsearch中,这两种操作是有 ...
- k8s集群中安装rook-ceph
容器的持久化存储 容器的持久化存储是保存容器存储状态的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件,实际上是保存在远程存储服务器上,或者以分布式的方式保 ...
- 示例:Ingress通过互联网访问应用
Ingress Ingress 是 Kubernetes 的一种 API 对象,将集群内部的 Service 通过 HTTP/HTTPS 方式暴露到集群外部,并通过规则定义 HTTP/HTTPS 的路 ...
- CAS核心思想、底层实现
★ 1.CAS 是什么 CAS 是比较并交换,是实现并发算法时常用到的一种技术.当内存的值和期望的值相等时,进行更新,否则 什么都不做 或 重来 . CAS 的底层实现:是靠硬件实现的,靠硬件的原子性 ...
- .NET下数据库的负载均衡(有趣实验)
相关下载: 数据库的负载均衡-示例代码(dp1-DbBalance.rar) 数据库的负载均衡-示例代码(dp1-DbBalance.rar) 支持.Net/.Net Core/.Net Framew ...
- 分享一个Vue实现图片水平瀑布流的插件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.需求来源 今天碰到了一个需求,需要在页面里,用水平瀑布流的方式,将一些图片进行加载,这让我突然想起我很久以前写的一篇文章<JS两 ...
- siteServer CMS知识点
1.结构说明 (1) 网站目录说明: a. 一个SitesServer后台只能建立一个主站,但可以建立多个子站,主站目录就是项目的根目录: b. 而子站的目录呢?是在主站目录下建立相应名称的目 ...
- PHP全栈开发(八):CSS Ⅵ 列表 style
列表分为有序列表和无序列表 我们知道有序列表的标签是<ol>意思是order list 无序列表的标签是<ul> 列表里面每项的标签用<li>来进行包裹. 使用CS ...
- ubuntu安装及使用
ubuntu教程 一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的"ubuntu"一 ...