【MySQL】DCL ,Data Control Language(数据控制语言),函数

本文详细介绍了MySQL中的数据控制语言(DCL),包括如何管理用户、权限控制,如查询、创建、修改和删除用户,以及权限的授予和撤销。此外,还深入探讨了各种函数的使用,如字符串、数值、日期和流程函数,并提供了实用的案例。通过对工号的处理、随机验证码生成、日期运算以及条件判断函数的示例,展示了MySQL在实际业务中的应用。
摘要由CSDN通过智能技术生成

​活动地址:CSDN21天学习挑战赛

目录

🏆Data Control Language(数据控制语言)

💎管理用户

查询用户

创建用户

修改用户密码

删除用户

💎权限控制

查询权限

 授予权限

撤销权限

🏆函数

💎字符串函数

💎数值函数

💎日期函数

💎流程函数

案例


🏆Data Control Language(数据控制语言)

💎管理用户

查询用户

select * from mysql.user;
标题

 其中 Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以 远程访问的。 User代表的是访问该数据库的用户名。在MySQL中需要通过HostUser来唯一标识一 个用户。

创建用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

修改用户密码

ALTER USER ' 用户名 ' @ ' 主机名 ' IDENTIFIED WITH mysql_native_password BY ' 新密码 ' ;

删除用户

DROP USER '用户名'@'主机名' ;

注意事项:
MySQL 中需要通过用户名 @ 主机名的方式,来唯一标识一个用户。
主机名可以使用 % 通配。
这类 SQL 开发人员操作的比较少,主要是 DBA ( Database Administrator 数据库管理员)使用。

💎权限控制

MySQL 中定义了很多种权限,但是常用的就以下几种:

查询权限

SHOW GRANTS FOR ' 用户名 ' @ ' 主机名 ' ;
标题

 授予权限

GRANT 权限列表 ON 数据库名 . 表名 TO ' 用户名 ' @ ' 主机名 ' ;

撤销权限

REVOKE 权限列表 ON 数据库名 . 表名 FROM ' 用户名 ' @ ' 主机名 ' ;
注意事项:
多个权限之间,使用逗号分隔
授权时, 数据库名和表名可以使用 * 进行通配,代表所有。

🏆函数

💎字符串函数

MySQL 中内置了很多字符串函数,常用的几个如下:
标题

 

由于业务需求变更,企业员工的工号,统一为 5 位数,目前不足 5 位数的全部在前面补 0 。比如: 1 号员 工的工号应该为00001
update emp set workno = lpad(workno, 5 , '0' );
标题

💎数值函数

常见的数值函数如下:
标题

 

通过数据库的函数,生成一个六位数的随机验证码。
思路: 获取随机数可以通过 rand() 函数,但是获取出来的随机数是在 0-1 之间的,所以可以在其基础 上乘以1000000 ,然后舍弃小数部分,如果长度不足 6 位,补 0
select lpad(round(rand()* 1000000 , 0 ), 6 , '0' );
标题

 

💎日期函数

常见的日期函数如下:
标题

curdate:当前日期

select curdate();  

标题

 datediff:获取两个日期相差的天数

select datediff('2022-08-18', '2022-12-01');

标题

 这为啥是负的?

查询所有员工的入职天数,并根据入职天数倒序排序。
思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用 datediff 函数来完成。
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by
entrydays desc ;
标题

 

💎流程函数

流程函数也是很常用的一类函数,可以在 SQL 语句中实现条件筛选,从而提高语句的效率。
标题

 if

select if( false , 'Ok' , 'Error' );// Error
ifnull
select ifnull( 'Ok' , 'Default' );
select ifnull( '' , 'Default' );
select ifnull( null , 'Default' );
case when then else end
需求 : 查询 emp 表的员工姓名和工作地址 ( 北京 / 上海 ----> 一线城市 , 其他 ----> 二线城市 )
select
name,
( case workaddress when ' 北京 ' then ' 一线城市 ' when ' 上海 ' then ' 一线城市 ' else
' 二线城市 ' end ) as ' 工作地址 '
from emp;

案例

create table score(
id int comment 'ID' ,
name varchar ( 20 ) comment ' 姓名 ' ,
math int comment ' 数学 ' ,
english int comment ' 英语 ' ,
chinese int comment ' 语文 '
) comment ' 学员成绩表 ' ;
insert into score(id, name, math, english, chinese) VALUES ( 1 , 'Tom' , 67 , 88 , 95
), ( 2 , 'Rose' , 23 , 66 , 90 ),( 3 , 'Jack' , 56 , 98 , 76 );
标题

 

select
id,
name,
(case when math >= 85 then ' 优秀 ' when math >= 60 then ' 及格 ' else ' 不及格 ' end )
' 数学 ' ,
(case when english >= 85 then ' 优秀 ' when english >= 60 then ' 及格 ' else ' 不及格 '
end ) ' 英语 ' ,
(case when chinese >= 85 then ' 优秀 ' when chinese >= 60 then ' 及格 ' else ' 不及格 '
end ) ' 语文 '
from score;
标题

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值