MySQL 查询基础(一):列选择、算数运算与别名使用

在数据库操作中,查询(SELECT)是使用频率最高的操作,掌握基础的查询语法是玩转 SQL 的第一步。本文将以学生信息表为例,从最基础的列选择、算数表达式计算,到别名的使用,带你夯实 SQL 查询的核心基础。


目录

一、查询的基本语法框架

二、查询中的列选择

[1. 选择所有列](#1. 选择所有列)

[2. 选择指定列](#2. 选择指定列)

三、查询中的算数表达式

[1. 基础算数运算](#1. 基础算数运算)

[2. 运算符优先级](#2. 运算符优先级)

[3. 空值(NULL)的特殊处理](#3. 空值(NULL)的特殊处理)

四、别名的使用:让查询结果更易读

[1. 列别名](#1. 列别名)

[2. 表别名](#2. 表别名)

总结


一、查询的基本语法框架

SQL 查询的核心结构由SELECT(选择列)和FROM(指定表)组成,基础语法如下:

sql 复制代码
SELECT 列选择规则 FROM 表名;

其中列选择规则可以是具体列名、所有列、表达式等,FROM指定要查询的数据表(本文统一使用student学生表、class班级表为例)。

二、查询中的列选择

1. 选择所有列

当需要查看表中所有数据时,使用*通配符代表所有列,适合快速预览表数据。

语法

sql 复制代码
SELECT * FROM 表名;

示例:查询 student 学生表所有数据(包含学号、姓名、成绩、班级 ID、地址等)

sql 复制代码
SELECT * FROM student;

2. 选择指定列

实际开发中更常用的是精准选择需要的列,列名之间用逗号分隔,减少数据传输量。

语法

sql 复制代码
ELECT 列名1, 列名2 FROM 表名;

示例:仅查询 student 表的学生姓名和数学成绩

sql 复制代码
SELECT st_name, math_score FROM student;

三、查询中的算数表达式

在查询中可以直接对数值型列进行+、-、*、/算数运算,实现数据的实时计算(如计算总分、平均分)。

1. 基础算数运算

示例 1:查询学生姓名、数学成绩、语文成绩,并计算总分(数学 + 语文)

sql 复制代码
SELECT st_name, math_score, chinese_score, math_score + chinese_score FROM student;

示例 2:查询学生姓名、总分,并计算平均分(总分 ÷2)

sql 复制代码
SELECT st_name, (math_score + chinese_score) AS total_score, (math_score + chinese_score)/2 FROM student;

2. 运算符优先级

算数运算遵循 "先乘除后加减",如需改变运算顺序,使用()括号包裹优先计算的部分。

示例:查询学生姓名,计算 "数学成绩 + 10 分后 ×0.8" 的折算分

sql 复制代码
-- 错误(先算math_score×0.8再加10)
SELECT st_name, math_score * 0.8 + 10 FROM student;
-- 正确(先算math_score+10,再×0.8)
SELECT st_name, (math_score + 10)*0.8 FROM student;
3. 空值(NULL)的特殊处理

3. 空值(NULL)的特殊处理

MySQL 中,NULL代表 "未知 / 缺失值",不是 0 也不是空格。若算数运算中包含NULL,结果也会是NULL

示例:查询学生姓名、数学成绩、加分项,计算最终成绩(无加分项的学生结果为 NULL)

sql 复制代码
SELECT st_name, math_score, bonus, math_score + bonus FROM student;

四、别名的使用:让查询结果更易读

别名(Alias)用于为列或表自定义名称,提升查询语句和结果的可读性,分为列别名表别名

1. 列别名

为查询结果的列指定自定义名称,可使用AS关键字(也可省略)。

语法

sql 复制代码
SELECT 列名 AS 列别名 FROM 表名;
-- 省略AS的写法
SELECT 列名 列别名 FROM 表名;

示例 1:将 st_name 列重命名为 "学生姓名",math_score 重命名为 "数学成绩"

sql 复制代码
SELECT st_name AS 学生姓名, math_score AS 数学成绩 FROM student;
-- 省略AS,效果相同
SELECT st_name 学生姓名, math_score 数学成绩 FROM student;

示例 2:为计算的总分指定别名 "总分"

sql 复制代码
SELECT st_name, math_score + chinese_score AS 总分 FROM student;

2. 表别名

为数据表指定简短别名,尤其在多表查询中能大幅简化语句,同样可省略AS

语法

sql 复制代码
SELECT 表别名.列名 FROM 表名 AS 表别名;

示例:为 student 表指定别名 s,查询学生姓名和成绩

sql 复制代码
SELECT s.st_name AS 学生姓名, s.math_score AS 数学成绩 FROM student AS s;

总结

  1. 列选择优先使用 "指定列名" 而非*,减少不必要的数据查询;
  2. 算数运算支持+、-、*、/,优先级可通过()调整,包含 NULL 的运算结果为 NULL;
  3. 别名(列 / 表)可简化语句、优化结果可读性,AS关键字可省略。

希望这篇文章对你有帮助,如果你有任何问题或建议,欢迎在评论区留言。谢谢阅读(求攒攒 收藏 关注)!

相关推荐
DBA小马哥7 分钟前
向量数据库入门到进阶:Embedding、ANN算法与RAG落地的关键术语
数据库·算法·embedding
云和数据.ChenGuang10 分钟前
fastapi项目拆分实战数据模型
java·服务器·数据库·人工智能·深度学习·fastapi·强化学习
祈禾15 分钟前
Redis三大特殊数据类型
运维·服务器·数据库·redis·笔记·缓存
祈禾22 分钟前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
东方护航数据恢复(深圳)26 分钟前
MySQL_Oracle数据库崩溃修复全攻略_东方护航数据恢复深圳店
数据库·mysql·oracle
知识分享小能手38 分钟前
线性代数学习教程,从入门到精通,矩阵的初等变换与线性方程组(6)
学习·线性代数·矩阵
y = xⁿ1 小时前
一文掌握Redis常见八股
数据库·redis·缓存
Cloud云卷云舒1 小时前
HaishanDB(海山)|磐维数据库|YashanDB(崖山)深度对比分析
数据库·人工智能·海山数据库·haishandb·移动云海山数据库
weixin_460443561 小时前
企业考试系统如何对接OA、钉钉和企业微信?SSO单点登录、组织同步与权限一致性设计
java·开发语言·数据库
xywww1681 小时前
真实后台页实测:Opus 5 看图写前端的可用边界在哪
linux·服务器·前端·数据库·人工智能·gpt