MySQL基础教程——查询操作(下)
@
书接上回,我们来继续介绍MySQL的查询操作。
二、内置函数
在继续学习MySQL的函数之前我们需要了解一些基本的MySQL内置函数。
(1)日期函数

(2)字符串函数

(3)数学函数

(4)其它函数
| 函数名称 | 描述 |
|---|---|
| user() | 查询当前用户 |
| md5(str) | 对一个字符串进行md5摘要,摘要后得到一个32位字符串 |
| database() | 显示当前正在使用的数据库 |
| password() | MySQL数据库使用该函数对用户加密 |
| ifnull(val1, val2) | 如果val1为null,返回val2,否则返回val1的值 |
三、复合查询
(1)自连接
自连接是指在同一张表连接查询。
实现方式与案例:
# 子查询方法
select empno,ename from emp where emp.empno=(select mgr from emp where
ename='FORD');
# 多表查询方法
elect leader.empno,leader.ename from emp leader, emp worker where
leader.empno = worker.mgr and worker.ename='FORD';
(2)子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。
1、单行子查询
select * from EMP WHERE deptno = (select deptno from EMP where
ename='smith');
2、多行子查询
在这其中将会使用到一些关键字。
in 关键字
# 查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的
select ename,job,sal,deptno from emp where job in (select distinct job from
emp where deptno=10) and deptno<>10;
all 关键字
# 显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
select ename, sal, deptno from EMP where sal > all(select sal from EMP where
deptno=30);
any关键字
# 显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)
select ename, sal, deptno from EMP where sal > any(select sal from EMP where
deptno=30);
3、多列子查询
单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。
# 查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人
select ename from EMP where (deptno, job)=(select deptno, job from EMP
where ename='SMITH') and ename <> 'SMITH';
4、在from子句中使用子查询
# 显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
# 获取各个部门的平均工资,将其看作临时表
select ename, deptno, sal, format(asal,2) from EMP,
(select avg(sal) asal, deptno dt from EMP group by deptno) tmp
where EMP.sal > tmp.asal and EMP.deptno=tmp.dt;
5、合并查询
为了合并多个select的执行结果,可以使用集合操作符 union,union all。
union
# 将工资大于2500或职位是MANAGER的人找出来
select ename, sal, job from EMP where sal>2500 union select ename, sal, job from EMP where job='MANAGER';--去掉了重复记录
union all
# 将工资大于25000或职位是MANAGER的人找出来
select ename, sal, job from EMP where sal>2500 union all select ename, sal, job from EMP where job='MANAGER';
结语
以上就是我们关于MySQL的基本查询操作内容啦。如果喜欢我的内容,请点赞、收藏加关注,多多支持我这个编程小白啊,以及欢迎各位在评论区讨论交流,并指出我的不足,谢谢大家。

浙公网安备 33010602011771号