其他分享
首页 > 其他分享> > DCL

DCL

作者:互联网

DCL - 用户管理

1. 查询用户

use mysql;   #用户名都放在mysql数据库的user表中
select * from user;

2. 创建用户

create user '用户名'@'主机名' identified by '密码';
主机名替换为%,表示任意主机都可以访问

3.修改用户密码

alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

4. 删除用户

drop user '用户名'@'主机名';

 

DCL-权限控制

1. 查询权限

show grants for '用户名'@'主机名';

2. 授予权限

grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

3. 撤销权限

revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

注意:

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

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

 

 

函数

字符串函数

 

 

样例:

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

select lower('Hello');
select upper('Hello');

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

select trim(' 01 ');
select substring('Hello World', 1, 5);

 

例题:

1. 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0

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

 

数值函数

 

 

 样例:

select ceil(1.5);
select floor(1.5);
select mod(3, 5);
select rand();
select round(1.5);
select round(1.4);

 

例题:

通过数据库的函数,生成一个六位数的随机验证码

select lpad(round(rand() * 1e6), 6, '0');

 

日期函数

 

 

 样例:

select current_date();
select current_time();
select now();
select year(now());
select month(now());
select day(now());

select date_add(now(), interval 70 day);

select datediff('2022-12-01', now());

 

例题:

查询所有员工的入职天数,并根据入职天数倒序排序

select name, datediff(current_date, entrydate) as entrydays from tmp order by entrydays desc;

 

流程函数

 

 

 

样例:

 

select if(true, 'ok', 'error');

select ifnull(null, 2);

# 查询tmp表的员工姓名和工作地址(北京/上海 --> 一线城市, 其它 --> 二线城市)
select
       name, workaddress,
       case when(workaddress = '北京' or workaddress = '上海') then '一线城市' else '二线城市' end as '城市类型'
from tmp;

select
    name, workaddress,
    case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end as '城市类型'
from tmp;

 

例题:

统计成员成绩,展示规则如下:

  >= 80, 优秀

 >= 60, 及格

否则, 不及格

# 增加考核成绩字段
alter table tmp add score int comment '考核成绩';
# 给字段score赋值
update tmp set score = rpad(round(rand() * 100), 2, 0);

select
       name,
       case when score >= 80 then '优秀' when score >= 60 then '及格' else '不及格' end as '成绩类型'
from tmp;

 

标签:tmp,DCL,用户名,主机名,权限,now,select
来源: https://www.cnblogs.com/WTSRUVF/p/16462668.html