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文件路径
在恢复数据库的时候,需要先把数据库创建好
备份和恢复操作都不需要在数据库内操作