38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询

38.1.正文

目录

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 外连接


38.2.mysql函数

mysql它也是一门编程语言,它也支持函数编程。 mysql中内置了很多函数,也可以自定义函数(mysql高级)

38.2.1 字符串函数

它可以用于对字符串的各种操作。

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第1张图片

-- 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;

38.2.2 数字函数

关于数字操作的一些函数

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第2张图片

select ceil(6.0),floor(3.9),MOD(7,1),abs(-10) from dual;

38.2.3 日期时间函数

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第3张图片

-- 返回当前日期
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;

38.2.4 流程函数

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第4张图片

-- 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;      

38.3.1 联表查询

为什么需要连表查询?

1.如果查询得结果在一张表中无法获取,需要关联多张表,那么这时就需要连表查询。
​
2.连表查询大多数都作用在外键得基础上。--- 表与表之间有关联。

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第5张图片

查询所有学生信息以及学生所在得班级信息。

表与表之间的关系

多对一: 比如 学生与班级表 员工与部门表

多对多: 比如 学生表与课程表 建议搞一个中间表

一对一: 比如: 妻子和丈夫表

联表查询几种

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第6张图片

38.3.2 内连接

查询A,B两张表的交集部分数据。

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第7张图片

例子:

  1. 查询员工的信息以及员工所在部门的信息。

-- 隐式连接
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;
​
​

38.3.3 外连接

38.0/mysql函数/ 字符串函数/日期时间函数/算术函数/流程函数/ 联表查询_第8张图片

-- 左外连接
select * from emp left join dept on emp.deptno=dept.deptno;
​
-- 右外连接
select * from emp right join dept on emp.deptno=dept.deptno;
​

你可能感兴趣的:(mysql,数据库)