美文网首页
DCL语句/控制流语句

DCL语句/控制流语句

作者: 熊大呀 | 来源:发表于2019-08-28 16:49 被阅读0次

一、(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;

相关文章

  • DCL语句/控制流语句

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

  • Python | 常用的控制流语句

    一、控制流语句介绍 了解什么是控制流语句以及Python常用的两种控制流语句。 1.控制流语句 控制流语句即用来实...

  • MySQL基础——DCL语句

    上篇文章学习了MySQL基础——DQL语句,这篇文章学习MySQL基础——DCL语句。 DCL语句 DCL英文全称...

  • Swift - 控制流

    控制流语句,用于控制程序正在执行的流程。Swift中,控制流语句主要为条件语句和循环语句。 条件语句 if条件语句...

  • 6-Swift之控制流

    1、控制流简介 控制流是控制语句、语句块、存储过程的执行分流。 2、OC 中有哪些控制流 1.if 语句 / ...

  • 20190427-R语言循环与控制流语句(if,for,whil

    一、控制流语句 二、循环语句

  • Swift Tour Learn (四) -- Swift 语法

    本章将会介绍 控制流For-In 循环While 循环If 条件语句Switch 语句控制转移语句 continu...

  • Swift语句参考!

    在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式和声明。控制流语句则...

  • 简单sql语句

    SQL 结构化查询语言 SQL语句分类DDL数据定义语言DML数据操纵语言DCL数据控制语言 1.DDL语句

  • JavaScript笔记-2

    [TOC] 控制流 控制流的底层 while循环 只要条件满足,会不断重复执行块语句 块语句 也称为复合语句 花括...

网友评论

      本文标题:DCL语句/控制流语句

      本文链接:https://www.haomeiwen.com/subject/nwlmectx.html