前言
大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C++ Linux的老铁
主要内容含:
DQL基本介绍&语法&各种查询语句总览
- DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来 查询 数据库中表的记录。
- 查询关键字: SELECT
- DQL-语法
- 各种查询语句总览
案例演示准备工作-表准备(必看!!!)
- 如下所示创建表,并批量插入数据
- 批量插入数据见DML语句操作(下方有传送门)
- 【MySQL】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
create table emp( id int comment '编号 ', workno varchar(10) comment '工号 ', name varchar(10) comment '姓名 ', gender char(1) comment '性别' , age tinyint unsigned comment '年龄', idcard char(18) comment‘身份证号’, entrydate date comment ‘入职时间’ )comment '员工表';
一.DQL-分组查询
语法&where与having的区别&注意事项&可cv例题语句
- 如下所示:
where与having区别:
- 执行实际不同:where是 分组之前 进行过滤,不满足where条件,不参与分组;而having是 分组之后 对结果进行过滤。
- 判断条件不同:where不能对 聚合函数 进行判断,而having可以。
注意事项:
- 执行顺序: where>聚合函数>having
- 分组之后,查询的字段一般为 聚合函数和分组函数 ,查询其他字段无任何意义
--根据性别分组 --1.统计男性员工和女性员工的数量 select gender,count(*) from emp group by gender; --2.根据性别分组,统计男性员工和女性员工的平均年龄 select gender, avg(age) from emp group by gender; --3.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址 select workaddress, count(*) from emp where age45 group by workaddress having count(*) >= 3; -- 取别名后进行分组后的过滤 select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;