MySQL命令大全——DQL(数据查询语言)
一、基础查询
查询所有列
select * from 表名;
查询指定列
select 字段1, 字段2 from 表名;
二、条件查询
查询时给出where子句,来限定查询的结果符合某些要求
运算符及关键字:
=, !=, <>, >=, <=, >, <
select * from student where s_age>20;
between A and B——在A与B之间(包括A和B)
select * from student where s_age between 19 and 30;
in(value1, value2, value3...valuen) ——值在value1, value2, value3...valuen之中
select * from student where s_id in('20170001', '20170003', '20170005');
is null —— 值为空
select * from student where s_name is null;
and/or/not —— 与/或/非
select * from student where s_id in('20170001', '20170003', '20170005') and s_age>20;
select * from student where s_age>20 or s_age<9;
not与is null结合时候有两种语法:
1、select * from student where s_name is not null;
2、select * from student where not s_name is null;
三、模糊查询
关键字:like
使用下划线'_'代表任意一个字符
使用'%'代表任意零到多个字符
例:查询以s开头,总共五个字母的学生姓名:
select * from student where s_name like 's____'; //后面四个下划线
查询学生姓名中含有s的学生姓名
select * from student where s_name like '%s%';
四、字段控制查询
1、去除重复记录
关键字:distinct
当查询员工表emp中有哪些工资sal值时,当出现相同的工资记录时,我们需要去重
select distinct sal from emp;
2、查询求和
例:查询员工表emp中员工信息以及查看员工薪资sal与奖金comm之和
select *, sal+comm from emp;
注:只有两者都是数值类型才能相加,其中有一个不是数值类型就会报错,任何类型与NULL相加都为NULL
如果在奖金comm字段中有null值,结果就会有误,这时我们需要将null值改成0;
语法:select *, sal+ifnull(comm, 0) from emp;
3、给查询结果起别名
select *, sal+ifnull(comm,0) as total from emp;
注:as可以省略,但一般保留
五、排序
关键字:order by
asc 升序; desc 降序
例:查询所有学生记录,按年龄升序排列
select * from student order by age; //默认升序
select * from student order by age asc;
查询所有学生记录,按年龄降序排列
select * from student order by age desc;
当涉及到有多重排序规则时,按排序规则的先后顺序进行排序,如:查询所有员工,并按薪资降序排列,当薪资相同时按员工编号升序排列
select * from emp order by sal desc, id asc;
六、聚合函数
聚合函数是用来做纵向运算的函数
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0。
例:统计薪资sal在3000以上的员工人数
select count(sal) from emp where sal>3000;
查询平均工资:
select avg(sal) from emp;
七、分组查询
按字段分类,查询结果
关键字:group by
例:查询员工表emp中部门编号deptno和每个部门的工资之和
select deptno, sum(sal) from emp group by deptno;
八、限定结果起始行和总行数
关键字:limit
例:查询员工表emp中薪资在前三名的员工信息
select * from emp order by sal desc limit 0,3;
作用:分页