MySQL-DCL函数

DCL

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

管理用户

1). 查询用户

use mysql;
select * from user;

select * from mysql.user;

 

 查询的结果如下:

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

2). 创建用户

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

3). 修改用户密码

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

 

4). 删除用户

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

 

注意事项:

  • 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。

  • 主机名可以使用 % 通配。

  • 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。  

案例:

A. 创建用户donkee, 只能够在当前主机localhost访问, 密码123456;

create user 'donkee'@'localhost' identified  by '123456'; 

B. 创建用户andy, 可以在任意主机访问该数据库, 密码123456;

create user 'andy'@'%' identified by '123456'; 

C. 修改用户andy的访问密码为1234;

--mysql8.0
alter user 'andy'@'%' identified with mysql_native_password by '1234'; 

  • Mysql 5.7 修改密码的三种方式

    1. 通过管理员修改密码

      set password [for 'username'@'host' ]= password('password');
    2. 修改mysql.user表修改密码

      use mysql;
      update user set authentication_string = password('password') where user='username' and host='host';
      flush privileges;

      旧版本中密码字段是password,而不是authentication_string,必须刷新权限!!!!

  1. 忘记root密码重置密码

    • 在my.ini配置文件[mysqld]下添加skip-grant-tables,

    • 重启数据库服务mysql直接无密码登陆,

    • 修改mysql.user表中的密码,

    • 注释skip-grant-tables该参数重启数据库服务即可  

 

D. 删除 donkee@localhost 用户

drop user 'donkee'@'localhost'; 

权限控制

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

权限说明
ALL, ALL PRIVILEGES所有权限
SELECT查询数据
INSERT插入数据
UPDATE修改数据
DELETE删除数据
ALTER修改表
DROP删除数据库/表/视图
CREATE创建数据库/表

上述只是简单罗列了常见的几种权限描述,其他权限描述及含义,可以直接参考官方文档。

1). 查询权限

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

  

USAGE: 游客  

2). 授予权限

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

 

 

 3). 撤销权限

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

 

注意事项:

  • 多个权限之间,使用逗号 分隔

  • 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。  

案例:

A. 查询 'andy'@'%' 用户的权限

show grants for 'andy'@'%'; 

B. 授予 'andy'@'%' 用户test_db数据库所有表的所有操作权限

grant all on test_db.* to 'andy'@'%'; 

C. 撤销 'andy'@'%' 用户的test_db数据库的所有权限

revoke all on test_db.* from 'andy'@'%'; 

函数

函数是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在MySQL中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那么,函数到底在哪儿使用呢?

我们先来看两个场景:

1). 在企业的OA或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能 够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12,那如果快速计算出天数呢?

2). 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的 分数值,如98/75,如何快速判定分数的等级呢?

其实,上述的这一类的需求呢,我们通过MySQL中的函数都可以很方便的实现 。

MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

字符串函数

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

函数功能
CONCAT(S1,S2,...Sn)字符串拼接,将S1,S2,... Sn拼接成一个字符串
LOWER(str)将字符串str全部转为小写
UPPER(str)将字符串str全部转为大写
LPAD(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str,start,len)返回从字符串str从start位置起的len个长度的字符串

演示如下:

A. concat : 字符串拼接

select concat('Hello' , ' MySQL');

 

B. lower : 全部转小写

select lower('Hello'); 

 

C. upper : 全部转大写

select upper('Hello'); 

 

D. lpad : 左填充

select lpad('01', 5, '-'); 

 

E. rpad : 右填充

select rpad('01', 5, '-'); 

 

F. trim : 去除空格

select trim(' Hello MySQL '); 

 

G. substring : 截取子字符串

select substring('Hello MySQL',1,5); 

 

案例:

 

由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001。

update emp set workno = lpad(workno, 5, '0'); 

处理完毕后, 具体的数据为:

 

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

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

相关文章

linux 服务器创建服务器启动后服务自启动

1、在/etc/systemd/system/下touch一个文件: touch /etc/systemd/system/your_application.service 2、在文件中写入: [Unit] Descriptionmodules-system Aftersyslog.target[Service] Typeforking Userroot Grouproot ExecStart/bin/bash /usr/loca…

端到端语音识别案例

《DeepSeek大模型高性能核心技术与多模态融合开发(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书 语音识别这一技术正如其名,是通过精密地解析说话人的语音来识别并准确转写出其所说的内容。它不仅仅是一个简单的转录过程&#…

QT——信号和槽

QT是图形化界面,自然是需要与用户进行交互的,但是该如何实现用户与界面或者程序的交互呢。答案是通过信号和槽。 一,什么是信号和槽? 在Linux操作系统里面,我们知道信号是由硬件或者软件产生,但是在QT里面…

Q:如何保证备份的有效性以及备份频率设置的优化方案?

1、如何保障备份数据的一致性 a) 快照 快照通过捕获数据在某一时刻的完整状态来保障备份一致性。在应用层,快照会暂停业务写入或生成事务一致性检查点(如数据库的全局读视图),确保备份数据不包含未提交的事务;在存…

Linux实用操作及命令

一、各类小技巧(快捷键) 1、强制停止(ctrlc) Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl c 命令输入错误,也可以通过快捷键ctrl c,退出当前输入,重…

压测工具开发(一)——使用Qt Designer构建简单界面

你好,我是安然无虞。 文章目录 项目功能概述构建菜单栏、工具栏1. 菜单栏注意事项2. 工具栏注意事项3. 日志停靠窗口 项目功能概述 开发一款 Qt版本的压测工具, 可以用来做 基于HTTP API接口的 性能测试. 要求做一个 MDI 多功能子窗口的 图形界面程序, 方便公司内…

Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(ollama方式)

操作系统:Ubuntu Linux 22.04 一、安装模型运行环境 打开链接https://ollama.com/download/linux 1.安装ollama (1)一条指令即可实现的简易版安装方法(也可称为在线安装) curl -fsSL https://ollama.com/install.s…

MySQL 和 Redis 数据一致性解决方案

MySQL 和 Redis 数据一致性解决方案 MySQL 和 Redis 作为两种不同类型的数据库(关系型 vs 内存型),在配合使用时需要特别注意数据一致性问题。以下是几种常见的解决方案: 1. 缓存更新策略 1.1 Cache Aside Pattern (旁路缓存模式) 读操作&#xff1a…

Java高频面试之集合-20

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:讲讲 HashSet 的底层实现? HashSet 是 Java 集合框架中用于存储唯一元素的高效数据结构,其底层实…

【MySQL】从零开始:掌握MySQL数据库的核心概念(四)

人们之所以不愿改变,是因为害怕未知。但历史唯一不变的事实,就是一切都会改变。 前言 这是我自己学习mysql数据库的第四篇博客总结。后期我会继续把mysql数据库学习笔记开源至博客上。 上一期笔记是关于mysql数据库的表格约束,没看的同学可以…

Manus:通用智能体的架构革命与产业破局

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

HTTP协议手写服务器

目录 一、请求的是Web根目录 二、GET方法通过URL传参 三、根据资源类型对应出Content-Type值 四、Http代码 项目完整源代码:Http 周不才/cpp_linux study - 码云 - 开源中国 一、请求的是Web根目录 如果URL中请求的资源是Web根目录,则自动跳转到主…

小蓝和钥匙

错位排序组合数 从28个人里面选14个人分到原来房间的钥匙 C 28 14 另外14个人错位排序 模板 请在此处填写你的解题思路 D14 都是模板记住就好了 无需理解 做题可以看出来是错位排序 或者组合数 然后会写代码就行了 import java.util.Scanner;/*** author zb* date2025/3…

使用飞书API自动化更新共享表格数据

飞书API开发之自动更新共享表格 天马行空需求需求拆解1、网站数据爬取2、飞书API调用2.1 开发流程2.2 创建应用2.3 配置应用2.4 发布应用2.5 修改表格权限2.6 获取tenant_access_token2.7 调用API插入数据 总结 天马行空 之前一直都是更新的爬虫逆向内容,工作中基本…

Python-Django入手

18.1 建立项目 18.1.1 制定规范 - 定义项目目标:明确应用的核心功能 - 创建项目文档:用README.md记录技术栈和开发流程 - 规划目录结构:建议遵循Django官方推荐的项目布局 18.1.2 建立虚拟环境 在命令行执行: python -m ven…

LangChain4j 入门(二)

LangChain 整合 SpringBoot 下述代码均使用 阿里云百炼平台 提供的模型。 创建项目&#xff0c;引入依赖 通过 IDEA 创建 SpringBoot 项目&#xff0c;并引入 Spring Web 依赖&#xff0c;SpringBoot 推荐使用 3.x 版本。 引入 LangChain4j 和 WebFlux 依赖 <!--阿里云 D…

3.30学习总结 Java包装类+高精度算法+查找算法

包装类&#xff1a; 基本数据类型对应的引用数据类型。 基本数据类型&#xff1a;在内存中记录的是真实的值。 八种包装类的父类都是Object类。 对象之间不能直接进行计算。 JDK5之后可以把int和integer看成一个东西&#xff0c;因为会进行内部优化。自动装箱和自动拆箱。 …

centos 7 LVM管理命令

物理卷&#xff08;PV&#xff09;管理命令 pvcreate&#xff1a;用于将物理磁盘分区或整个磁盘创建为物理卷。 示例&#xff1a;sudo pvcreate /dev/sdb1 解释&#xff1a;将 /dev/sdb1 分区创建为物理卷。 pvdisplay&#xff1a;显示物理卷的详细信息&#xff0c;如大小、所属…

借助FastAdmin和uniapp,高效搭建AI智能平台

在数字化办公时代&#xff0c;效率与协作是企业发展的核心竞争力。传统的办公工具虽然功能丰富&#xff0c;但在面对复杂多变的团队协作需求时&#xff0c;往往显得力不从心。为了解决这一痛点&#xff0c;我们推出了一款全新的办公AI平台&#xff0c;它不仅能够满足文字和语音…

项目上传github——SSH连接配置文档

1. 检查是否已有 SSH 密钥 打开终端&#xff0c;检查是否已经存在 SSH 密钥对&#xff1a; ls ~/.ssh如果你看到类似 id_rsa 和 id_rsa.pub 的文件&#xff0c;说明你已经有 SSH 密钥。否则&#xff0c;继续下一步。 2. 生成 SSH 密钥 如果你没有 SSH 密钥&#xff0c;使用…