MySQL数据库常用查询语法及函数汇总
SQL查询的语法:
select
distinct
查询列
from
表名称
连接表(inner join/left join/right join)
where
查询条件
group by
分组依据
having
分组的查询条件
order by
排序字段
limit
结果限制
条件查询:
-- 查询所有在3,5,6三个部门的员工
select * from emp where dno=3 or dno=5 or dno=6;
select * from emp where dno=3 || dno=5 || dno=6;
select * from emp where dno in(3,5,6);
模糊查询:
-- 查询名字中带有“卡”的员工(模糊查询)
select * from emp where ename like '%卡%';
-- 查询名字只包含两个字的员工
select * from emp where ename like '__';
-- 查询所有员工中不是姓李的员工
select * from emp where ename not like '李%';
分组查询:
-- 查询每个部门月薪超过3500员工有多少人,要求显示部门号,人数以及平均薪资?
select dno,count(*) as '总人数',avg(sal) as '平均薪资' from emp where sal > 3500 group by dno;
多表联合查询:
等值连接
-- 为避免笛卡尔积出现,应该在查询时加入等值连接条件
-- 查询所有员工的工号,姓名,职位,月薪和所在部门名称
select e.eno,e.ename,e.job,e.sal,d.dname from emp e,dept d where e.dno=d.dno;
内连接(根据连接条件获取相交的部分,与等值连接结果一致)
-- 显示所有员工的基本信息包含部门信息
select * from emp e inner join dept d on e.dno=d.dno;
左外连接(左连接)
-- 左连接以左表为基准连接右表,不论左表是否存在与右表关联的数据,左表始终完全显示
-- 查询出所有员工信息包括部门信息,同时要求显示不属于任何部门的员工
select * from emp e LEFT JOIN dept d on e.dno = d.dno;
右外连接(右连接)
-- 右连接以右表为基准连接左表,不论右表是否存在与左表关联的数据,右表始终完全显示
select * from emp e RIGHT JOIN dept d on e.dno = d.dno;
子查询:将一个查询的查询结果当做另一个查询的条件使用;或者将一个查询的结果当做一张临时表使用
单行子查询
多行子查询
多列子查询(临时表)
-- 查询与猪八戒同一个部门的其他员工信息(子查询)
select * from emp where dno=(select dno from emp where ename='猪八戒');
自连接
select e2.* from emp e1,emp e2 where e1.dno = e2.dno and e1.ename='猪八戒';
内置函数: