MySQL事务

什么是事务

逻辑上的一组操作,要么同时完成,要么同时不完成

事务控制流程

Start transaction ; 开始事务 开启事务后的sql语句将会在同一事务中,不会立即对数据库造成影响
、、、
、、、 sql语句
Commit 提交事务 ,让这个事务对数据库的操作生效

Rollback 事务回滚 取消这个事务 ,这个事务不会对数据库造成影响

事务的隔离级别

四大隔离级别 MySQL本身默认的隔离级别就是最好的

存储过程

什么是存储过程

存储过程,带有逻辑的sql语句
之前的sql没有条件判断,没有循环
存储过程带上流程控制语句(if while)

存储过程的特点

1)执行效率非常快!存储过程是在数据库的服务器端执行的!!!
2)移植性很差!不同数据库的存储过程是不能移植。

存储过程语法

创建存储过程
Delimiter $ – 声明存储过程的结束符
Create procedure pro_test() 存储过程名称(参数)
Begin 开始
可以写多个sql语句 sql语句加流程控制

End $ 结束 结束符

执行存储过程
call Pro_test() pro_test(参数)
参数
IN ,表示输入参数 可以携带数据带存储过程中
OUT 表示输出参数,可以从存储过程中返回结果
INOUT: 表示输入输出参数,既可以输入功能,也可以输出功能

需求:
Delimiter $
Create procedure Pro_test(OUT str varchar(20))
Begin
Declare eavg double ;
Select avg(english) into eavg from student;
If eavg <=70 then
Set str ‘一般’
Elseif eavg>70 and eavg <=90
Set str ‘良好’
Esle
Set str ‘优秀’

End if
End $

查看存储过程

Show procedure status

  • -

删除存储过程

Drop procedure 【if exist】procedure.name

触发器

当操作了某张表时,希望同时触发一些动作/行为,可以使用触发器完成!!

    例如: 当向员工表插入一条记录时,希望同时往日志表插入数据

需求: 当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据

创建日志表

Create table test_log(
Id int,
Content varchar(20)
)

创建添加触发器

Create trigger empadd after insert on employee for each row insert into test_log(content) values (‘向员工表插入了一条记录’)

创建修改触发器

Create trigger empup after update on employee for each row insert into test_log(content) values (‘向员工表修改了一条数据’)

创建删除触发器

Create trigger empdelete after delete on employee for each row insert into test_log(content) values (‘向员工表删除了一条数据’)

权限问题

修改MySQL密码

修改密码
UPDATE USER SET PASSWORD=PASSWORD(‘123456’) WHERE USER=’root’;

分配权限账户

对用户分配某数据库的表的查询权限
Grant select on 数据库名称.表名 to ‘用户’@’localhost’ identified by ‘密码’
对用户分配某数据库的表的删除权限
Grant delete on 数据库名称.表名 to ‘用户’@’localhost’ identified by ‘密码’
所有权限 增删改查
Grant all on 数据库名称.表名 to ‘用户’@’localhost’ identified by ‘密码’

视图

创建视图

create view viewname as select x, x, x from tablename 这个语句 如果视图存在,那么就会报错
Create or replace view viewname as select x, x, x from tablename 如果 视图存在 ,则会覆盖视图

Create view viewname(列名1,列名2,列名3) as select x,x,x from tablename 这是指定列名 ,让用户更好的理解

修改视图

使用 or replace
也可以用alter

更新视图

Update

删除视图

Drop 【if exist】 viwename

数据库的备份和恢复

备份

Mysqldump -uroot -p 数据库名字 > 备份路径

恢复

Mysqk -uroot -p 数据库名称 < sql文件路径
在恢复数据库的时候,需要先把数据库创建好
备份和恢复操作都不需要在数据库内操作