数据库:SQL分类之DQL详解

1.DQL语法

select 

          字段列表

from

          表名列表

where

          条件列表

group by

          分组字段列表

having

          分组后条件列表

order by

          排序字段列表

limit 

          分页参数

基本查询

条件查询(where)

聚合函数(count、max、min、avg、sum )

分组查询(group by)

排序查询(order by)

分页查询 (limit)

2.基础查询 

1.查询指定字段

select 字段1,字段2,字段3 from 表名;

例:

select name,workno,age from employee;
 2.查询所有字段返回

select 字段1,字段2,字段3 from 表名;

select * from 表名;

例:

select id,workno,name,gender,age,idcard,workaddress,entrydate from employee;

select * from employee;
 3.设置别名

select 字段 as 别名 from 表名;

例: 

select workaddress as '工作地址' from employee;

select workaddress as  from employee;
 4.去除重复记录

select distinct 字段列表  from 表名;

例:

select distinct workaddress '工作地址' from employee;


select distinct workaddress from employee;

3.条件查询

1.语法 

select 字段列表 from 表名 where 条件列表;

2.条件
比较运算符 功能
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<> 或 != 不等于
between ... and .. 在某个范围之内(含最小、最大值)
in(...) 在 in 之后的列表中的值,多选一
like 占位符 模糊匹配(_匹配单个字符,%匹配任意字符)
is NULL 是 NULL
逻辑运算符 功能
and 或 && 并且(多个条件同时成立)
OR 或 || 或者(多个条件任意一个成立)
NOT 或 ! 非、不是

 例:

select *  from employee where age = 88;

select * from employee where age <30;

select * from employee where idcard is NULL;

select * from employee where idcard is not null;

select * from employee where age != 88;

select *from employee  where age in(19,20,21);

//查找名字是两个字的员工
select *from employee where name like '__';//注意这里面是两个下划线

//查找身份证最后一位是X的员工
select *from employee where idcard like '%X';
select *from employee where idcard like '_________________X';// 17个下划线

 4.聚合函数

1.聚合函数:将一列数据作为一个整体,进行纵向计算。

常见的聚合函数
函数 功能
count 统计数量
max 最大值
min 最小值
sum 求和
avg 平均值

2.语法:

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

例:

select count(*) from employee;

select count(id) from employee;

select * from employee where workaddress = '西安';

select sum(age) from employee where workaddress = '西安';

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

5.分组查询 

1.语法

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

注意:

  • 执行顺序:where > 聚合函数 > having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
2.where 和 having 的区别
  1. 执行时间不同:where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤。
  2. 判断条件不同:where 不能对聚合函数进行判断,而 having 可以。

例:

//查询性别分组,统计男性员工 和 女性员工 的数量
select gender,count(*) from employee group by gender;

//根据性别分组,统计男性员工 和 女性员工 的平均年龄
select gender,avg(age) from employee group by gender;

//查询员工年龄小于30,并根据工作地址分组
select workaddress,count(*) from employee where age < 30 group by workaddress ;

//查询员工年龄小于30,并根据工作地址分组,获取员工数量大于等于2的工作地址

select workaddress,count(*) from employee where age < 30 group by workaddress having count(*) >= 2;

 6.排序查询

1.语法

select 字段列表  from 表名 order by 字段1 排序方式1,字段2 排序方式2;

例: 

//年龄升序排序
select * from employee order by age asc;

//年龄进行倒序
select * from employee order by age desc;

//先按照年龄升序排序,再根据入职时间降序
select * from employee order by age asc, entrydate desc;

 7.分页查询

1.语法

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

注意 :

  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是limit。
  • 如果索引的是第一页数据,起始索引可以省略,直接简写成 limit 10。

例:

//查询第一页员工数据,每页展示10条记录
select * from employee limit 0,10;

//查询第二页员工数据,每页展示10条数据
select *from employee limit 10,10;

8.执行顺序

9.课后训练

 为了对大家的知识进行巩固,我准备了下面一些例题,大家可以试试看。稍后我会把答案放置评论区。

1.查询年龄为20,21,24的女性员工信息

2.查询性别为男,并且年龄在25-29(含)岁以内的姓名为三个字的员工

3.年龄小于60岁,男性员工和女性员工的人数

4.查询年龄小于等于35岁的员工姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同,按入职时间降序排序

5.性别为男,且年龄在23-25之间的前5个员工的信息,并对查询结果按年龄升序排序,如果年龄相同,按入职时间降序排序

本节知识讲解就到此结束啦,下期再见! 

相关推荐

  1. 数据库SQL分类DDL详解

    2024-04-15 05:56:05       17 阅读
  2. 数据库SQL分类DML详解

    2024-04-15 05:56:05       16 阅读
  3. 数据库SQL分类DCL详解

    2024-04-15 05:56:05       15 阅读
  4. 数据库SQL语句:DML&&DQL

    2024-04-15 05:56:05       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-15 05:56:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-15 05:56:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-15 05:56:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-15 05:56:05       18 阅读

热门阅读

  1. 【Python】精通 SQLAlchemy:执行原生 SQL 语句的艺术

    2024-04-15 05:56:05       52 阅读
  2. 更全面使用SQLMap进行渗透测试

    2024-04-15 05:56:05       16 阅读
  3. Spring Boot 经典面试题(七)

    2024-04-15 05:56:05       19 阅读
  4. 项目一:认识python爬虫技术(小白入门级)

    2024-04-15 05:56:05       12 阅读
  5. Apache软件基金会的孵化标准和毕业标准

    2024-04-15 05:56:05       11 阅读
  6. Hive进阶Day05

    2024-04-15 05:56:05       10 阅读
  7. Python将相机图像采集的数据写入Redis

    2024-04-15 05:56:05       13 阅读
  8. hive metastore使用mysql作为backend db遇到的问题

    2024-04-15 05:56:05       14 阅读
  9. 跨域问题 及 解决

    2024-04-15 05:56:05       11 阅读
  10. 从零实现诗词GPT大模型:了解Transformer架构

    2024-04-15 05:56:05       12 阅读