存储过程,触发器,Mysql权限,备份还原
一、存储过程(优点:执行快;缺点:移植性差)
1、创建存储过程:
DELIMITER $
CREATE PROCEDURE pro_test();
BEGIN
--可以写多个sql
END $;
调用存储过程:
CALL pro_test();
删除存储过程:
DROP PROCEDURE 存储过程名字;
2、 带有输入参数的存储过程
-- 需求:传入一个员工的id,查询员工信息
DELIMITER $
CREATE PROCEDURE pro_findById(IN eid INT) -- IN: 输入参数
BEGIN
SELECT * FROM employee WHERE id=eid;
END $
-- 调用
CALL pro_findById(4);
3、 带有输出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20)) -- OUT:输出参数
BEGIN
-- 给参数赋值
SET str='helljava';
END $
-- 1)定义一个会话变量name, 2)使用name会话变量接收存储过程的返回值
CALL pro_testOut(@NAME);
-- 查看变量值
SELECT @NAME;
4、带有输入输出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_testInOut(INOUT n INT) -- INOUT: 输入输出参数
BEGIN
-- 查看变量
SELECT n;
SET n =500;
END $
-- 调用
SET @n=10;
CALL pro_testInOut(@n);
SELECT @n;
5、带有条件判断的存储过程
-- 需求:输入一个整数,如果1,则返回“星期一”,如果2,返回“星期二”,如果3,返回“星期三”。其他数字,返回“错误输入”;
DELIMITER $
CREATE PROCEDURE pro_testIf(IN num INT,OUT str VARCHAR(20))
BEGIN
IF num=1 THEN
SET str='星期一';
ELSEIF num=2 THEN
SET str='星期二';
ELSEIF num=3 THEN
SET str='星期三';
ELSE
SET str='输入错误';
END IF;
END $
--调用
CALL pro_testIf(4,@str);
SELECT @str;
6、带有循环功能的存储过程
-- 需求: 输入一个整数,求和。例如,输入100,统计1-100的和
DELIMITER $
CREATE PROCEDURE pro_testWhile(IN num INT,OUT result INT)
BEGIN
-- 定义一个局部变量
DECLARE i INT DEFAULT 1;
DECLARE vsum INT DEFAULT 0;
WHILE i<=num DO
SET vsum = vsum+i;
SET i=i+1;
END WHILE;
SET result=vsum;
END $
--调用
CALL pro_testWhile(100,@result);
--查询
SELECT @result;
7、使用查询的结果赋值给变量(INTO)
DELIMITER $
CREATE PROCEDURE pro_findById2(IN eid INT,OUT vname VARCHAR(20) )
BEGIN
SELECT empName INTO vname FROM employee WHERE id=eid;
END $
--调用
CALL pro_findById2(1,@NAME);
--查询
SELECT @NAME;
二、触发器(当操作了某张表时,希望同时触发一些动作/行为)
例如: 当向员工表插入一条记录时,希望同时往日志表插入数据
1、创建触发器(添加)
CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW -- 当往员工表插入一条记录时
INSERT INTO test_log(content) VALUES('员工表插入了一条记录');
2、创建触发器(修改)
CREATE TRIGGER tri_empUpd AFTER UPDATE ON employee FOR EACH ROW -- 当往员工表修改一条记录时
INSERT INTO test_log(content) VALUES('员工表修改了一条记录');
3、创建触发器(删除)
CREATE TRIGGER tri_empDel AFTER DELETE ON employee FOR EACH ROW -- 当往员工表删除一条记录时
INSERT INTO test_log(content) VALUES('员工表删除了一条记录');
三、mysql权限
1、修改用户密码,注意MD5加密
UPDATE USER SET PASSWORD=PASSWORD('123456') WHERE USER='root';
2、分配权限账户
GRANT SELECT ON 数据库名.表名 TO '用户名'@'localhost' IDENTIFIED BY '123456';
四、备份还原
1、mysqldump -u root -p 数据看名字 > E:数据库名字.sql
2、还原
首先mysql -u root -p,回车填写密码登录。然后创建需要还原的数据库,比如test。create database test;接着》use test;在接着;source 数据库名字.sql。
五、事务四大特性(简称ACID)
1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
转载于:https://www.cnblogs.com/h-g-f-s123/p/6117541.html
存储过程,触发器,Mysql权限,备份还原相关推荐
- mysql 权限 备份还原,MYSQL学习笔记09:备份还原,用户权限,外键
在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 整个数据库数据备份也称为sql数据备份:备份的结果都是sql指令 在mysql中,提供了专门用于备份sql的客户端: ...
- mysql int 默认值 为ull_mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题...
今天的目标: mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题 先讲约束: 要他唯一 不能重复 不能空值 : 什么是 mysql的约束: 对mysql 进行约束 2.2 默 ...
- [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)
本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库(利用.sql文件的方式). 关于MySQL数据库备份,本博客 ...
- 十一、MYSQL数据库备份还原
十一.MYSQL数据库备份还原 数据库冷备份 mysqldump备份和还原数据库 备份 主从数据库备份 备份指定数据库 备份多个数据库 备份所有数据库 备份数据表 方法1: `mysqldump`备份 ...
- [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 1:备份.nb3文件方式)
本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库. 本文主要大纲为:使用Navicat备份工具方式进行备份和还 ...
- 备份校验两不误,MySQL自动备份还原校验设计详解
作者介绍 庞阔,优朋普乐传媒运维基础部经理.负责数据库运营管理及平台设计开发,监控设计改进,问题跟踪处理,机房网络维护管理,目前四个专利已在专利局申请中.擅长数据库运维管理及Shell.Perl.PH ...
- mysql数据库备份还原
首先进入cmd.exe 然后进入进入mysql C:\Windows\SysWOW64>cd C:\mysql\binC:\mysql\bin>mysql -u root -p 创建数据库 ...
- MYSQL数据库备份还原,并还原到最新状态(mysqldump,xtrabackup)
启用二进制日志文件 vim /etc/my.cnf 配置文件位置及文件名根据实际情况确定 sql_log_bin=ON|OFF:是否记录二进制日志,默认为ON //在需要的时候设置为OFF log_b ...
- linux怎么把mysql数据库备份还原,MySQL数据库备份和还原
MySQL数据库备份和还原 打开cmd命令行,一定不是mysql的命令行,我第一次就错在这个地方,郁闷了很久 备份MySQL数据库的命令 mysqldump -hhostname -uusername ...
- MySQL增量备份还原
增量备份还原 前提: 备份后插入数据 模拟用户破坏数据 增量备份,恢复过程 1.查看凌晨的完全备份 2.检查全备后所有binlog 3.立即刷新并备份出binlog mysqlbinlog增量恢复 恢 ...
最新文章
- Java实用教程笔记 内部类与异常类
- 小白教程:Visual Studio2017配置GitHub图文教程
- 黑马程序员——iOS学习——启动App界面黑屏
- 使用ABAP delete duplicate时遇到的问题
- android 底部动画,Android实现360手机助手底部的动画菜单
- java 内存分配实例_java学习(四) —— 内存分配浅析
- 读书笔记深入理解JVM01 关于OutOfMemoryError 堆空间的溢出
- 使用arttemplate js模板引擎,直接用模板渲染,减少字符串拼接。
- 跟我一起学C++课程笔记(第二天)
- Python 解析 spec 文件
- 如何使用命令行合成一句话图片木马
- IAR 设置TAB代码格式问题
- 使用Blob对象接收后台返回的图片流并展示到前端页面
- python实现屏幕视频录制_Python实现屏幕录制功能的代码
- 变分图自动编码器教程
- yy账号找回方法详解
- YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫
- ettercap局域网arp欺骗,轻松窃密
- 二选一的时候到了,Qt Widgets 还是 Qt Quick ? 致Qt开发伙伴
- MySQL:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements