
- mysql 事务
- 事务和锁
- 基本 *** 作
- 事务细节
- mysql 事务隔离级别
- 查看和设置隔离级别
- 修改默认隔离级别的方法
- 事务的ACID特性
- 存储引擎
- 查看存储引擎
- 主要的 存储引擎/表类型 特点
- 如何选择存储引擎
- 修改存储引擎
- 视图
- 基本使用
- 视图相关细节
- 视图的优点
- mysql 管理
- 创建用户
- 删除用户
- 用户管理的目的
- 修改用户密码
- mysql 中的权限
- 给用户授权
- 回收用户权限
- 删除用户
- 其他细节
学习内容来自 B 站韩顺平老师的 Java 基础课
mysql 事务事务的定义:
- 用于保证数据的一致性,由一组相关的 dml 语句组成。该组语句要么全部执行成功,要不全部执行失败。
- 如转账就需要用事务来处理,用以保持数据一致性
当执行事务 *** 作时,mysql 会在表上加锁,防止其他用户改表的数据
基本 *** 作- start transaction – 开始一个事务
- savepoint 保存点名 – 设置保存点
- rollback to 保存点名 --回退事务
- rollback – 回退全部事务
- commit – 提交事务,事务的所有 *** 作生效,不能回退
事务隔离级别定义了事务与事务之间的隔离程度
注,√ 表示可能会出现,× 表示不会出现
设置隔离级别的语法:
set session transaction isolation level 隔离级别
该语句会更改当前数据库连接的隔离级别
查看和设置隔离级别查看当前会话隔离级别的方法:
select @@tx_isolation;
查看系统当前隔离级别的方法
select @@global.tx_isolation;
设置当前会话隔离级别
set session transaction isolation level 隔离级别;
设置系统当前隔离级别
set global transaction isolation level 隔离级别;
注意:
- mysql 默认的隔离级别是可重复读(repeatable read)
- 一般情况下,没有特殊需求,不做修改
打开 mysql 的安装目录,在安装的根目录下会有配置文件 my.ini ,打开后修改(如果没有则添加)隔离级别:
# 可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE transaction-isolation = 隔离级别参数
这个过程需要先重启 mysql 服务后才能生效
关闭 mysql 服务,在命令行运行(管理员模式)
net stop mysql
启动服务
net start mysql事务的ACID特性 存储引擎
Mysql 表类型由存储引擎(storage engine)决定,常用的包括:MYISAM, InnoDB, MEMORY 等
Mysql 数据表主要支持六种类型,分别是
- CSV
- Memory
- ARCHIVE
- MRG_MYISAM
- MYISAM
- InnoDB
这六种又分为两类:事务安全型,比如 InnoDB;其余都属于非事务安全型,如 MYISAM 和 MEMORY
查看存储引擎show engines;主要的 存储引擎/表类型 特点
- 如果应用不需要事务,只是处理基本的 CRUD *** 作,那么 MYISAM 最好,速度快
- 如果需要支持事务,选择 InnoDB
- Memory 存储引擎就是将数据存储在内存中,由于没有磁盘 I/O 的等待,速度极快,但是所有修改会在服务关闭后丢失。(经典用法,用户的在线状态)
alter tablbe 表名 engine = 存储引擎;视图
假如有需求:
基本概念:
- 视图是一个虚拟表,其内容由查询定义。和真实的表一样,视图包含列,其数据来自对应的真实表
- 通过视图可以修改对应的真实表的数据
- 对应真实表数据若改变,视图也会改变
对于上面那个需求,在某个用户查询时,可以将允许其查看的列形成一个视图,然后让该用户查询视图即可
基本使用创建
create view 视图名 as select语句
修改
alter view 视图名 as select语句
查看视图
desc 视图名
查看创建视图时的语句
show create view 视图名
删除
drop view 视图名1, 视图名2
例子:
实现上一节提出的需求
create view emp_view01 as select empno, ename, job, depto from emp;视图相关细节
- 创建视图后,到数据库源文件去看,视图只对应有一个试图结构文件 .frm,没有数据文件
- 视图与基表的数据变化会互相影响
- 视图可以再对应另一个视图,套娃
例子:
基于 emp、dept、salgrade 三张表,创建一个视图
create view union_view as select empno, ename, dname, grade from emp, dept, salgrade where emp.deptno = dept.deptno and (sal between losal and hisal);mysql 管理
mysql 中的用户,都存储在系统数据库 mysql 中 user 表
user 表的重点字段说明:
- host:允许登陆的”位置“,localhost 表示该用户只允许本机登录,也可能为 ip 地址,表示该用户只能从某个 ip 登录
- user:用户名
- authentication_string:密码,是通过 password() 加密后的密码
create user '用户名'@'允许登录位置' identified by 密码删除用户
drop user '用户名'@'允许登录位置'用户管理的目的
- 根据不同用户需求,创建不同的账号,设置相应的权限,防止有越权行为发生
- 不同用户,因为权限的限制,可以 *** 作的库和表可能不同
修改自己的密码
set password = password('密码');
修改他人密码(需要有修改其他用户密码的权限)
set password for '用户名'@'登陆位置' = password(密码)mysql 中的权限 给用户授权
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by 密码]
参数说明:
- 权限列表,多个权限用逗号隔开。可以用 all [privileges] 表示所有权限
- *.* :表示本系统所有数据库的所有对象
- 库.* :表示某个数据库的所有对象
- identified by 加上后,如果对应用户存在,那么其后的密码将为用户的新密码;如果用户不存在,表示创建新用户
如果权限没有生效,可以刷新
flush priviledges;回收用户权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';删除用户
drop user '用户名'@'登陆位置';其他细节
- 在创建用户的时候,如果不指定位置,则默认为 %,表示所有 IP 都有连接权限 create userxxx
- create user‘xxx’@‘192.168.1.%’ 表示 xxx 用户在24位前缀为 192.168.1 的 ip 都可以登录
- 在删除用户的时候,如果登陆位置不为 %,那么需要明确指定 ip
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)