MySql数据库基础二
来源:互联网 发布:js jquery name选择器 编辑:程序博客网 时间:2024/04/29 20:09
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文件路径
在恢复数据库的时候,需要先把数据库创建好
备份和恢复操作都不需要在数据库内操作
- MySql数据库基础二
- MySQL数据库基础(二)
- MySQL/Oracle数据库的基础(二)
- MySQL数据库基础回顾与总结(二)
- MySQL核心基础(二)之数据库基本操作
- MySQL基础(二)数据库、表的创建及操作
- MySQL基础(二)创建数据库及插入数据
- 数据库基础(二)
- 数据库基础(二)
- 数据库基础二
- oracle数据库基础二
- 数据库基础<二>关系数据库
- MySQL基础(二)
- MySQL 基础(二)
- mysql基础(二)
- mysql基础(二)
- mysql基础(二)
- MySQL基础(二)
- 什么是ASP.NET MVC?
- 剑指offer重点复习题目
- Vijos 1449 字符串还原
- 修改Tomcat内存大小
- Nginx 中 502 和 504 错误详解
- MySql数据库基础二
- 纠错题
- C++(0):时间、结构体、指针、类、继承、多态
- tf 的运用
- C++链表类
- Tarjan算法--求无向图的割点和桥
- 小感
- 线段树--数据结构(建树,查询区间和&&最大值&&最小值)
- Spring mvc中把表单数据当做一个对象提交给controller的实现