一、存储过程(优点:执行快;缺点:移植性差)

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权限,备份还原相关推荐

  1. mysql 权限 备份还原,MYSQL学习笔记09:备份还原,用户权限,外键

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 整个数据库数据备份也称为sql数据备份:备份的结果都是sql指令 在mysql中,提供了专门用于备份sql的客户端: ...

  2. mysql int 默认值 为ull_mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题...

    今天的目标: mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题 先讲约束: 要他唯一 不能重复 不能空值 : 什么是 mysql的约束: 对mysql 进行约束 2.2  默 ...

  3. [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)

    本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库(利用.sql文件的方式). 关于MySQL数据库备份,本博客 ...

  4. 十一、MYSQL数据库备份还原

    十一.MYSQL数据库备份还原 数据库冷备份 mysqldump备份和还原数据库 备份 主从数据库备份 备份指定数据库 备份多个数据库 备份所有数据库 备份数据表 方法1: `mysqldump`备份 ...

  5. [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 1:备份.nb3文件方式)

    本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库. 本文主要大纲为:使用Navicat备份工具方式进行备份和还 ...

  6. 备份校验两不误,MySQL自动备份还原校验设计详解

    作者介绍 庞阔,优朋普乐传媒运维基础部经理.负责数据库运营管理及平台设计开发,监控设计改进,问题跟踪处理,机房网络维护管理,目前四个专利已在专利局申请中.擅长数据库运维管理及Shell.Perl.PH ...

  7. mysql数据库备份还原

    首先进入cmd.exe 然后进入进入mysql C:\Windows\SysWOW64>cd C:\mysql\binC:\mysql\bin>mysql -u root -p 创建数据库 ...

  8. MYSQL数据库备份还原,并还原到最新状态(mysqldump,xtrabackup)

    启用二进制日志文件 vim /etc/my.cnf 配置文件位置及文件名根据实际情况确定 sql_log_bin=ON|OFF:是否记录二进制日志,默认为ON //在需要的时候设置为OFF log_b ...

  9. linux怎么把mysql数据库备份还原,MySQL数据库备份和还原

    MySQL数据库备份和还原 打开cmd命令行,一定不是mysql的命令行,我第一次就错在这个地方,郁闷了很久 备份MySQL数据库的命令 mysqldump -hhostname -uusername ...

  10. MySQL增量备份还原

    增量备份还原 前提: 备份后插入数据 模拟用户破坏数据 增量备份,恢复过程 1.查看凌晨的完全备份 2.检查全备后所有binlog 3.立即刷新并备份出binlog mysqlbinlog增量恢复 恢 ...

最新文章

  1. Java实用教程笔记 内部类与异常类
  2. 小白教程:Visual Studio2017配置GitHub图文教程
  3. 黑马程序员——iOS学习——启动App界面黑屏
  4. 使用ABAP delete duplicate时遇到的问题
  5. android 底部动画,Android实现360手机助手底部的动画菜单
  6. java 内存分配实例_java学习(四) —— 内存分配浅析
  7. 读书笔记深入理解JVM01 关于OutOfMemoryError 堆空间的溢出
  8. 使用arttemplate js模板引擎,直接用模板渲染,减少字符串拼接。
  9. 跟我一起学C++课程笔记(第二天)
  10. Python 解析 spec 文件
  11. 如何使用命令行合成一句话图片木马
  12. IAR 设置TAB代码格式问题
  13. 使用Blob对象接收后台返回的图片流并展示到前端页面
  14. python实现屏幕视频录制_Python实现屏幕录制功能的代码
  15. 变分图自动编码器教程
  16. yy账号找回方法详解
  17. YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫
  18. ettercap局域网arp欺骗,轻松窃密
  19. 二选一的时候到了,Qt Widgets 还是 Qt Quick ? 致Qt开发伙伴
  20. MySQL:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

热门文章

  1. Revit API取得全部元素
  2. ZOJ 1013 Great Equipment(DP)
  3. PHP 循环时间控制缓冲方法
  4. 猎洞高手Orange Tsai 亲自讲解 ProxyShell write-up
  5. 下载量达数百万次的NodeJS 模块被曝代码注入漏洞
  6. Django restframework 嵌套关系处理
  7. 书写「简历」时,需要规避的错误
  8. JavaScriptDOM高级程序设计- generateDOM.js
  9. Proxy(代理,拦截器),Reflect(反射)
  10. Windows Message ID 常量列表