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;
Mysql 中Sql控制流语句_DCL语句/控制流语句相关推荐
- Mysql中SQL语句不使用索引的情况
Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结 ...
- mysql数据库语句分类_细数MySQL中SQL语句的分类
1:数据定义语言(DDL) 用于创建.修改.和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE || DROP DATABASE):2:创建.修改.重命名.删除表(C ...
- mysql 结果保存到文件_将MySQL中sql运行结果保存到文件
将MySQL中sql运行结果保存到文件 有两种方法. 方法一:在mysql>提示符中使用tee mysql> tee output.txt Logging to file 'output. ...
- MySQL中SQL语句——DQL(数据查询语句)
前言: 首先对于数据库有一定的了解,会对于Mysql的学习有一定的帮助: 数据库主要分为 DB(数据库),DBMS(数据库管理系统),SQL(结构化查询语言,用于和DBMS通信的语言):这篇要讲的DQ ...
- mysql中sql插入时间_mysql中使用sql语句插入日期时间类型的写法
[例子如下: select * from ( select rownumber() over() as rownumber, id from associate ) as temp where row ...
- 检测mysql中sql语句的效率
1.通过查询日志 启动Mysql时加参数--log-slow-queries来记录执行时间超过long_query_time秒的sql MySQL 自带 slow log 的分析工具 mysqldum ...
- mysql deallocate,MySQL中prepare与execute以及deallocate预处理语句的使用教程
这篇文章主要介绍了MySQL中预处理语句prepare.execute与deallocate的使用教程,需要的朋友可以参考下 MySQL官方将prepare.execute.deallocate统称为 ...
- mysql sql优化_浅谈mysql中sql优化
说到sql优化,一般有几个步骤呢,在网上看到了一篇很不错的帖子.在这分享一下吧,也是自己学习的一个过程. 一.查找慢查询 1.1.查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; ...
- mysql中以下正确的sql是_总结MySQL中SQL语法的使用
--where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...
最新文章
- find查找多个文件
- Apache错误日志提示AH02004: SSL Proxy: Peer certificate is expired
- fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量
- JNA—JNI终结者
- Mybatis高级应用 延迟加载
- 这家共享单车确认已坑12.5万用户 总金额超2512万元
- 用DeflateStream和GZipStream压缩数据
- python扩展库不是用于科学计算的有_有没有可以并行计算的 Python 科学计算库?...
- 任务26:dotnet watch run 和attach到进程调试
- 超级高铁(Hyperloop)
- Ardunio开发实例-BME280传感器
- 《中国传统文化》慕课期末试题及答案
- C# 消息盒子 右下角显示窗体
- DELPHI盒子上的RAD studio 2010安装过程及体验(超多图)
- 论文复现:Expressive Body Capture
- docker的使用及原理
- S-8254A------3节/4节电池串联用电池保护IC
- Python字体成灰色有波浪号
- 【每日一练】订单提交页面
- F28335之cmd文件详解
热门文章
- 船员能力评估计算机软件系统,船舶动力电力训练系统操作水平综合评估算法研究...
- vb上传文件到MySQL_ASP.NET上传文件到数据库VB版
- seaborn画图设置横纵坐标标签
- Spring Data JPA 从入门到精通~方法的查询策略的属性表达式
- matlab 建立ctruct,扩频通信系统及MATLAB仿真1
- java http超时重连_httpclient 重连机制
- LwIP应用开发笔记之九:LwIP无操作系统TELNET服务器
- 探索比特币源码1-运行 Bitcoin Core Node
- Python序列类型常用函数练习:enumerate() reversed() sorted() zip()
- viewpager 自定义翻页效果_Android RecyclerView自定义LayoutManager