美文网首页
DQL:数据查询语言(单表)

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

作者: 别动我名字呀 | 来源:发表于2018-09-28 00:10 被阅读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
    

    相关文章

      网友评论

          本文标题:DQL:数据查询语言(单表)

          本文链接:https://www.haomeiwen.com/subject/tgsroftx.html