MySQL入门之数据库的基本函数

数字函数

截图来自慕课网

SELECT ABS(-100);
SELECT ROUND (4.62.88* 100)/100;
SELECT FLOOR (9.9);
SELECT CEIL(3.2);
SELECT POWER(2,3);
SELECT LOG (7,3);
SELECT LN (10);

截图来自慕课网

SELECT SQRT(9);
SELECT PI();
SELECT SIN(RADIANS(30));
SELECT COS(RADIANS(45));
SELECT TAN(RADIANS(30));
SELECT COT(RADIANS(45));
SELECT DEGREES(1);

时间函数

NOW()函数能获得系统日期和时间,格式yyyy-MM-dd hh:mm:ss。
CURDATE()函数能获得当前系统日期,格式yyyy-MM-dd。
CURTIME()函数能获得当前系统时间,格式hh:mm:ss。
DATE_FORMAT()函数用于格式化日期,返回用户想要的日期格式。

SELECT NOW(), CURDATE(), CURTIME();
# DATE_FORMAT(日期, 表达式)
# 查找2023-6-28是星期几。
SELECT DATE_FORMAT("2023-6-28", "%w");
# 查询1981年上半年入职的员工有多少。
SELECT COUNT(*) FROM t_emp WHERE DATE_FORMAT(hiredate, "%Y") = 1981
AND DATE_FORMAT(hiredate, "%m") <= 6;
# 在MySQL数据库中,日期直接加减或者和数字进行计算是转成数字之后的加减,返回的也是数字格式的结果,不是日期格式的结果,所以要用日期计算函数进行日期格式的计算。
# DATE_ADD()函数可以进行日期的偏移计算
# DATE_ADD(日期, INTERVAL 偏移量 时间单位)
SELECT DATE_ADD(NOW(), INTERVAL 30 DAY);
# 日期之间相差多少天: DATEDIFF (日期一,日期二)
SELECT DATEDIFF(NOW(), DATE_ADD(NOW(), INTERVAL 1 MONTH));

截图来自慕课网

字符函数

截图来自慕课网

SELECT LOWER(ename),UPPER(ename),LENGTH (ename) ,CONCAT (sal,"$" ), INSTR(ename , "A") FROM t_emp;
SELECT INSERT("你好",1,2,"先生");
SELECT REPLACE("你好先生", "先生", "女士");

截图来自慕课网

SELECT SUBSTR("你好世界",3,2),SUBSTRING("你好世界",3,2);
SELECT LPAD(SUBSTRING("13312345678",8,4),11,"*");
SELECT RPAD(SUBSTRING("李晓娜", 1, 1), LENGTH("李晓娜")/3, "*");
SELECT TRIM("               Hello world        ");

条件函数

# 如果表达式为NULL, 则返回填写的值
# IFNULL(表达式, 值)
# 如果表达式为真, 则返回第一个值, 如果为假则返回第二个值 
# IF(表达式, 值1, 值2)
# 练习: SALES部门发放礼品A,其余部门发放礼品B,打印每名员工获得的礼品
SELECT e.empno, e.ename, d.dname, IF(d.dname="SALES", "礼品A", "礼品B")
FROM t_emp e JOIN t_dept d ON e.deptno = d.deptno;
# CASE
# 	WHEN 表达式 THEN 值1
# 	WHEN 表达式 THEN 值2
# 	......
# 	ELSE 值N
# END
# 练习: SALES部门中工龄超过20年 涨幅 10%
# SALES部门中工龄不满20年 涨幅 5%
# ACCOUNTING部门 涨幅 +300元
# RESEARCH部门里低于部门平均底薪 涨幅 +200元
# 没有部门的员工 涨幅 +100元
UPDATE t_emp e LEFT JOIN t_dept d ON e.deptno = d.deptno LEFT JOIN 
(SELECT deptno, AVG(sal) asal FROM t_emp GROUP BY deptno) tav ON e.deptno = tav.deptno 
SET e.sal = (
    CASE
        WHEN d.dname = "SALES" AND DATEDIFF(NOW(), hiredate)/365 >= 20
        THEN e.sal = e.sal*1.1
        WHEN d.dname = "SALES" AND DATEDIFF(NOW(), hiredate)/365 < 20
        THEN e.sal = e.sal*1.05
        WHEN d.dname = "ACCOUNTING"
        THEN e.sal = e.sal+300
        WHEN d.dname = "RESEARCH" AND e.sal < tav.asal
        THEN e.sal = e.sal+200
        WHEN d.dname IS NULL
        THEN e.sal = e.sal+100
        ELSE e.sal = e.sal
    END
    );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值