SELECT*FROM emp WHERE ename LIKE'j%';#以j开头的记录SELECT*FROM emp WHERE ename LIKE'%k';#以kj结尾的记录SELECT*FROM emp WHERE ename LIKE'%a%';#包含a的记录SELECT*FROM emp WHERE ename NOTLIKE'j%';#不以j开头的记录SELECT*FROM emp WHERE ename LIKE'a__';#以a开头,后面有两个字符的记录SELECT*FROM emp WHERE ename LIKE'%a__';#包含a,后面有两个字符的记录
5.查询指定范围内的记录(between and)
SELECT*FROM emp WHERE sal BETWEEN8000AND2000;#[8000,2000],错误示范,查不到数据SELECT*FROM emp WHERE sal BETWEEN2000AND8000;#[2000,8000],between and 查询范围记录时较小数在and前,较大数在and后SELECT*FROM emp WHERE sal <8000AND sal >2000;#(8000,2000)
6.查询满足多个条件的记录(or,and)
SELECT*FROM emp WHERE sal =8000OR sal =10000;SELECT*FROM emp WHERE sal =8000OR sal =10000OR sal =3000;SELECT*FROM emp WHERE sal IN(3000,8000,10000);SELECT*FROM emp WHERE ename ='jack'AND job ='副总';
7.查询用户住址(distinct去重)
SELECTDISTINCT address FROM`tb_user_address`;SELECTDISTINCT NAME FROM users WHERE age =19;
8.按升降序查询记录(oeder by)
SELECT*FROM emp ORDERBY sal ASC;#ASC 默认升序SELECT*FROM emp ORDERBY sal DESC;#降序SELECT*FROM emp ORDERBY ename ASC,sal DESC;
9.查询总人数(聚合函数count())
SELECTCOUNT(*)FROM emp;SELECTCOUNT(1)FROM emp;#最常用,最高效SELECTCOUNT(ename) COUNT FROM emp;
SELECT addr,COUNT(addr) X FROMUSERGROUPBY addr HAVING X>=2SELECT addr,COUNT(addr) X FROMUSERWHERE X>=2GROUPBY addr;#SQl优化,先过滤,再分组
12.查询记录中最年长和最年轻的人(聚合函数max,min)
SELECTMAX(age),MIN(age)FROMUSER;SELECT ename,sal FROM emp WHERE sal =(SELECTMAX(sal)FROM emp);#子查询
13.查询大于平均年龄的人名(聚合函数avg)
SELECT NAME,age FROMUSERWHERE age >(SELECTAVG(age)FROMUSER);
14.查询工资最高的员工信息
SELECT*FROM emp WHERE sal =(SELECTMAX(sal)FROM emp);
15.查询各部门最高薪资
SELECT deptno,ename,MAX(IFNULL(sal,0)) maxsal FROM emp GROUPBY deptno;
16.查询empno是100或者200的记录(or)
SELECT*FROM emp WHERE empno =100OR empno =200;#尽量避免出现orSELECT*FROM emp WHERE empno =100;#应分成两部查询SELECT*FROM emp WHERE empno =200;
17.查询划分了部门的员工信息(in)
SELECT*FROM emp WHERE deptno IN(SELECT deptno FROM dept);#子查询SELECT*FROM emp INNERJOIN dept ON emp.`deptno`=dept.`deptno`;#连接查询SELECT*FROM emp,dept WHERE dept.`deptno`=emp.`deptno`;#笛卡尔积
18.查询没划分部门的员工信息(not in)
SELECT*FROM emp INNERJOIN dept ON emp.`deptno`!=dept.`deptno`;#错误SQL,避免在where子句中出现 != 和 <>SELECT*FROM emp WHERE deptno NOTIN(SELECT deptno FROM dept);#只能用子查询
19.查询同名的员工记录!!!
SELECT*FROM emp WHERE ename IN(SELECT ename FROM emp GROUPBY ename HAVINGCOUNT(ename)>1);