数据库-DQL

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

关键字:SELECT

语法:

select:字段列表

from:表名列表

where:条件列表

group by:分组列表

having:分组后条件列表

order by:排序字段列表

limit:分页参数

DQL-基本查询

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

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

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

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

示例:

sql 复制代码
select name, entrydate from tb_emp;
sql 复制代码
select *
from tb_emp;
sql 复制代码
select name as 姓名, entrydate as 入职日期 from tb_emp;
sql 复制代码
select distinct job from tb_emp;

DQL-条件查询

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

示例:

sql 复制代码
select *
from tb_emp where name='杨逍';
sql 复制代码
select *
from tb_emp where id<=5;
sql 复制代码
select *
from tb_emp where job is null;
sql 复制代码
select *
from tb_emp where job is not null;
sql 复制代码
select *from tb_emp where password!=123456;
sql 复制代码
select *
from tb_emp
where entrydate between '2001-01-01' and '2010-01-01 '
  and gender = 2;
sql 复制代码
select *
from tb_emp
where job in (2, 3, 4);
sql 复制代码
select *
from tb_emp
where name like '__';
sql 复制代码
select *
from tb_emp
where name like '张%';

DQL-分组查询

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

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

函数:

count:统计数量

max:最大值

min:最小值

avg:平均值

sum: 求和

示例:

sql 复制代码
select count(id)from tb_emp;
select count(0)from tb_emp;
select count(*)from tb_emp;
sql 复制代码
select min(entrydate)from tb_emp;
sql 复制代码
select avg(id)from tb_emp;

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

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

DQL-分组查询

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

sql 复制代码
select gender,count(*) from tb_emp group by gender;
sql 复制代码
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:降序

示例:

sql 复制代码
select *
from tb_emp order by entrydate;
sql 复制代码
select *
from tb_emp order by entrydate ,update_time desc ;

DQL-分页查询

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

示例:

sql 复制代码
select *
from tb_emp limit 0,5;

注意:

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

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

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

案例:

sql 复制代码
select *
from tb_emp
where name like '张%'
  and gender = 1
  and entrydate between '2000-01-01' and '2015-01-01'
order by update_time desc
limit 0,10;
sql 复制代码
select (case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研主管'else'未分配'end)职位,
count(*)
from tb_emp group by job;
相关推荐
这个DBA有点耶8 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
这个DBA有点耶10 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技11 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend12 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence15 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend1 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶1 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung1 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql