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

示例:

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;
相关推荐
RestCloud10 小时前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud10 小时前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence12 小时前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
Java水解14 小时前
Mysql查看执行计划、explain关键字详解(超详细)
后端·mysql
知其然亦知其所以然17 小时前
MySQL 社招必考题:如何优化查询过程中的数据访问?
后端·mysql·面试
DemonAvenger19 小时前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
程序新视界19 小时前
如何在MySQL中创建聚集索引?
mysql
AAA修煤气灶刘哥1 天前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
程序新视界1 天前
学习MySQL绕不开的两个基础概念:聚集索引与非聚集索引
mysql
RestCloud1 天前
跨境数据传输:ETL如何处理时区与日期格式差异
mysql·api