DQL:数据查询语言(单表)

2018-09-28  本文已影响6人  别动我名字呀

1.查询一张表的所有字段:

 select * from 表名;

2.查询指定字段:

select 字段1,字段2,字段3….from 表名;

3.like(模糊查询)

select 字段1,字段2…
% :任意字符
_  :单个字符
例:
select * frome t_student where stuName like ‘%张三%”;

4.where(条件查询)

1.limit (分页查询)
指定从哪个位置开始,一共查询多少条
SELECT * FROM p_operation_log limit 0,10

2.and(并且)
查询性别为男,并且年龄为20的学生记录
select  * from  students where gender='男'  and age=20;

3.or(或者)
查询性别为男,或者年龄为20的学生记录
select * from students where gender='男' or age=20;

4.in(包含)
查询学号为 1001,1008,10010的记录
select *  from students where  id=1001 or id=1008, or id=10010;
select *  from students where  id in(1001,1008,10010);

5.is null(为空)
查询年龄为null的值
select *  from students where  age is null;

6. is not null(不为空)
查询年龄不为null的值
select *  from students where  age is not  null;

7.!= (不等于)
查询性别不为男的记录
select *  from students where  gender != '男'

8.  between … and
查询年龄在18~20之间的学生记录
select *  from students where age>=18 and age<=20;
select *  from students where gae between 18 and 20;

5.字段控制查询

1.distinct(去重)
按照名字去重
select distinct name form students;

2. AS …(别名)
将字段name 改为resName
 select name as resName  from students

6.order by(排序)

ASC(从小到大  默认)
desc (从大到小)

按照年龄从小到大排序,有相同的则按照学号从大到小
select * from students order by age, id desc;

7.聚合函数

1.count() :(统计指定列不问null的行数)
查询工资加绩效大于5000的总人数
select count(id) from emp where ifnull(salary,0)+ ifnull(perfromance,0)>5000;
查询有绩效的人数和有管理费的人数
select count(perfromance),count(manage) form emp; 

2.max():(计算指定列的最大值,如果列是字符串类型,那么使用字符串排序运算)
查询员工的最高工资:
select max(salary) from emp 

3.min():(计算指定列的最小值,如果列是字符串类型,那么使用字符串排序运算)
查询员工的最低工资:
select min(salary) from emp 

4.sum():(计算指定列的数值和,如果指定列是字符串类型,计算结果为0)
查询员工薪水总和
select sum(salary) from emp 

5.avg():(计算指定列的平均值,如果指定列是字符串类型,计算结果为0)
查询所有员工的平均工资:
select avg(salary) from emp 

8.group by(分组)

1.group by
select gender from emp group by gender;
当group by 单独使用时只展示每组的第一条记录

2.group_concat()
将所有员工分为男女两组,并显示所有名字:
select gender, group_concat(name) from emp group by gender;

3.group by() 结合聚合函数
将所有员工按照部门分组,并显示最高工资:
select dep, group_concat(salary) ,max(salary) from emp group by dep;

注:使用分组时,select 后面的字字段一般都会出现在group by后面

9.group by() +having

用来分组查询后指定一些条件输出结果;
1.查询工资总大于9000的部门名称以及工资总和
select dep sum(salsry) from emp  
    group by  dep
    having sum(salary) >= 9000;

having是对分组后过滤,可以使用聚合函数
where是对分组前过滤,不可以使用聚合函数

2.查询工资大于2000,工资总和大于9000的部门名称和工资总和
select salary dep sum(salary) from emp 
    where salary > 2000
    group by dep
    having sum(salary)>9000
上一篇下一篇

猜你喜欢

热点阅读