mysql查询

来源:互联网 发布:鲍威尔身体数据 编辑:程序博客网 时间:2024/06/05 21:08
1、对查询结果分组计算
①、group by:后的字段相同为一组
示例:select ename,job from emp group by job


②、having :后面接函数(avg,sum...)
用于筛选条件符合的数据
示例:筛选工资在2000到3000之间人的工资以及数量:select avg(sal) avg_sal,SUM(sal) sum_sal from emp GROUP BY deptno HAVING avg_sal BETWEEN 2000 and 3000


2、连表查询语句:
select * from emp
select * from dept
拥有相同字段(外键)deptno
方法一:

示例:select * from emp e inner join dept d on e.deptno =d.deptno


inner join:左右都有的输出
left join:右链接,右边有的输出
right join:左链接,左边有的输出
方法二:
示例:select e.*,d.* from emp e ,dept d where  e.deptno=d.deptno


3、select 查询结果为表
示例一:SELECT a.*,d.dname FROM (SELECT deptno,SUM(sal), COUNT(empno) FROM emp GROUP BY deptno ) a    INNER JOIN dept d on a.deptno=d.deptno

示例二:SELECT d.deptno "部门编号",d.dname "部门名称",a.sum_sal "总计",a.count_sal "平均工资" ,a.max_sal "最高工资",a.min_sal " 最小工资" FROM (SELECT deptno, SUM(sal) sum_sal,MAX(sal)  max_sal,MIN(sal) min_sal,COUNT(empno) count_sal, ename FROM emp GROUP BY deptno)a,dept d where a.deptno=d.deptno 


4、分页
格式:select * from (select rownum r,a.* from (?)a)where r between ? and ?
第一个问号:指的是要查询的sql语句(包含排序);
第二个问号:指的是分页查询的起始行号;
第三个问号:指的是分页查询的结束行号;查询条数

示例:SELECT * FROM emp ORDER BY sal LIMIT 3,4;


——所有语句中的符号均为英文符号——