一、多表查询

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化,锁表,效率低
      • 可以解决所有问题
  • 设置事务的隔离级别: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的更多相关文章

  1. 数据库事务的四大特性以及事务的隔离级别(mysql)

      本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...

  2. MySQL事务的隔离级别

    为什么需要隔离 当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种 ...

  3. MySQL数据库事务的四大特性以及事务的隔离级别

    一.事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因 ...

  4. Java 事务的隔离级别

    引言 之前关于事务的文章已介绍了事务的概念以及事务的四个属性(ACID),相信你对事务应该有所认识和了解. 本篇文章是关于事务的隔离性,介绍数据库提供的多种隔离级别. 数据库访问的并发性问题 所谓事务 ...

  5. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转载)

    http://www.imooc.com/article/17290 http://www.51testing.com/html/38/n-3720638.html https://dev.mysql ...

  6. 浅谈MySQL事务及隔离级别

    目录 1.什么是事务 2.事务的ACID属性 2-1.原子性(Atomicity) 2-2.一致性(Consistency) 2-3.隔离性(Isolation) 2-4.持久性(Durability ...

  7. MySQL事务及隔离级别详解

    MySQL事务及隔离级别详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的基本架构 MySQL的基本架构可以分为三块,即连接池,核心功能层,存储引擎层. 1> ...

  8. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转)

    本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理 ...

  9. MySQL数据库事务各隔离级别加锁情况--read uncommitted篇(转)

    本文转自https://m.imooc.com/article/details?article_id=17291,感谢作者 1.目的 1.1 合适人群 1.数据库事务特征我只是背过,并没有很深刻的理解 ...

  10. MySQL 温故知心(二) 事务的隔离级别

    事务的隔离级别 A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据但是 在A事务中查询的话 查到的都是操作之后的数据没有提交的数据只有自己看得到,并没有update到数据库 查看 ...

随机推荐

  1. 使用读写分离模式扩展 Grafana Loki

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247500127&idx=1&sn=995987d558 ...

  2. 安装Alertmanager,nginx配置二级路径代理访问

    安装配置 Alertmanager wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertman ...

  3. Elasticsearch:如何实现对 emoji 表情符号进行搜索

    转摘自:https://elasticstack.blog.csdn.net/article/details/114261636 Elasticsearch 是一个应用非常广泛的搜索引擎.它可以对文字 ...

  4. Ceph 存储集群 - 搭建存储集群---教程走到osd激活这一步执行不下去了,报错

    目录 一.准备机器 [1. 修改主机名](所有节点)(https://www.cnblogs.com/zengzhihua/p/9829472.html#1-修改主机名) [2. 修改hosts文件] ...

  5. opencv cv.line

    ''' 本次来学习基于opencv进行各种画图操作,以前只习惯用matplotlib,最近开始用opencv,觉得也很好用. cv.line(), cv.circle() , cv.rectangle ...

  6. overflow 隐藏滚动条样式

    在使用overflow,属性值为auto或者scroll时,很多时候会有多余的滚动条在旁边,这时就非常影响观瞻,所以我们有时需要将滚动条隐藏掉. 今天就说两种我用到的隐藏滚动条的方法,如果有其他解决方 ...

  7. Java19虚拟线程都来了,我正在写的线程代码会被淘汰掉吗?

    Java19中引入了虚拟线程,虽然默认是关闭的,但是可以以Preview模式启用,这绝对是一个重大的更新,今天Java架构杂谈带大家开箱验货,看看这家伙实现了什么了不起的功能. 1 为什么需要虚拟线程 ...

  8. 220514 T2 画画 (二维差分)

    首先我们需要特判只涂了一种颜色的情况: (1)k=1,此时答案就是1:(2)k>1,涂的这种颜色肯定不能是第一个,答案是k-1; 对于其他正常情况,我们对于每个颜色找到一个最小的矩形(这个矩形内 ...

  9. jquery+bootstrap学习笔记

    最近小颖接了个私活,客户要求用jquery和bootstrap来实现业务需求,小颖总结了下在写的过程中的一下坑,来记录一下 1.动态加载html文件 switch (_domName) { case ...

  10. Linux系统管理_用户管理

    cat /etc/passwd #账户文件 cat /etc/shadow #密码文件 cat /etc/login.defs #密码策略机UID定义文件 #普通用户UID范围1000~60000:系 ...