0
点赞
收藏
分享

微信扫一扫

最新超详MySQL基础(SQL 字符串函数 数值函数 日期函数 流程函数)

目录

1.Mysql下载安装启动

2.图形化界面工具

3.SQL

1.DDL

2.DML

3.DQL

4.DCL

1.管理用户

2.权限控制

4.函数

字符串函数

数值函数

日期函数

流程函数


1.Mysql下载安装启动

Mysql下载安装启动

6bdc4891a9924b9eaabaf6b73fabdfee.png

 

2.图形化界面工具

图形化界面工具

3.SQL

1.DDL

1.DDL 

2.DML

2022最新超详MySQL基础(mysql下载,界面工具,增删改查)_一个热爱编程的小白白的博客-CSDN博客

3.DQL

2022最新超详MySQL基础(mysql下载,界面工具,增删改查)_一个热爱编程的小白白的博客-CSDN博客

4.DCL

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

问权限

1.管理用户

1). 查询用户

select * from mysql.user;

查询的结果如下 :

其中 Host 代表当前用户访问的主机 , 如果为 localhost, 仅代表只能够在当前本机访问,是不可以

远程访问的。 User 代表的是访问该数据库的用户名。在 MySQL 中需要通过 Host User 来唯一标识一 个用户。

2). 创建用户

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

3). 修改用户密码

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

4). 删除用户

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

案例:

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

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

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

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

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

alter user 'heima'@'%' identified with mysql_native_password by '1234';

D. 删除 itcast@localhost 用户

drop user 'itcast'@'localhost';

2.权限控制

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

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

1). 查询权限

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

2). 授予权限

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

3). 撤销权限

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

案例:

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

show grants for 'heima'@'%';

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

grant all on itcast.* to 'heima'@'%';

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

revoke all on itcast.* from 'heima'@'%';

4.函数

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

我们先来看两个场景:

 

1). 在企业的 OA 或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能

够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12 ,那如果快速计

算出天数呢?

2). 在做报表这类的业务需求中 , 我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的

分数值,如 98/75 ,如何快速判定分数的等级呢?

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

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

字符串函数

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

演示如下:

A. concat : 字符串拼接

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

 B. lower : 全部转小写

select lower('Hello');

 

 C. upper : 全部转大写

select upper('Hello');

 

D. lpad : 左填充

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

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')

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

 

数值函数

常见的数值函数如下:

 

演示如下:

A. ceil :向上取整

select ceil(1.1);

 

B. floor :向下取整

select floor(1.9); 1

 

C. mod :取模

select mod(7,4);

D. rand:获取随机数

select rand();

 

 E. round:四舍五入

select round(2.344,2);

 

案例:

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

思路: 获取随机数可以通过 rand() 函数,但是获取出来的随机数是在 0-1 之间的,所以可以在其基础上乘以1000000 ,然后舍弃小数部分,如果长度不足 6 位,补 0

 

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

日期函数

常见的日期函数如下:

 

演示如下:

A. curdate :当前日期

select curdate();

B. curtime :当前时间

select curtime()

C. now :当前日期和时间

select now();

D. YEAR , MONTH , DAY :当前年、月、日

select YEAR(now()); select MONTH(now()); select DAY(now());

E. date_add :增加指定的时间间隔

select date_add(now(), INTERVAL 70 YEAR );

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

select datediff('2021-10-01', '2021-12-01');

案例:

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

思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用 datediff 函数来完成。

select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

流程函数

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

 

演示如下:

A. if

select if(false, 'Ok', 'Error');

 B. ifnull

select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');

 

 

 

C. case when then else end

需求 : 查询 emp 表的员工姓名和工作地址 ( 北京 / 上海 ----> 一线城市 , 其他 ----> 二线城市 )

selectname, ( 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;

MySQL 的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例场景,

思考一下需要用到什么样的函数来实现 ?

1). 数据库中,存储的是入职日期,如 2000-01-01 ,如何快速计算出入职天数呢? -------->

答案 : datediff

2). 数据库中,存储的是学生的分数值,如 98 75 ,如何快速判定分数的等级呢? ---------->

答案 : case ... when ...

举报

相关推荐

0 条评论