尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第一节:SELECT 基础查询

MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第一节:SELECT 基础查询
📅 发布时间:2026/7/7 15:39:44

第一节 什么是 DQL?

DQL:

Data Query Language

中文:

数据查询语言

整个 DQL:

实际上只有一个命令:

SELECT

以后:

所有查询:

都是:

SELECT ...

例如:

查询:

学生。

SELECT * FROM student;

查询:

姓名。

SELECT name FROM student;

查询:

年龄。

SELECT age FROM student;

查询:

姓名和年龄。

SELECT name, age FROM student;

所以:

DQL 的核心就是 SELECT。


第二节 准备数据

后面所有例子都使用这张表。

CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, gender CHAR(1), score DECIMAL(5,2) );

插入数据:

INSERT INTO student(name, age, gender, score) VALUES ('Tom',20,'M',88.5), ('Jack',22,'M',91.0), ('Lucy',19,'F',95.5), ('Rose',21,'F',86.0), ('Mike',20,'M',78.5);

现在:

student

idnameagegenderscore
1Tom20M88.5
2Jack22M91.0
3Lucy19F95.5
4Rose21F86.0
5Mike20M78.5

第三节 查询所有数据

这是最简单的。

SELECT * FROM student;

结果:

idnameagegenderscore
1Tom20M88.5
2Jack22M91.0
3Lucy19F95.5
4Rose21F86.0
5Mike20M78.5

*是什么意思?

很多新人不知道。

*

代表:

所有列

例如:

student:

id name age gender score

全部查询。


第四节 查询指定字段

很多时候:

并不需要:

全部字段。

例如:

只需要:

姓名。

SELECT name FROM student;

结果:

name
Tom
Jack
Lucy
Rose
Mike

查询:

姓名:

年龄。

SELECT name, age FROM student;

结果:

nameage
Tom20
Jack22
Lucy19
Rose21
Mike20

查询:

成绩。

SELECT score FROM student;

为什么企业不推荐SELECT *?

这是一个非常重要的面试题。

很多初学者喜欢:

SELECT * FROM student;

但是企业一般不推荐。

原因有四个。


原因一:浪费网络带宽

假设:

user:

有:

50 个字段。

你:

登录:

只需要:

用户名 头像

结果:

SELECT *

数据库:

把:

50 个字段:

全部返回。

浪费。


原因二:影响性能

字段越多:

读取:

越慢。

特别:

TEXT

BLOB

图片。

更明显。


原因三:影响索引优化

以后:

学习:

覆盖索引。

你会知道:

很多时候:

SELECT *

不能:

走:

最佳索引。

而:

SELECT name

可以。


原因四:代码维护困难

今天:

user:

10 个字段。

以后:

增加:

20 个字段。

所有:

SELECT *

都会:

返回:

新增字段。

程序:

可能:

出问题。


企业规范

推荐:

SELECT name, age FROM student;

而不是:

SELECT *

第五节 给字段起别名(AS)

例如:

查询:

姓名。

SELECT name AS 姓名 FROM student;

结果:

姓名
Tom
Jack

英文:

SELECT name AS username FROM student;

结果:

username
Tom
Jack

AS可以省略。

例如:

SELECT name username FROM student;

也是:

正确。

但是:

企业:

一般:

建议:

写:

AS

可读性:

更好。


第六节 查询常量

SQL:

不仅:

查询:

字段。

还可以:

查询:

常量。

例如:

SELECT 100;

结果:

100
100

查询:

字符串。

SELECT 'Hello MySQL';

结果:

Hello MySQL
Hello MySQL

这在后续学习函数、表达式时会很有用。


第七节 查询表达式

SQL:

还能:

计算。

例如:

SELECT 1+2;

结果:

1+2
3

查询:

成绩:

加:

10。

SELECT name, score, score+10 AS new_score FROM student;

结果:

namescorenew_score
Tom88.598.5
Jack91.0101.0
Lucy95.5105.5

注意:

这里只是:

查询结果:

变化。

数据库:

里面:

没有:

修改。


第八节 DQL 执行顺序(初步认识)

很多人认为:

SQL:

从上往下:

执行。

其实:

不是。

例如:

SELECT name FROM student;

真正:

MySQL:

大概:

执行:

FROM student ↓ 读取表 ↓ SELECT name ↓ 返回结果

以后:

我们学习:

WHERE

GROUP BY

HAVING

ORDER BY

你会发现:

SQL 的书写顺序和执行顺序并不完全一致。


本章知识总结

SQL作用
SELECT * FROM student;查询所有字段
SELECT name FROM student;查询指定字段
SELECT name, age FROM student;查询多个字段
SELECT name AS username FROM student;字段别名
SELECT 100;查询常量
SELECT score + 10 FROM student;查询表达式

本章思考题

请先思考,再回答:

①SELECT *和SELECT name, age有什么区别?为什么企业不推荐SELECT *?
SELECT *会返回所有字段,而SELECT name, age只返回指定字段。企业通常不推荐使用SELECT *,因为它会增加网络传输、降低查询效率、不利于索引优化,并且在字段变更时容易引发维护和安全问题。

②AS的作用是什么?为什么很多公司仍然建议保留AS,而不是省略?
AS用于给字段、表或计算结果设置别名,方便阅读和使用。虽然 MySQL 允许省略AS,但保留AS能提高 SQL 的可读性,减少歧义,因此企业开发通常建议显式写出。

③ 为什么SELECT score + 10并不会真正修改数据库中的数据?
SELECT score + 10只是对查询结果进行计算,并不会修改表中的实际数据。因为SELECT属于 DQL,只负责读取数据;真正修改数据需要使用UPDATE等 DML 语句。

④ 为什么说 SQL 的书写顺序和执行顺序不一样?目前这条 SQL:

SELECT name FROM student;

MySQL 实际会先做什么?
SQL 的书写顺序是为了符合人类阅读习惯,而数据库为了完成查询,会按照逻辑执行顺序处理。以SELECT name FROM student为例,MySQL 会先定位student表(FROM),再读取name字段(SELECT),最后返回结果。

⑤ 如果以后使用 NestJS 的 TypeORM:

await userRepository.find({ select: ['name', 'age'] });

你觉得它最终可能生成什么 SQL?
TypeORM 的find()本质上会根据配置生成对应的SELECT语句。例如find({ select: ['name', 'age'] })通常会生成类似SELECT name, age FROM user;的 SQL。ORM 只是 SQL 的封装,最终仍由数据库执行 SQL。

相关新闻

  • ArchivePasswordTestTool:3分钟掌握压缩包密码恢复的高效工具
  • Codex双限额如何影响开发效率
  • KMS_VL_ALL_AIO智能激活脚本技术实现深度解析

最新新闻

  • Barlow字体终极指南:为什么这款免费开源字体能解决你的排版难题?
  • 【重庆交通学院本科毕业论文】基于Web的在线问诊系统的设计与实现
  • 嘉准FD-K4系列安全门锁:防护门安全联锁,满足安监安全生产标准
  • SVGnest终极指南:免费开源的材料切割优化神器
  • Apple ID 两步验证怎么开?iPhone 用户的完整教程
  • Mac Charles抓iOS报TSL/SSL握手失败完整排查方案

日新闻

  • Android逆向分析全能助手:集成化工具链与自动化工作流设计
  • 面搜索(Faceted Search)原理与工程实践指南
  • 神经网络调参避坑指南:从5个常见Loss曲线形态定位超参数问题

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号