天天看点

MySql查询语句小汇总一(DQL语句)

DQL语句:

数据查询语言,用来查询记录(数据);主要是对表记录的查询。(重点)

一:基本查询

1,查看所有列:select * from 表名;

       (其中“*”表示所有列)

MySql查询语句小汇总一(DQL语句)

2,查询指定字段信息:

       Select 列1,列2…from 表名;

       (只查询name列和age列的信息)

MySql查询语句小汇总一(DQL语句)

3,数量类型的列可以做加、减、乘、除计算:

       将stu表中的age列字段数值加3:select name,age+3 from stu;

MySql查询语句小汇总一(DQL语句)

4,表中的字符串课做连续运算:

       求stu表中age字段记录数:

MySql查询语句小汇总一(DQL语句)

5,给列起别名:select 列名 as 别名 from 表名:

       将name列命名为“姓名”:select name as 姓名,age from stu;

       (其中as可以省略)

MySql查询语句小汇总一(DQL语句)

二:条件控制

  1. 条件查询:

查询语句可以通过where字句来控制记录:

例:查询年龄大于25岁的人的信息:

Select * froms stu where age>25;

MySql查询语句小汇总一(DQL语句)

2,模糊查询:当我们想查询姓张的人数时,只需要查这个姓氏就可以,就可以使用模糊查询(模糊查询使用运算符:like,其中“_”表示匹配任意一个字符;“%”表示匹配多个字符)

       例1:查询姓张的,并且名字是两个字的人的信息:

       Select * from stu where name like ’张_’;

MySql查询语句小汇总一(DQL语句)

       例2:查询表中名字带有“某”字的人的信息:

       Select * from stu where name like ‘%某%’;

MySql查询语句小汇总一(DQL语句)

3,排序查询:排序查询需要用到关键字:order by ,然后末尾加关键字asc表示升序排序,desc表示降序排序(默认情况下是升序排序)

       将表中信息按年龄升序排序:

       Select * from stu order by age desc;

MySql查询语句小汇总一(DQL语句)

4,使用多列作为排序条件:

       将表中信息按年龄升序排序,若年龄相同,则按照id降序排序:

       Select * from stu order by age asc,id desc;

MySql查询语句小汇总一(DQL语句)

5,聚合函数:聚合函数用来做某列的纵向运算

       5.1,count函数:

              计算表中所有列不为空的行数select count(*) from stu;

MySql查询语句小汇总一(DQL语句)

              计算age列不为空的行数:

              Select count(age) from stu;

MySql查询语句小汇总一(DQL语句)

       5.2,max(min)函数:查询最大年龄

              Select max(age) from stu;

MySql查询语句小汇总一(DQL语句)

       5.3,sum函数:计算左右人的年龄总和

              Select sum(age) from stu;

MySql查询语句小汇总一(DQL语句)

       5.4,avg函数:计算所有人的平均年龄

              Select avg(age) from stu;

MySql查询语句小汇总一(DQL语句)

6,分组查询:分组查询是把记录使用某一列进行分许,然后查询组信息

       例1:查看所有性别的记录数

       Select sex,count(*) from stu group by sex;

MySql查询语句小汇总一(DQL语句)

       例2:根据性别分组,查询该性别中的最大年龄的人的姓名,年龄等信息:

       Select sex,max(age) from stu group by age;

MySql查询语句小汇总一(DQL语句)

       例3:组条件:

       以class(学科)分组,查询每组的记录数,条件为记录数大于等于3

       Select class,count(*) from stu group by class having count(*)>=3;

MySql查询语句小汇总一(DQL语句)

一些案例题:

1,查询出部门编号为30的所有员工

      select * from emp where deptno=30;

2,查询所有销售员的姓名、编号和部门编号

      select ename,empno,deptno from emp where job='销售员';

3,查询奖金高于工资的员工

      select ename from emp where comm > sal;

4,查询奖金高于工资60%的员工

      select ename from emp where comm > sal*0.6;

5,查询部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料

      select * from emp where (deptno = 10 and job='经理') or (deptno=20 and job='销售员');

6,查询部门编号为10中所有经理,部门编号为20中所有销售员,还有既不是经理又不是销售员但其工资大于或等于20000的所有员工资料

      select * from emp where (deptno = 10 and job='经理') or (deptno=20 and job='销售员')or (job not in ('经理','销售员') and         sal>20000);

7,查询无奖金或奖金低于1000的员工

     select * from emp where comm is null or comm<1000;

8,查询名字由三个字组成的员工

     select * from emp where ename like '___';

9,查询2000年入职的员工

      select * from emp where hiredate like '2000-%';

10,查询所有员工详细信息,用编号升序排序

       select * from emp order by empno asc;

11,查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序

      select * from emp order by sal desc,hiredate asc;

12,查询每个部门的平均工资

      select deptno,avg(*) 平均工资 from emp group by deptno;

13,查询每个部门的雇员数量

      select deptno,count(*) 数量 from emp group by deptno;

14,查询每种工作的最高工资、最低工资、人数

       select job,max(*) 最高工资,min(*) 最低工资,count(*) 人数 from emp group by job;

继续阅读