1. /*
  2. MySQL中的变量局部变量,用户变量,会话变量和全局变量。
  3. 用户变量不用定义,直接使用。
  4. 1.用户变量赋值
  5. set @xxx = 值;
  6. 2.查询
  7. select @xxx;
  8. 语法帮助:
  9. 过程保存在information_schema.routines表中
  10. help create PROCEDURE
  11. help drop PROCEDURE
  12. help SET
  13. help select
  14. help WHILE
  15. help if statement
  16. help declare
  17. bug点:
  18. 不同数据库可以存在同名的存储过程。
  19. */
  20. drop table if exists product;
  21. create table product(
  22. id int primary key auto_increment,
  23. name varchar(50) unique not null,
  24. price double(10, 2) not null
  25. );
  26. insert into product(name, price)
  27. values
  28. ('白菜', 5),
  29. ('豆角', 5),
  30. ('香菇', 10),
  31. ('土豆', 4);
  32.  
  33. -- 定义一个求平均价格,最高价格,最低价格的存储过程
  34.  
  35. SELECT avg(price) FROM product INTO @avgprice;
  36. SELECT @avgprice;
  37.  
  38. -- 查询存储过程,保存在information_schema.routines表中
  39. SELECT routine_schema, routine_name, definer, routine_body, routine_definition from information_schema.routines;
  40.  
  41. -- 定义存储过程
  42. delimiter //
  43. CREATE PROCEDURE proc_db1.productprice(
  44. OUT avg INT,
  45. OUT max INT,
  46. OUT min INT)
  47. BEGIN
  48. SELECT avg(price) INTO avg FROM product;
  49. SELECT max(price) INTO max FROM product;
  50. SELECT min(price) INTO min FROM product;
  51. END //
  52. delimiter ;
  53.  
  54. -- 调用存储过程
  55. -- CALL sp_name([parameter[,...]]);
  56. CALL productprice(@avgprice, @maxprice, @minprice);
  57.  
  58. -- 使用用户变量,保存
  59. SELECT @avgprice, @maxprice, @minprice;
  60.  
  61. -- 删除存储过程
  62. -- DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name;
  63. DROP PROCEDURE IF EXISTS proc_db1.productprice;

存储过程

  1. /*
  2. MySQL手册中,变量分为:系统变量和用户变量。
  3. 实际开发中,认为分为4类:
  4. 1.局部变量
  5. 2.用户变量
  6. 3.会话变量
  7. 4.全局变量
  8. 语法帮助:
  9. help set
  10. help declare
  11. help show
  12.  
  13. 1.局部变量
  14. 概念:局部变量一般用在sql语句块中,其作用域局限于语句块。
  15. 语法:DECLARE var_name [, var_name] ... type [DEFAULT value]
  16.  
  17. 2.用户变量
  18. 概念:
  19. 用户变量作用域是全局,生命周期是当前连接。
  20. 语法:@xxx 用户变量无需定义,直接使用。
  21. 赋值:
  22. SET @xxx = 值;
  23. 查询:
  24. SELECT @xxx;
  25. 查询+赋值:
  26. SELECT @xxx := 值; 因为select语句中的=号是关系运算符,用:=表示赋值
  27.  
  28. 3.会话变量
  29. 概念:
  30. 服务器为每个连接的客户端维护一系列会话变量。在客户端连接时使用相应的全局变量
  31. 的当前值对客户端的会话变量进行初始化。
  32. 设置会话变量不需要特殊的权限,但客户端只能更改自己的会话变量,不能更改其他客户端的会话变量。
  33. 会话变量的作用域是全局的,生命周期是当前连接。连接断开,则失效。
  34.  
  35. 语法:
  36. 设置会话变量:
  37. set 变量名 = 值;
  38. set session 变量名 = 值;
  39. set @@session.变量名 = 值;
  40. 查询会话变量:
  41. select @@变量名;
  42. select @@session.变量名;
  43. show session variables [like '%变量名%'];
  44.  
  45. 4.全局变量
  46. 概念:
  47. 全局变量影响服务器。当服务器启动时,它将所有全局变量初始化为默认值,
  48. 这些默认值可以在配置文件或启动参数中修改。全局变量作用于服务器的一次启动和关闭。
  49. 特点:
  50. 全局变量不能跨重启,服务重启后所有在mysql客户端中设置的全局变量将失效。
  51. 如果想让全局变量重启后继续生效,需更改配置文件。
  52.  
  53. 语法:
  54. 设置全局变量:
  55. set global 变量名 = 值;
  56. set @@global.变量名 = 值;
  57. 查询全局变量:
  58. select @@global.变量名;
  59. show global variables [like '%变量名%'];
  60. */

MySQL变量

  1. /*
  2. 语法帮助:
  3. 1. help create user
  4. 2. help drop user
  5. 3. help alter user
  6. 4. help set password
  7. */
  8.  
  9. -- mysql.user表中查询用户和其密码验证插件
  10. SELECT user, host, plugin from mysql.user;
  11.  
  12. -- 查看验证插件
  13. SHOW PLUGINS;
  14.  
  15. -- 查看系统变量,服务器默认的密码验证插件
  16. SHOW VARIABLES LIKE '%auth%';
  17.  
  18. -- 添加用户
  19. CREATE USER '用户名'@'主机名' IDENTIFIED BY '新密码';
  20. CREATE USER 'caocao'@'localhost' IDENTIFIED BY 'cao';
  21.  
  22. -- 删除用户
  23. DROP USER '用户名'@'主机名';
  24. DROP USER 'caocao'@'localhost';
  25.  
  26. -- 修改密码
  27. /*
  28. MySQL5.5中
  29. */
  30. -- update mysql.user + password()函数设置密码
  31. UPDATE mysql.user SET password=password('新密码') where user = '用户名';-- MySQL8不支持
  32. UPDATE mysql.user set password=password('root') where user='caocao';-- MySQL8不支持
  33. -- 刷新下,使其立即生效
  34. FLUSH PRIVILEGES;
  35.  
  36. -- set password + password()函数设置密码
  37. SET PASSWORD FOR '用户名'@'主机名' = password('新密码');-- MySQL8.0.11中被移除
  38. SET password for 'caocao'@'localhost' = password('root');
  39.  
  40. /*
  41. MySQL8
  42. */
  43. -- 空串表示没有密码,不指定验证插件使用的是当时的默认插件。
  44. -- 使用help alter user查看是否能够获取到帮助信息,获取不到不支持。
  45. ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码'; -- MySQL8
  46. ALTER USER 'caocao'@'localhost' IDENTIFIED BY 'root';
  47.  
  48. -- 指定验证插件
  49. ALTER USER 'caocao'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
  50. ALTER USER 'caocao'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root';
  51. ALTER USER 'caocao'@'localhost' IDENTIFIED WITH sha256_password BY 'root';
  52.  
  53. -- 查看验证插件
  54. SHOW PLUGINS;
  55.  
  56. -- 查看系统变量,服务器默认的密码验证插件
  57. SHOW VARIABLES LIKE '%auth%';

用户管理

  1. /*
  2. 语法帮助:
  3. help grant
  4. help revoke
  5. */
  6. -- 查询有哪些权限
  7. SHOW PRIVILEGES
  8.  
  9. -- 查询用户表,里面有所有用户的权限信息
  10. SELECT * FROM mysql.user;
  11.  
  12. -- 查询对某个用户的授权
  13. SHOW GRANTS FOR 'liubei'@'localhost';
  14.  
  15. -- 创建一个新用户
  16. CREATE USER 'liubei'@'localhost' IDENTIFIED BY 'liu';
  17.  
  18. -- 添加权限,ALL表示所有权限 *.* 所有库所有表,数据库.* 某个库所有表
  19. GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
  20. GRANT SELECT, INSERT ON db1.student TO 'liubei'@'localhost';
  21. GRANT ALL ON *.* TO 'liubei'@'localhost';
  22.  
  23. -- 删除权限
  24. REVOKE SELECT ON *.* FROM 'liubei'@'localhost';
  25. REVOKE ALL ON *.* FROM 'liubei'@'localhost';

权限管理

黑马MySQL数据库学习day04 MySQL变量 存储过程 用户和授权管理的更多相关文章

  1. MySQL数据库学习笔记----MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  2. MySql数据库学习总结(MySQL入门到精通)

    2017.1.24-2.3日(在大兴实验室) 1.数据库存储引擎: (1)MyISAM: 访问速度快,对事物完整性没要求,并以访问为主的适合这个 (2)InnoDB: 更占磁盘空间,需要进行频繁的更新 ...

  3. 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理

    重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有 ...

  4. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. MySQL数据库学习: 01 —— 数据库的概述

    壹 概述 一 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件). 易混淆:人们常常用“数据库”这个词语来代表他们使 ...

  6. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  9. 重新学习MySQL数据库10:MySQL里的那些日志们

    重新学习MySQL数据库10:MySQL里的那些日志们 同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志, ...

随机推荐

  1. PHP函数(六)-匿名函数(闭包函数)

    匿名函数能够临时创建一个没有名称的函数,常用作回调函数参数的值 <?php $test = function($a){ echo "Hello,".$a; }; $test( ...

  2. Python函数(九)-装饰器(二)

    如果给被装饰器装饰的函数传递参数的话,需要在装饰器里修改 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import tim ...

  3. Python函数(六)-嵌套函数

    嵌套函数就是在一个函数里再嵌套一个或多个函数 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" def First(): pri ...

  4. paramiko 堡垒机

    用paramiko写堡垒机 paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 基本用法 SSHClient 基于用户名密码连接: 基础用法: import para ...

  5. qt安装必要的库 qt开源安装包下载

    yum install mesa-libGL-devel mesa-libGLU-devel #yum install freeglut-devel http://www.qt.io/download ...

  6. Spring MVC F5刷新问题

    转自:https://bbs.csdn.net/topics/390771056 post操作成功后重定向到B,这样浏览器里F5的时候就不会让提交A了    

  7. #pragma execution_character_set("utf-8")

    VC2010增加了“#pragma execution_character_set("utf-8")”,指示char的执行字符集是UTF-8编码. VS2010 设置 字符编码: ...

  8. vesamenu.c32:not a COM32R image报错解决方案

    今天用U盘刻录安装Linux Mint 的时候,一直出现 vesamenu.c32:not a COM32R image这个报错,查了很久,原因好像是电脑是老电脑的原因.处理的办法很简单,只需要输入l ...

  9. sed对指定行添加或删除注释

      如下文本   zimu.txt aaaaa #bbbbbb cccccc dddddd 以下命令如果需要在文本中更改 需要加 -i 或者  -ri参数 用sed在aaa前加#注释 sed 's/^ ...

  10. jmeter CSV Data数据中带有逗号解决方法

    今天用jmeter做性能测试,由于参数的数据中含有逗号,一直失败,尝试了几次终于成功,先写下经验 首先看设置 E:\apache-jmeter-2.12\bin\litaojunzb.csv文件格式如 ...