目录
38.1.正文
38.2.mysql函数
38.2.1 字符串函数
38.2.2 数字函数
38.2.3 日期时间函数
38.2.4 流程函数
38.3.1 联表查询
38.3.2 内连接
38.3.3 外连接
mysql它也是一门编程语言,它也支持函数编程。 mysql中内置了很多函数,也可以自定义函数(mysql高级)
它可以用于对字符串的各种操作。
-- concat(str1,str2....) 字符串拼接
select concat('商品的名称:',pname,';商品的价格:',price) from product;
-- lower() upper() 转为大小写
select LOWER('SMITH'),upper('owj') from dual;
-- LPAD RPAD 左右填充
select lpad('why',6,'ha'),rpad('lll',2,'r') from dual;
-- trim 去除左右空格
select trim(' hello ') from dual;
-- substr() 截取字符串
select pname, substr(pname,3,2) from product
-- CHAR_LENGTH 求字符串的长度
select pname, CHAR_LENGTH(pname) from product;
关于数字操作的一些函数
select ceil(6.0),floor(3.9),MOD(7,1),abs(-10) from dual;
-- 返回当前日期
select curdate() from dual;
-- 返回当前时间
select curtime() from dual;
-- 返回当前日期和时间
select now() from dual;
-- 获取指定日期的年月日
select year('2022-11-12'),month('2023-12-11'),day('2024-01-01') from dual;
-- 添加某个日期
select date_add('2022-11-22',INTERVAL 3 year) from dual;
select date_sub('2022-11-22',INTERVAL 3 year) from dual;
-- 两个日期的差
select datediff('2020-11-22','2019-11-22') from dual;
-- 查询最近三天的订单
select TIMESTAMPDIFF(MONTH,'2000-11-11','2002-10-11') from dual;
-- IF控制语句
select price, if(price>3000,'价格贵','价格便宜') from product;
-- ifnull语句 如果price不为null,则获取price的值,否则获取6666
select price, ifnull(price,6666) from product;
-- 90~100 优秀 80~90 良好 60~70 及格 60 不及格
select cno,score,case when score>90 and score<=100 then '优秀'
when score>70 and score<=90 then '良好'
when score>60 and score<=70 then '及格'
else '不及格'
end
from choose_course;
为什么需要连表查询?
1.如果查询得结果在一张表中无法获取,需要关联多张表,那么这时就需要连表查询。 2.连表查询大多数都作用在外键得基础上。--- 表与表之间有关联。
查询所有学生信息以及学生所在得班级信息。
表与表之间的关系
多对一: 比如 学生与班级表 员工与部门表
多对多: 比如 学生表与课程表 建议搞一个中间表
一对一: 比如: 妻子和丈夫表
联表查询几种
查询A,B两张表的交集部分数据。
例子:
查询员工的信息以及员工所在部门的信息。
-- 隐式连接
select * from emp,dept where emp.deptno=dept.deptno and sal>9000; -- 如果没有添加【联表条件】则会出现笛卡尔积
-- 显示连接
select * from emp inner join dept on emp.deptno=dept.deptno where sal>9000;
-- 左外连接
select * from emp left join dept on emp.deptno=dept.deptno;
-- 右外连接
select * from emp right join dept on emp.deptno=dept.deptno;