自学MYSQL 笔记2(基础篇)

函数

字符串函数

常用函数:

函数功能
CONCAT(s1, s2, …, sn)字符串拼接,将s1, s2, …, sn拼接成一个字符串
LOWER(str)将字符串全部转为小写
UPPER(str)将字符串全部转为大写
LPAD(str, n, pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str, n, pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str, start, len)返回从字符串str从start位置起的len个长度的字符串
REPLACE(column, source, replace)替换字符串
select concat('hello',' mysql');

select lower('HELLO');

select upper('hello');

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

select trim(' hello  mysql ');

select substring('hello mysql',1,5);

案例:

-- 将emp表中的工号变为5位
update emp set worknumber = lpad(worknumber,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.1);

select mod(3,4);
select mod(7,4);

select rand();

select round(2.344,2);

案例:

-- 随机生成6位的验证码
select lpad(round(rand()*1000000,0),6,'0');

日期函数

常见函数:

函数功能
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定date的年份
MONTH(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('2021-12-01','2021-11-01');

案例:

-- 查询所有员工的入职天数,并根据入职天数倒序排序
select name,datediff(curdate(),entrydate) as 'entrydates' from emp order by entrydates desc;

流程函数

常用函数:

函数功能
IF(value, t, f)如果value为true,则返回t,否则返回f
IFNULL(value1, value2)如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END如果val1为true,返回res1,… 否则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END如果expr的值等于val1,返回res1,… 否则返回default默认值
select if(true,'ok','error');
select if(false,'ok','error');

select ifnull('ok','default');
select ifnull('','default');
select ifnull(null,'default');

select
    name,
    (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);

要求:统计班级各个学员的成绩,显示>=85, 为优秀;>=60,为及格;否则为不及格。

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;

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值