• 数据库-DQL


    DQL:用来查询数据库表中的记录

    关键字:SELECT

    语法:

            select:字段列表

            from:表名列表

            where:条件列表

            group by:分组列表

            having:分组后条件列表

            order by:排序字段列表

            limit:分页参数

    DQL-基本查询

            查询多个字段:select 字段1,字段2,字段3 from 表名;

            查询所有字段(通配符):select*from 表名;

            设置别名:select 字段1[as 别名1],字段2[as 别名] from 表名;

            去除重复记录:select distinct 字段列表 from 表名;

    示例:

    select name, entrydate from tb_emp;
    

    1. select *
    2. from tb_emp;

    select name as 姓名, entrydate as 入职日期 from tb_emp;
    

    select distinct job from tb_emp;
    

    DQL-条件查询

            条件查询:select 字段列表 from where 条件列表;

    示例:

    1. select *
    2. from tb_emp where name='杨逍';

    1. select *
    2. from tb_emp where id<=5;

    1. select *
    2. from tb_emp where job is null;

    1. select *
    2. from tb_emp where job is not null;

    select *from tb_emp where password!=123456;

    1. select *
    2. from tb_emp
    3. where entrydate between '2001-01-01' and '2010-01-01 '
    4. and gender = 2;

    1. select *
    2. from tb_emp
    3. where job in (2, 3, 4);

    1. select *
    2. from tb_emp
    3. where name like '__';

    1. select *
    2. from tb_emp
    3. where name like '张%';

     DQL-分组查询

    介绍:将一列数据作为一个整体,进行纵向计算

    语法:select聚合函数(字段列表)from 表名;

            函数:

                    count:统计数量

                    max:最大值

                    min:最小值

                    avg:平均值

                    sum:  求和

    示例:

    1. select count(id)from tb_emp;
    2. select count(0)from tb_emp;
    3. select count(*)from tb_emp;

    select min(entrydate)from tb_emp;

    select avg(id)from tb_emp;

     注意:null值不参与所有聚合函数运算

                统计数量可以用:count(*)   count(字段)  count(常量)  推荐:count(*)

    DQL-分组查询

            select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]

    select gender,count(*) from tb_emp group by gender;

    select job ,count(*) from tb_emp where entrydate<='2015-01-01' group by job having count(*)>=2;

     where和having区别

            1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与where条件,不参与分组;而having是分组之后对结果进行过滤

            2.判断条件不同:where不能对聚合函数进行判断,而having可以

     DQL-排序查询

    条件查询:

            select 字段列表 from 表名 [where 条件] [group by 分组字段]order by字段1 排序方式1,字段2 排序方式2;

            ASC:升序(默认值)

            DESC:降序

    示例:

    1. select *
    2. from tb_emp order by entrydate;

    1. select *
    2. from tb_emp order by entrydate ,update_time desc ;

    DQL-分页查询

            select 字段列表 from 表名 limit 起始索引,查询记录数; 

    示例:

    1. select *
    2. from tb_emp limit 0,5;

     注意:

            1.起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数

            2.分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMT

            3.如果查询的是第一页数据,起始索引可以省略,直接简写为limit10

    案例:

    1. select *
    2. from tb_emp
    3. where name like '张%'
    4. and gender = 1
    5. and entrydate between '2000-01-01' and '2015-01-01'
    6. order by update_time desc
    7. limit 0,10;

    1. select (case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研主管'else'未分配'end)职位,
    2. count(*)
    3. from tb_emp group by job;

  • 相关阅读:
    java List截取
    Zookeeper - Java API 对节点操作
    Linux | 进程地址空间
    【国产替代】航空电子通信总线航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持
    linux 系统时间、时区、date、timedatectl
    HBase表的RowKey设计、热点和二级索引
    MyBatis-Plus--在xml中使用wrapper的方法
    Leetcode刷题详解——打家劫舍 II
    了解什么是架构基本概念和架构本质
    数据增强
  • 原文地址:https://blog.csdn.net/jbykmzls/article/details/132635758