Mysql 中Sql控制流语句_DCL语句/控制流语句

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java7运行applet_Java applet不会在JRE7下运行,控制台中不会显示错误

在Windows 7,64位下&#xff0c;由于升级到JRE-7 32位&#xff0c;在IE9 32位或Chrome下&#xff0c;我无法运行诸如this one之类的小程序。在Applet矩形内&#xff0c;我看到消息“Error。Click for details”点击applet框(空白)会出现一个对话框&#xff1a;Application Erro…

同包类 和 其他类 java_关于继承:为什么Java中的“protected”修饰符允许访问同一个包中的其他类?...

在Java中&#xff0c;具有"受保护"修饰符的成员不仅可以由同一个类和子类访问&#xff0c;还可以由同一个包中的每个人访问&#xff1f;我想知道语言设计的原因&#xff0c;而不是实际的应用程序(例如&#xff0c;测试)1坦率地说我也想知道为什么。 它总是让我感到震…

java打印已经被加载的类_使用URLClassLoader加载类,不会报错,但被加载类中的内容也没有打印出来...

被加载类和加载类的程序在一个文件夹下&#xff1b;运行没有任何结果&#xff1a;D:java_exercise>javac URLTest.javaD:java_exercise>java URLTestD:java_exercise>加载类&#xff1a;import java.net.*;import java.io.File;import java.net.URLClassLoader ;publi…

python反序列化总结_单例模式的反序列化总结

最近观看effective in java &#xff0c;提到单例模式创建过程中&#xff0c;如果是要保证该对象是可序列化的&#xff0c;需要考虑两点&#xff1a;1、继承Serializable接口2、增加readResolve方法比较疑惑的是为什么需要增加这个方法&#xff0c;在以往的使用中需要被序列化的…

ipv6+ssh+java_IPv6的本地联网地址计算方法详解

IPv6的世界里&#xff0c;如果DHCP6和SLACC这两位大佬都为没有为可怜的网卡分配IP地址&#xff0c;也没有人为网卡设置静态的IP地址&#xff0c;系统就会为网卡计算一个IPv6的网址来。这样的网址只能在本地使用&#xff0c;不得路由&#xff0c;所以&#xff0c;被称为“link-l…

java gzipoutputstream_java – GZIPInputStream逐行读取

我有一个.gz格式的文件。用于读取此文件的java类是GZIPInputStream。但是&#xff0c;此类不会扩展BufferedReader类的java。因此&#xff0c;我无法逐行读取文件。我需要这样的东西reader new MyGZInputStream( some constructor of GZInputStream)reader.readLine()...我虽然…

java互斥锁的实现原理_java-深入分析synchronized原理

互斥锁互斥锁futex&#xff0c;全拼fast userspace mutexes&#xff0c;直翻为快速用户空间互斥器&#xff0c;它是我们上层应用实现锁的最常用方法。futex是一块所有进程都可以访问的内存&#xff0c;是通过cpu的原子操作修改内存中的值来尝试获取琐&#xff0c;如果没有竞争&…

php 自定义加密算法,php自定义加密函数、解密

“/*加密*/function addcoder($str){$yuan abA!c1dB#ef2Cg$h%iD_3jkl^E:m}4n.o{&F*p)5q(G-r[sH]6tuIv7wJxy8z9K0;$jia zAy%0Bx1C$wDv^Eu2-t3(F{sr&G4q_pH5*on6I)m:l7.Jk]j8K}ihgf9#ed!cb[a;if ( strlen($str) 0) return false;for($i 0;$i{for($j 0;$j{if($str[$i…

京东开普勒php接口,IOS菜鸟初学第十五篇:接入京东开普勒sdk,呼起京东app打开任意京东的链接-Go语言中文社区...

我之前写了一篇关于接入京东联盟sdk的文章&#xff0c;但是最近&#xff0c;由于这个原因&#xff0c;如下图导致需要重新集成京东的sdk&#xff0c;但是由于某种原因&#xff0c;因为android和ios端不统一&#xff0c;android接入的是京东开普勒的SDK&#xff0c;这次为了统一…

php用不了for循环吗,php中的这两个for循环有什么区别吗?

如下两个for循环&#xff0c;执行的结果不一样的。for($i 0,$j 0;$i dump($i . - . $j);}echo ;for($i 0;$i dump($i . * . $j);}}结果打印&#xff1a;string(3) "0-0"string(3) "1-1"string(3) "2-2"string(3) "3-3"string(3) &q…

php输出楼层号,ZBlog开发中实现评论楼层号正确输出的具体方法代码

在官方的wiki中&#xff0c;针对评论部分的标签调用是集成了评论楼号的&#xff0c;即标签{$comment.FloorID}。这个标签是不计算子评论的&#xff0c;所以并不是采用key直接计算出的楼号。经过测试&#xff0c;我们会发现&#xff0c;这个楼号存在一定BUG&#xff01;具体表现…

php 一键登录插件,FastAdmin一键管理插件

FastAdmin中的插件可以通过命令行快速的进行安装、卸载、禁用和启用。准备工作请确保你的FastAdmin已经能正常登录后台请确保php所在的目录已经加入到系统环境变量&#xff0c;否则会提示找不到该命令打开命令行控制台进入到FastAdmin根目录&#xff0c;也就是think文件所在的目…

java代码复数包括虚部和实部,Java中编写Applet程序验证复数类(在问题补充中)实现接收用户输入的复数的实部和虚部,计算复数与复数,复数与实数的加减,乘除操作...

2008-11-16 回答我把方法给你写出来&#xff0c;测试程序的主函数你就自己写把/*** Cigarette ash Inc.* author 烟灰* version 1.00 2008/6/7*///编写一个类ComplexNumber实现复数的运算:public class ComplexNumber {double m_dRealPart;double m_dImaginPart;public Complex…

matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...

很简单的方程求解程序&#xff0c;调用mulDNewton函数求解&#xff0c;之前在Matlab 2011b版本上运行成功&#xff0c;现在在Matlab 2018a版本上总是出错&#xff0c;程序代码和出错的提示如下&#xff0c;mulDNewton函数代码也如下。请教大神该程序应该如何修改&#xff0c;请…

matlab实验函数编写与程序设计,matlab实验四函数编写与程序设计.doc

实验四&#xff1a;函数编写与程序设计一、实验目的1 . 掌握M文件的创建。2&#xff0e;掌握函数的编写规则。3&#xff0e;掌握函数的调用。4 . 掌握基本的输入输出函数以及显示函数的用法。5&#xff0e;会用Matlab程序设计实现一些工程算法问题。二、实验内容1 . 设计程序&a…

php静态数组变量初始化,为什么数组初始化时,赋值不能是常量?

刚刚发现的一个很奇怪的现象下面这个数组我设置为类的属性&#xff0c;其中SYSTEM_LIB为我定义的常量final class Application { public static $_libarray( route > SYSTEM_LIB./lib_route.php, mysql > SYSTEM_LIB./lib_mysql.php, );}但最终运行时报错为Parse error: …

php比例算法,图片比例转换算法

项目要求将图片上传的任意图片按固定比例进行转换&#xff0c;没办法自己就写了一个&#xff0c;代码如下&#xff1a;public function cropImage($imagePath, $savePath, $scale){$imgHandler $this->model(Picture_Model_Image);$imgHandler->setSrcImg($imagePath);$…

oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法

由于服务器突然掉电&#xff0c;重启机器后发现数据库无法启动。数据库版本 Oracle10201&#xff0c;OS REDHAT 5.4数据库无归档&#xff0c;无备份 [oraclehuna由于服务器突然掉电&#xff0c;重启机器后发现数据库无法启动。数据库版本 Oracle10201&#xff0c;&#xff0c;O…

php sqlite id自增,Android sqlite设置主键自增长的方法教程

今天在APP中增加一个添加项目的功能&#xff0c;项目的主键为整数&#xff0c;要让它自增长。既然要自增长&#xff0c;那么在代码里面就不用给id字段赋值。但是调试的时候发现不行&#xff0c;提示主键重复&#xff0c;观察了输出&#xff0c;不赋值的话&#xff0c;id默认为0…

oracle flashback 深入研究,oracle 之flashback 深入研究。

oracle 之flashback 深入研究。今天是2013-08-24&#xff0c;开始进行oracle flashback 内部原理研究&#xff0c;记录一下笔记。SQL> startupORACLE instance started.Total System Global Area 405020672 bytesFixed Size 2213816 bytesVariable Size …