当前位置: 首页 > news >正文

数据库-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;


select *
from tb_emp;

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

select distinct job from tb_emp;

DQL-条件查询

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

示例:

select *
from tb_emp where name='杨逍';

select *
from tb_emp where id<=5;

select *
from tb_emp where job is null;

select *
from tb_emp where job is not null;

select *from tb_emp where password!=123456;

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

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

select *
from tb_emp
where name like '__';

select *
from tb_emp
where name like '张%';

 DQL-分组查询

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

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

        函数:

                count:统计数量

                max:最大值

                min:最小值

                avg:平均值

                sum:  求和

示例:

select count(id)from tb_emp;
select count(0)from tb_emp;
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:降序

示例:

select *
from tb_emp order by entrydate;

select *
from tb_emp order by entrydate ,update_time desc ;

DQL-分页查询

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

示例:

select *
from tb_emp limit 0,5;

 注意:

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

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

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

案例:

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

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

http://www.lryc.cn/news/161796.html

相关文章:

  • 19 螺旋矩阵
  • 数据结构与算法:概述
  • 顺序表详解
  • 基于RabbitMQ的模拟消息队列之六——网络通信设计
  • 算法:数组中的最大差值---“打擂台法“
  • 三种方式查看 JVM 垃圾收集器
  • React中函数式组件与类组件有何不同?
  • windows11安装docker时,修改默认安装到C盘
  • python模块之 aiomysql 异步mysql
  • 开开心心带你学习MySQL数据库之第八篇
  • yml配置动态数据源(数据库@DS)与引起(If you want an embedded database (H2, HSQL or Derby))类问题
  • yolov5运行过程遇到的小问题(随时更新)
  • 使用FabricJS创建Image对象的JSON表示
  • 【牛客刷题】反转固定区间链表、每k个节点一组反转
  • 算法:数组常见套路1---双指针、取模、打擂台法
  • App 出海实践:Google Play 结算系统
  • 国际慈善日 | 追寻大爱无疆,拓世科技集团的公益之路
  • 关于DNS的一些认识
  • 游戏性能优化
  • 公开游戏、基于有向图的游戏
  • CSS学习笔记05
  • Linux查看指定端口是否被占用
  • 【Python 自动化】小说推文一键生成思路概述
  • MySQL中的字符集与排序规则详解
  • Java中如何进行加锁??
  • Pytorch3D多角度渲染.obj模型
  • MyBatisPlus 基础Mapperr接口:增删改查
  • 计算机网络与技术——概述
  • 详解TCP/IP协议第三篇:通信数据在OSI通信模型的上下传输
  • 《C++ primer plus》精炼(OOP部分)——对象和类(2)