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;
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。