从零学SQL 05 基础查询

刚开始学数据库,只会写 SELECT *?本文将带你全面掌握 MySQL 基础查询!从语法规范到别名设置,并提示了全表查询和深分页可能产生的性能问题。文末还揭秘了"为什么单行注释 -- 后必须加空格"的有趣细节。

文章目录

    • [一、 SQL 语法基础:规则与规范](#一、 SQL 语法基础:规则与规范)
      • [1.1 大小写](#1.1 大小写)
      • [1.2 语句终止符 (Semicolon,分号)](#1.2 语句终止符 (Semicolon,分号))
      • [1.3 备注](#1.3 备注)
    • [二、 查询数据](#二、 查询数据)
      • [2.1 全表查询](#2.1 全表查询)
      • [2.2 查询指定列](#2.2 查询指定列)
    • [三、 结果集优化:去重与限制](#三、 结果集优化:去重与限制)
      • [3.1 数据去重 (DISTINCT)](#3.1 数据去重 (DISTINCT))
      • [3.2 限制结果集数量 (LIMIT)](#3.2 限制结果集数量 (LIMIT))
    • 为什么单行注释,双横线后必须要有空格?

一、 SQL 语法基础:规则与规范

SQL 是由英文术语组成的指令集,这些术语叫做关键字。其中SELECT 是最频繁使用的关键字,用于从表中提取信息,基础语法是 SELECT ... FROM ...;

1.1 大小写

  • SQL 语句不区分大小写SELECT 等于 select 等于 Select),你可以将关键字大写,表名/列名小写,以提升代码可读性,全部小写也行(SQL美化工具通常会自动对关键字大写)。

1.2 语句终止符 (Semicolon,分号)

  • 当SQL编辑区存在多个 SQL 语句并列时,语句间必须用分号 ; 分隔,而单条 SQL 末尾可以不加分号。但我还是建议统一规则:单条查询也以分号结尾。

1.3 备注

备注是我们为SQL添加的一些说明,解释器会忽略所有备注。

  • 单行备注,通常用来对SQL逻辑进行简短解释:
    • 标准 SQL 格式(-- ):使用两个短横线加一个空格,缺失空格会导致语法报错(可以试着想一下为什么?文末有答案)。
    • MySQL特有格式:使用#,后续可以不加空格。
  • 多行备注,适用于解释复杂的业务逻辑、存储过程描述,或者暂时屏蔽一段代码块:
    • 语法:以 /* 开始,以 */ 结束

二、 查询数据

2.1 全表查询

即查询某张表的全部数据,主要快速查看小表数据,如果表数据量很大,会带来很大的I/O压力(生产环境慎用),MySQL Workbench默认限制只查询1000条数据,你也可以解除此限制:

  • 语句SELECT * FROM tbl_name;* 代表查询表中的所有字段,tbl_name代表当前数据库下的某张表名。如果跨库查询,需要用 db_name.tbl_name的方式指定。
  • 极简方式 (MySQL 8.0+)TABLE tbl_name;,这是 SELECT * 的简写语法,是MySQL特有的写法,有一定限制(无法使用过滤条件)。

2.2 查询指定列

和全表查询类似,唯一的区别是你必须在 SELECT 关键字之后指定多个列名,并且必须用逗号分隔这些列。

  • 语法:SELECT column_names FROM tbl_name;
  • 可以使用 desc tbl_name; 查看表有哪些列
  • 别名:查询时可以为每个字段设置别名,语法是 "字段名 as 别名",其中as关键字可省略

三、 结果集优化:去重与限制

3.1 数据去重 (DISTINCT)

  • 语法:SELECT DISTINCT column_name FROM tbl_name;
  • 注意DISTINCT 作用于后面所有列的组合,而不仅仅是紧随其后的第一个字段,即所有字段的组合去重。

3.2 限制结果集数量 (LIMIT)

当我们不需要全量结果集时,可以使用limit关键字仅返回部分数据。

  • 基础截取LIMIT n;,返回前 n 行。
  • 范围偏移LIMIT offset, n;,从第 offset 行开始,取 n 行(即丢弃前offset行),这也是MySQL中一种查询分页方法。
  • 性能预警:LIMIT offset, n; 分页时,offset丢掉的数据也是占资源的(查询出来后再丢弃),如果offset非常大,可能导致严重的性能问题。此时要进行优化,不能用简单的limit语法

为什么单行注释,双横线后必须要有空格?

对于SQL:SELECT 1--1,结果是什么?

  • 可能性 A(减法): 把 --1 看作是"减去负 1"。按照数学法则 1- (-1),结果应该是 2。
  • 可能性 B(注释): 把 --1 看作注释开始。那么 1 及其后面的内容都被忽略,结果应该是 1。

为了消除这种歧义,MySQL 规定:如果不加空格,-- 就优先被视为减法和负数符号的组合。只有加了空格,它才被确认为注释 ,因此 1--1 在MySQL中运行结果是2。

相关推荐
老迟聊架构2 小时前
完全基于对象存储的数据库引擎:SlateDB
数据库·后端·架构
SelectDB技术团队2 小时前
易车 × Apache Doris:构建湖仓一体新架构,加速 AI 业务融合实践
数据仓库·人工智能·数据分析·agent·apache doris·mcp·易车
阿蒙Amon2 小时前
C#常用类库-详解CsvHelper
开发语言·数据库·c#
006_2 小时前
Java8的lambda用法总结
前端·数据库
YangYang9YangYan2 小时前
2026高职物流工程技术学数据分析的技术价值分析
数据挖掘·数据分析
倔强的石头1062 小时前
KWDB 3.1.0 制造业实战:从 0 到 1 搭建工业设备健康监测系统
数据库·kwdb
大鹏的NLP博客2 小时前
LLM 在数据分析中的计算能力边界与正确用法
人工智能·数据分析·llm
qq_4924484462 小时前
Maven直接下载jar包
数据库·maven·jar