当前位置: 首页 > news >正文

03MySQL——DCL权限控制,四种常用函数解析

DCL-介绍

DCL英文全称是DataControl Language(数据控制语言),用来管理数据库用户、控制数据库的访问、权限。

DCL-管理用户

1查询用户:

USE mysql;

SELECT * FROM user;

2创建用户:

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

localhost是本地连接,%表示所有主机都可访问该数据库

3修改用户密码:

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

mysql_native_password是加密算法,mysql密码必须经过加密存储

4删除用户:

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

-- 查询用户
USE mysql;
select * from user;-- 创建用户 itcast,只能够在当前主机localhost访问,密码123456;
CREATE USER 'itcast'@'localhost' IDENTIFIED BY '123456';-- 创建用户 heima,可以在任意主机访问该数据库,密码123456;
CREATE USER 'heima'@'%' IDENTIFIED BY '123456';-- 修改用户 heima的访问密码为 1234;
ALTER USER 'heima'@'%' IDENTIFIED WITH mysql_native_password by '1234';-- 删除 itcast@localhost用户
DROP USER 'itcast'@'localhost' ;

DCL-权限控制

常用的权限列表

语法:

1查询权限:

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

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

要授予全部权限可以用ALL表示,所有的数据库或表可以用*表示

3撤销权限:
REVOKE 权限列表 ON 数据库名.表名 FROM  ‘用户名’@‘主机名’;

    注意,多个权限之间用逗号分隔


-- 查看权限
SHOW GRANTS FOR 'heima'@'%';-- 授予'heima'@'%'用户对db01库中的所有表的所有权限
GRANT ALL ON db01.* TO 'heima'@'%';-- 授予'heima'@'%'用户对所有库中的所有表的所有权限
GRANT ALL ON *.* TO 'heima'@'%';-- 撤销'heima'@'%'用户对db01库中的所有表的select权限
REVOKE SELECT ON DB01.* FROM 'heima'@'%';-- 撤销'heima'@'%'用户对所有库中的所有表的所有权限
REVOKE ALL ON *.* FROM'heima'@'%';

函数

函数:是指一段可以直接被另一段程序调用的程序或代码

字符串函数

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

-- concat(s1,s2)  拼接字符串
SELECT concat('hello ',' world');-- lower(s)  把所有字符变为小写
SELECT lower('HELLO');-- upper(s)  把所有字符变为大写
SELECT upper('Hello');-- lpad(s,n,'?')   固定输出五个字符,如果输出不足5个字符在左边补上-
SELECT lpad('1',5,'-');-- rpad(s,n,'?')   固定输出五个字符,如果输出不足5个字符在右边补上-
SELECT rpad('1',5,'-');-- trim(s)   去除字符串两边的空格,中间的去除
SELECT trim('  hello  wrold  ');-- substring(s.n1.n2)  从第一个字符开始,往后取7个字符
SELECT substring('hello world',1,7);-- 案例1.由于业务需要变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001。
UPDATE emp 
SET workno = lpad(workno,5,'0');

数值函数

常见数值函数如下:

-- ceil(x)  向上取整,1.3取成2
SELECT ceil(1.3);-- floor (x) 向下取整,1.6取成1
SELECT floor(1.6);-- rand()  在0-1之间随机生成一个小数
SELECT rand();-- round (x,y)  使参数x保留y位小数 
SELECT round(1.24,0);-- mod(x,y)  取余,相当于x%y
SELECT mod(4,3);-- 案例通过数据库的函数,生成一个六位数的随机验证码。
SELECT lpad(round(rand()*100000,0),6,'0');

日期函数

常见的日期函数如下:

-- curdate()获取当前的日期  年-月-日
SELECT curdate();-- curtime() 获取当前的时间  时-分-秒
SELECT curtime();-- now() 获取当前的日期加时间   年-月-日  时-分-秒
SELECT now();-- year month day 获取date的具体年月日
SELECT year(now());SELECT month(now());SELECT day(now());-- date_add(date,interval n  type)  返回一个推迟后的时间
SELECT date_add(now(),interval 70 day);SELECT date_add(now(),interval 4 month);SELECT date_add(now(),interval 2 year);-- datediff(t1,t2)  计算两个时间之间差多少 ,t1-ty2
SELECT datediff('2022-2-4','2032-3-14');-- 案例:查询所有员工的入职天数,并根据入职天数倒序排序。
SELECT name,datediff(now(),entrydate)
FROM emp
ORDER BY datediff(now(),entrydate) desc;

流程函数

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

-- if(value,t,f)  如果value为真返回t,如果value为假返回f
SELECT if(true,'ok','error');
SELECT if(false,'ok','error');-- ifnull(value1,value2)  如果value1不为空返回value1,如果value1为空返回value2
SELECT ifnull('ok','error');
SELECT ifnull('','error');
SELECT ifnull(null,'error');-- case when then else end
-- 需求:查询emp表的员工姓名和工作地址(北京/上海---->一线城市,其他---->二线城市)
SELECT `name`,(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) AS '工作城市'
FROM emp;-- 需求:统计班级各个学员的成绩,展示的规则如下:
-- >=85 ,展示优秀
-- >=60,展示良好
-- 否则,展示不及格
SELECT name,(case when math >=85 then '优秀' when math >=60 then '良好' else '不及格' end) AS '数学成绩',(case when english>=85 then '优秀' when english >=60 then '良好' else '不及格' end) AS '英语成绩',(case when chinese >=85 then '优秀' when chinese >=60 then '良好' else '不及格' end) AS '语文成绩'FROM score;

这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

http://www.dtcms.com/a/352133.html

相关文章:

  • SSM入门到实战: 3.6 SpringMVC RESTful API开发
  • 基于muduo库的图床云共享存储项目(一)
  • vs2019安装cpu版本的fftw 以实现傅里叶变换
  • 《护理学》10月版面征稿论文速递
  • 【46页PPT】AI智能中台用ABC+IOT重新定义制造(附下载方式)
  • SQLBot:一款基于大语言模型和RAG的智能数据分析工具
  • AI人工智能一体化HR系统如何选型?
  • 重塑金融管理会计核心引擎,容智管会智能体打造智能决策新基建
  • 手写MyBatis第35弹:@Select、@Insert等注解的背后原理
  • 【软考论文】论DevOps及其应用
  • BotCash:2025 中国算力大会——国家级数据标注产业供需对接大会
  • 【自记】Python 局部变量、全局变量及global的示例
  • Python实现RANSAC进行点云直线、平面、曲面、圆、球体和圆柱拟合
  • 负载均衡之平滑加权轮询(Smooth Weighted Round Robin)详解与实现
  • 前沿技术趋势与应用:探索数字世界的下一个十年
  • 本地通过阿里云ECS建立SSH隧道连接阿里云RDS MYSQL数据库
  • 【P2P】RELAY服务2:cmake+ c实现及ubuntu运行
  • 淘宝/天猫商品详情API数据解析【附代码】
  • 软件检测报告:XML外部实体(XXE)注入漏洞原因和影响
  • 【Erdas实验教程】031:遥感图像频率域增强(傅立叶变换)
  • BCI良好棉花认证标准及申请条件(2025年最新版)
  • 加密狗与U盘的核心区别,U盘能否替代加密狗?
  • 电力工程大模型驱动AI工程计算:从“算错挨骂”到“一键精准”
  • 开发指南135-CSS中定义参数
  • 技术干货丨基于SimSolid的塑胶模具温度场瞬态分析
  • 【贪心算法】day3
  • win11在安装com0com软件后,在设备管理器中虚拟串口黄色感叹号得解决方法
  • 什么是Webpack的热更新(Hot Module Replacement)?原理是什么?
  • 2 梯度下降算法
  • 面试 总结(1)