一、(1)DCL(数据控制语言)主要是数据库管理员用来管理其他用户权限时使用的语句;可以授予的权限包括以下:

列权限:和表中的一个具体列相关、表权限:和一个具体数据表中的所有数据相关、数据库权限:和一个具体数据库中的所有数据表相关、全局权限:和MySQL的所有数据库相关(低级权限会被高级权限覆盖)

(2)、数据库管理员使用GRANT语句进行授权

语法:GRANT 权限 ON 数据库对象 TO 用户名@用户地址 IDENTIFIED BY 用户口令

注意语法中的用户名、用户地址、用户口令需要用引号括起来,并且口令不能为空;例子:

列权限GRANT SELECT(id) ON test.test_table1 TO 'a'@'localhost' IDENTIFIED BY '123456';

表权限GRANT SELECT ON test.test_table1 TO 'b'@'localhost' IDENTIFIED BY '123456';

数据库权限GRANT SELECT ON test.* TO 'c'@'localhost' IDENTIFIED BY '123456';

全局权限GRANT SELECT ON *.* TO 'd'@'localhost' IDENTIFIED BY '123456';

通过GRANT语句可以授予的权限包括:SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER等

如果要授予所有权限,可以使用ALL代表所有;例子:

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY '123456';

查看当前用户权限:SHOW GRANTS                     SHOW GRANTS FOR CURRENT_USER()

查看指定用户权限:SHOW GRANTS FOR 用户名@用户地址

也可使用USE命令切换到系统数据库information_schema;SELECT * FROM user_privileges查看更为详细的用户权限

(3)、数据库管理员使用REVOKE语句取消授权

语法:REVOKE 权限 ON 数据库对象 FROM 用户名@用户地址(注意需要根据用户对应权限进行取消);

例子:REVOKE ALL ON *.* FROM 'user'@'localhost';

在数据库管理员授予或取消授予权限时,用户地址可以使用%表示所有

例子:REVOKE ALL ON *.* FROM 'user'@'%';

在数据库管理员授予或取消授予权限后,需要刷新系统权限表:FLUSH PRIVILEGES

或者重新启动数据库服务:

停止服务命令 net stop mysql、启动服务命令 net start mysql

(4)、数据库管理员可以使用DDL(数据定义语句)中的CREATE创建用户

语法:CREATE USER 用户名@用户地址 IDENTIFIED BY 用户口令

例子:CREATE USER zhangsan@'192.168.1.100' IDENTIFIED BY '123456';

如果要查看用户信息,需要使用USE命令切换到系统数据库mysql中:SELECT * FROM user;

需要注意的是,使用CREATE命令创建的用户默认没有任何权限,需要使用前面的GRANT命令授权

(5)、数据库管理员可以使用DDL(数据定义语句)中的DROP来删除用户

语法:DROP USER 用户名@用户地址

例子:DROP USER zhangsan@'192.168.1.100';

如果需要修改用户的密码,需要到系统数据库mysql中修改表user

例子:UPDATE user SET password=password('123456') WHERE user='zhangsan';

也可以直接在表user中删除用户

例子:DELETE FROM user WHERE user='zhangsan';

二、(1)、变量定义:在MySQL数据库的函数和存储过程中可以使用DECLARE关键字来定义变量,这些变量的作用范围是BEGIN…END程序体中

语法:DECLARE 变量名 变量类型 DEFAULT 默认值                         例子:DECLARE abc INT DEFAULT 10;

变量赋值:给BEGIN…END程序体中的变量赋值有两种方法

语法:SET 变量名=值;            语法:SELECT 属性 INTO 变量名 FROM 表名;

例子:SET abc=10;                   SELECT id INTO abc FROM table;

(2)IF语句

IF语句主要用于条件判定,根据条件成立与否,后续执行不同的命令

语法:IF 条件 THEN …

ELSEIF 条件 THEN …

ELSE …

END IF

例子:

CREATE PROCEDURE pro(IN x INT)

BEGIN

IF x=1 THEN SELECT 'x is 1';

ELSEIF x=2 THEN SELECT 'x is 2';

ELSE SELECT 'WRONG';

END IF;

END;

(3)CASE语句:为多分枝语句结果,从WHEN后面查找与CASE后的变量相等的值,如果找到,执行该分支语句,否则执行ELSE语句

语法:CASE 变量

WHEN 值1 THEN …

WHEN 值2 THEN …

ELSE …

END CASE

例子:

CREATE PROCEDURE pro(IN x INT)

BEGIN

CASE x

WHEN 1 THEN SELECT 'x is 1';

WHEN 2 THEN SELECT 'x is 2';

ELSE SELECT 'WRONG';

END CASE;

END;

(4)CASE语句:为多分枝语句结果,从WHEN后面查找与CASE后的变量相等的值,如果找到,执行该分支语句,否则执行ELSE语句

语法:CASE 变量

WHEN 值1 THEN …

WHEN 值2 THEN …

ELSE …

END CASE

例子:

CREATE PROCEDURE pro(IN x INT)

BEGIN

CASE x

WHEN 1 THEN SELECT 'x is 1';

WHEN 2 THEN SELECT 'x is 2';

ELSE SELECT 'WRONG';

END CASE;

END;

(5)WHILE语句:判断条件成立与否,如果成立则循环执行程序体

语法:WHILE 条件 DO

END WHILE

例子:

CREATE PROCEDURE pro(IN x INT)

BEGIN

WHILE x<5 DO

SELECT 'OK';

SET x=x+1;

END WHILE;

END;

(6)LOOP语句:循环结构,但没有循环条件判定,无限循环,直至使用LEAVE退出;在LOOP循环中,还可以使用ITERATE跳过本次循环

语法:LOOP

END LOOP

例子:

CREATE PROCEDURE pro(IN x INT)

BEGIN

label:LOOP

SELECT 'OK';

SET x=x+1;

IF x>3 THEN LEAVE label;

END IF;

END LOOP;

END;

(7)REPEAT语句

:先执行一次循环体,之后判断条件成立与否,如果成立退出循环 (

需要注意UNTIL语句后面不能有分号

)

语法:REPEAT

UNTIL 条件

END REPEAT

例子:

CREATE PROCEDURE pro(IN x INT)

BEGIN

REPEAT

SELECT 'OK';

SET x=x+1;

UNTIL x>3

END REPEAT;

END;

Mysql 中Sql控制流语句_DCL语句/控制流语句相关推荐

  1. Mysql中SQL语句不使用索引的情况

    Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结 ...

  2. mysql数据库语句分类_细数MySQL中SQL语句的分类

    1:数据定义语言(DDL) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP  DATABASE):2:创建.修改.重命名.删除表(C ...

  3. mysql 结果保存到文件_将MySQL中sql运行结果保存到文件

    将MySQL中sql运行结果保存到文件 有两种方法. 方法一:在mysql>提示符中使用tee mysql> tee output.txt Logging to file 'output. ...

  4. MySQL中SQL语句——DQL(数据查询语句)

    前言: 首先对于数据库有一定的了解,会对于Mysql的学习有一定的帮助: 数据库主要分为 DB(数据库),DBMS(数据库管理系统),SQL(结构化查询语言,用于和DBMS通信的语言):这篇要讲的DQ ...

  5. mysql中sql插入时间_mysql中使用sql语句插入日期时间类型的写法

    [例子如下: select * from ( select rownumber() over() as rownumber, id from associate ) as temp where row ...

  6. 检测mysql中sql语句的效率

    1.通过查询日志 启动Mysql时加参数--log-slow-queries来记录执行时间超过long_query_time秒的sql MySQL 自带 slow log 的分析工具 mysqldum ...

  7. mysql deallocate,MySQL中prepare与execute以及deallocate预处理语句的使用教程

    这篇文章主要介绍了MySQL中预处理语句prepare.execute与deallocate的使用教程,需要的朋友可以参考下 MySQL官方将prepare.execute.deallocate统称为 ...

  8. mysql sql优化_浅谈mysql中sql优化

    说到sql优化,一般有几个步骤呢,在网上看到了一篇很不错的帖子.在这分享一下吧,也是自己学习的一个过程. 一.查找慢查询 1.1.查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; ...

  9. mysql中以下正确的sql是_总结MySQL中SQL语法的使用

    --where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...

最新文章

  1. find查找多个文件
  2. Apache错误日志提示AH02004: SSL Proxy: Peer certificate is expired
  3. fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量
  4. JNA—JNI终结者
  5. Mybatis高级应用 延迟加载
  6. 这家共享单车确认已坑12.5万用户 总金额超2512万元
  7. 用DeflateStream和GZipStream压缩数据
  8. python扩展库不是用于科学计算的有_有没有可以并行计算的 Python 科学计算库?...
  9. 任务26:dotnet watch run 和attach到进程调试
  10. 超级高铁(Hyperloop)
  11. Ardunio开发实例-BME280传感器
  12. 《中国传统文化》慕课期末试题及答案
  13. C# 消息盒子 右下角显示窗体
  14. DELPHI盒子上的RAD studio 2010安装过程及体验(超多图)
  15. 论文复现:Expressive Body Capture
  16. docker的使用及原理
  17. S-8254A------3节/4节电池串联用电池保护IC
  18. Python字体成灰色有波浪号
  19. 【每日一练】订单提交页面
  20. F28335之cmd文件详解

热门文章

  1. 船员能力评估计算机软件系统,船舶动力电力训练系统操作水平综合评估算法研究...
  2. vb上传文件到MySQL_ASP.NET上传文件到数据库VB版
  3. seaborn画图设置横纵坐标标签
  4. Spring Data JPA 从入门到精通~方法的查询策略的属性表达式
  5. matlab 建立ctruct,扩频通信系统及MATLAB仿真1
  6. java http超时重连_httpclient 重连机制
  7. LwIP应用开发笔记之九:LwIP无操作系统TELNET服务器
  8. 探索比特币源码1-运行 Bitcoin Core Node
  9. Python序列类型常用函数练习:enumerate() reversed() sorted() zip()
  10. viewpager 自定义翻页效果_Android RecyclerView自定义LayoutManager