文章目录
- 一、DQL概述和作用
-
- 1.1 DQL 核心定义与特征
- 1.2 DQL 语法分类
-
- 1. 单表查询
- 2. 多表查询
- 二、基本SELECT查询语句
-
- 2.1基础SELECT语法(不指定条件)
- 2.2表结构查看
- 2.3条件查询(WHERE 子句)
- 2.4基础 SELECT 实战练习
-
- 练习一:基础查询场景
- 练习二:条件查询场景
- 三、运算符使用
-
- 3.1算术运算符
-
- 1. 核心作用
- 2. 运算符列表
- 3. 核心注意点
- 3.2比较运算符
-
- 1. 核心作用
- 2. 运算符列表
- 3. 核心注意点
- 3.3逻辑运算符
-
- 1. 核心作用
- 2. 运算符列表
- 3. 核心注意点
- 3.4运算符优先级(从低到高)
-
- 核心注意点
- 3.5实战练习场景
-
- 1. 算术运算符练习
- 2. 比较运算符练习
- 3. 逻辑运算符练习
- 3.6知识点小结
- 四、单行和多行函数
-
- 4.1函数基础与分类
-
- 1. SQL函数介绍
- 2. 内置函数分类及特征
- 3. 内置函数子分类
- 4.2单行函数
-
- 1. 数字函数
- 2. 字符串函数
- 3. 日期/时间函数
-
- (1)时间获取类
- (2)时间分量提取类
- (3)时间运算类
- (4)时间格式化类
- 4. 流程函数
-
- (1)IF函数
- (2)IFNULL函数
- (3)CASE表达式
- 4.3多行函数(聚合函数)
-
- 1. 常用聚合函数
- 2. 核心规则
- 4.4实战练习场景
-
- 1. 时间函数练习
- 2. 流程函数练习
- 4.5知识点小结
- 五、高级查询处理
-
- 5.1分组查询(GROUP BY)
-
- 1. 核心概念
- 2. 语法结构
- 3. 分组过滤(HAVING)
- 4. WHERE 与 HAVING 核心区别
- 5. 实战练习
- 5.2排序查询(ORDER BY)
-
- 1. 核心概念
- 2. 语法结构
- 3. 实战练习
- 5.3数据切割(分页查询,LIMIT)
-
- 1. 核心概念
- 2. 语法结构
- 3. 分页公式
- 4. 实战练习
- 5.4 SELECT 语句执行过程
-
- 1. 关键字书写顺序(不可颠倒)
- 2. 实际执行顺序
- 3. 列别名使用规则
- 5.5单表综合练习场景
一、DQL概述和作用
1.1 DQL 核心定义与特征
- 全称:Data Query Language(数据查询语言);
- 核心作用:查询数据库中的数据,仅读取数据,不修改库表结构、不改变原表数据;
- 结果形式:查询结果为虚拟表(结果集),不会生成新的物理表;
- 核心关键字:SELECT(执行数据查询的唯一核心关键字)。
1.2 DQL 语法分类
1. 单表查询
- 操作对象:仅从一张真实数据表中查询数据;
- 核心组件:
- SELECT 子句:指定要查询的列(字段);
- WHERE 子句:筛选符合条件的数据行;
- 运算符:用于条件判断(比较、逻辑等);
- 函数:单行/多行函数(对数据做计算、格式化等);
- 分组/排序:对结果集进行聚合统计、排序展示。
2. 多表查询
- 操作逻辑:先通过“合并语法”将多张真实表合并为中间虚拟表,再对虚拟表执行查询;
- 核心组件:
- 多表合并语法(如 JOIN 系列);
- 单表查询的所有核心组件(SELECT、WHERE、函数、分组、排序等)。
二、基本SELECT查询语句
2.1基础SELECT语法(不指定条件)
- 情况1:非表查询
SELECT 1;
SELECT 9/2;
SELECT VERSION();
类似Java控制台输出,直接输出结果。
- 情况2:指定表
SELECT 列名1, 列名2, 列名3 FROM 表名;
或者
SELECT 表名.列名 , 表名.* FROM 表名;
指定表,查询表中的全部或者某些列。 列和列之间使用[ , ] 分割,如果是全部列可以使用*替代
- 情况3:查询列起别名
SELECT 列名1 as 别名, 列名2, 列名3 as 别名 FROM 表名;
或者
SELECT 列名1 别名, 列名2, 列名3 别名 FROM 表名;
查询列可以起别名,as 可以省略。 起别名的意义主要是简化列名或者对应后期Java数据属性等 如果别名想要区分大小写,可以添加双引号 例如:”Name”
- 情况4:去除重复行
SELECT DISTINCT 列名 [,列名,列名] FROM 表名;
指定列值去重复行,可以指定单列或者多列,但是DISTINCT关键字只写一次且在前面。
- 情况5:查询常数
SELECT ‘燕山大学’ as corporation , 列名 , 列名… FROM 表名;
SELECT 查询还可以对常数进行查询。就是在 SELECT 查询结果中增加固定的常数列。 这列的取值是我们指定的,而不是从数据表中动态取出的。
2.2表结构查看
- 核心命令:DESCRIBE(简写 DESC),在没有可视化工具场景下可以查看表结构;
DESCRIBE employees;
或
DESC employees;
- 字段含义:
- Field:字段名称;
- Type:字段数据类型;
- Null:是否允许存储 NULL 值;
- Key:索引类型(PRI=主键、UNI=唯一键、MUL=普通索引);
- Default:字段默认值;
- Extra:额外属性(如 AUTO_INCREMENT 自增)。
2.3条件查询(WHERE 子句)
- 核心作用:筛选符合条件的数据行,减少返回结果集大小;
- 执行逻辑:先通过 WHERE 筛选行,再根据 SELECT 指定列返回结果;
- 语法位置:WHERE 子句需写在 FROM 子句之后;
- 基础语法:SELECT 字段1, 字段2 FROM 表名 WHERE 过滤条件;。
SELECT 字段1,字段2 FROM 表名 WHERE 过滤条件;
2.4基础 SELECT 实战练习
# 一、准备表数据
— 创建库
CREATE DATABASE IF NOT EXISTS test04_dql;
USE test04_dql;
— 创建员工表
DROP TABLE IF EXISTS `t_employee`;
CREATE TABLE `t_employee` (
`eid` INT NOT NULL COMMENT \’员工编号\’,
`ename` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT \’员工姓名\’,
`salary` DOUBLE NOT NULL COMMENT \’薪资\’,
`commission_pct` DECIMAL(3,2) DEFAULT NULL COMMENT \’奖金比例\’,
`birthday` DATE NOT NULL COMMENT \’出生日期\’,
`gender` ENUM(\’男\’,\’女\’) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT \’男\’ COMMENT \’性别\’,
`tel` CHAR(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT \’手机号码\’,
`email` VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT \’邮箱\’,
`address` VARCHAR(150) DEFAULT NULL COMMENT \’地址\’,
`work_place` SET(\’北京\’,\’深圳\’,\’上海\’,\’武汉\’) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT \’北京\’ COMMENT \’工作地点\’
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `t_employee`(`eid`,`ename`,`salary`,`commission_pct`,`birthday`,`gender`,`tel`,`email`,`address`,`work_place`)
VALUES (1,\’孙洪亮\’,28000,\’0.65\’,\’1980-10-08\’,\’男\’,\’13789098765\’,\’shl@atguigu.com\’,\’白庙村西街\’,\’北京,深圳\’),
(2,\’何进\’,7001,\’0.10\’,\’1984-08-03\’,\’男\’,\’13456732145\’,\’hj@atguigu.com\’,\’半截塔存\’,\’深圳,上海\’),
(3,\’邓超远\’,8000,NULL,\’1985-04-09\’,\’男\’,\’18678973456\’,\’dcy666@atguigu.com\’,\’宏福苑\’,\’北京,深圳,上海,武汉\’),
(4,\’黄熙萌\’,9456,NULL,\’1986-09-07\’,\’女\’,\’13609876789\’,\’hxm@atguigu.com\’,\’白庙村东街\’,\’深圳,上海,武汉\’),
(5,\’陈浩\’,8567,NULL,\’1978-08-02\’,\’男\’,\’13409876545\’,\’ch888@atguigu.com\’,\’回龙观\’,\’北京,深圳,上海\’),
(6,\’韩庚年\’,12000,NULL,\’1985-04-03\’,\’男\’,\’18945678986\’,\’hgn@atguigu.com\’,\’龙泽\’,\’深圳,上海\’),
(7,\’贾宝玉\’,15700,\’0.24\’,\’1982-08-02\’,\’男\’,\’15490876789\’,\’jby@atguigu.com\’,\’霍营\’,\’北京,武汉\’),
(8,\’李晨熙\’,9000,\’0.40\’,\’1983-03-02\’,\’女\’,\’13587689098\’,\’lc@atguigu.com\’,\’东三旗\’,\’深圳,上海,武汉\’),
(9,\’李易峰\’,7897,NULL,\’1984-09-01\’,\’男\’,\’13467676789\’,\’lyf@atguigu.com\’,\’西山旗\’,\’武汉\’),
(10,\’陆风\’,8789,NULL,\’1989-04-02\’,\’男\’,\’13689876789\’,\’lf@atguigu.com\’,\’天通苑一区\’,\’北京\’),
(11,\’黄冰茹\’,15678,NULL,\’1983-05-07\’,\’女\’,\’13787876565\’,\’hbr@atguigu.com\’,\’立水桥\’,\’深圳\’),
(12,\’孙红梅\’,9000,NULL,\’1986-04-02\’,\’女\’,\’13576234554\’,\’shm@atguigu.com\’,\’立城苑\’,\’上海\’),
(13,\’李冰冰\’,18760,NULL,\’1987-04-09\’,\’女\’,\’13790909887\’,\’lbb@atguigu.com\’,\’王府温馨公寓\’,\’北京\’),
(14,\’谢吉娜\’,18978,\’0.25\’,\’1990-01-01\’,\’女\’,\’13234543245\’,\’xjn@atguigu.com\’,\’园中园\’,\’上海,武汉\’),
(15,\’董吉祥\’,8978,NULL,\’1987-05-05\’,\’男\’,\’13876544333\’,\’djx@atguigu.com\’,\’小辛庄\’,\’北京,上海\’),
(16,\’彭超越\’,9878,NULL,\’1988-03-06\’,\’男\’,\’18264578930\’,\’pcy@atguigu.com\’,\’西二旗\’




