字符串函数
函数 | 功能 |
---|---|
concat(s1,s2......sn) | 字符串拼接,将s1到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个长度的字符串 |
select concat('hello','mysql');
select lower('HELLO');
select upper('hello');
select lpad('01','5','-');
select rpad('01','5','-');
select trim(' hello mysql ');
select substring('hello mysql','1','5')
1.企业员工的工号统一为5位数,且不足5位数的全部前面补0,比如1号员工的工号为00001
update wscg.emp set workno=lpad(workno,5,'0');
数值函数
函数 | 功能 |
---|---|
ceil(x) | 向上取整 |
floor(x) | 向下取整 |
mod(x,y) | 返回x/y的模 |
rand() | 返回0~1内的随机数 |
round(x,y) | 求参数x的四舍五入的值,保留y位小数 |
select ceil(1.1);
select floor(1.9);
Select mod(3,4);
select rand();
select round(2.34,2);
练习
通过数据库的函数,生成一个六位数的随机验证码
select lpad(round(rand()*1000000,0),6,'0');
日期函数
函数 | 功能 |
---|---|
curdate() | 返回当前日期 |
curtime() | 返回当前时间 |
now() | 返回当前日期和时间 |
year(date) | 获取指定date的年份 |
mothon(date) | 获取指定date的月份 |
day(date) | 获取指定date的日期 |
date_add(date,interval expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
datediff(date1,date2) | 返回起始时间date1和结束时间date2之间的天数 |
select curdate() ;
select curtime();
select now();
select year(now());
select month(now());
select day(now());
select date_add(now(),interval 70 month );
select datediff('2022-12-01','2021-12-30');
练习
查询所有员工的入职天数,并根据天数倒叙排序
select name,datediff(curdate(),entrydata)as 'entrydays'from wscg.emp order by entrydays desc;
流程控制函数
函数 | 功能 |
---|---|
if(value,t,f) | 如果value为true,则返回t,否则返回f |
ifnull(value1,value2) | 如果value1不为空,返回value1,否则返回value2 |
case when 【val1】then【res1】...else【default】end | 如果val1为ture,返回res1,否则返回default默认值 |
case 【expr】when 【val1】then【res1】...else【default】end | 如果expr的值等于val1,返回res1,否则返回default默认值 |
select if(true,'ok','error');
select ifnull('ok','default');
select ifnull(null,'default');
查询emp表员工姓名和工作地址(北京/上海返回一线城市,其他返回二线城市)
select name,(case workaddress when'北京'then '一线城市'when '上海'then '一线城市'else'二线城市'end)as '工作地址'from wscg.emp;
练习
统计班级各个学院的成绩,展示的规则如下
>=85展示为优秀
>=60展示为及格
其他为不及格
show databases ;
use wscg;
create table score(
id int ,
name varchar(20),
math int,
english int,
chinese int
)comment '学员成绩表';
insert into score(id,name,math,english,chinese)value (1,'Tom',67,88,95),(2,'Rose',23,66,98),(3,'Jack',56,98,76);
select id,
name,
(case when math>=85 then'优秀'when math between 65 and 85 then '及格'else '不及格'end)as math,
(case when english>=85 then'优秀'when english between 65 and 85 then '及格'else '不及格'end)as english,
(case when chinese >=85 then'优秀'when chinese between 65 and 85 then '及格'else '不及格'end)as chinese
from score;
数据库学习记录(看看多久可以掌握)
学习的课程是b站黑马程序员的免费课程,主要是记录一下代码和流程,没有很详细,下面是课程地址黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili
如果大家发现代码有错误的,请留言告诉我,我会及时修改的