从零学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。

相关推荐
派小心.几秒前
多端数据分析平台的漏斗可以跨端搭建吗?5 步搭出跨端转化漏斗
大数据·运维·服务器·前端·数据分析
anxiao_m12 分钟前
跨地域大文件怎么传?2026主流传输软件实测对比
大数据·数据库·文件传输
Su米苏14 分钟前
基于 Token 预算的上下文压缩控制器(Context Compaction Controller)
前端·数据库·人工智能
暖核18 分钟前
Redis 从基础到集群实战:数据类型、客户端、高可用架构完整梳理
数据库·redis·架构
神一样的老师38 分钟前
WS63 访问 HTTPS 握手失败(-0x7780)根治
数据库·网络协议·https
Patrick在香港1 小时前
时间戳凭空早了 8 小时:datetime.utcnow() 弃用实测与漂移复盘
数据库·python·标准库·datetime·时区·弃用
李兆龙的博客9 小时前
问津集 #26:Lakebase——Postgres 的版本化页面存储、数据库分支与计算弹性
数据库
cc57250265310 小时前
2027 届秋招面试:数据科学专业从技术转业务,职业规划回答思路与岗位拆解
数据分析
倔强的石头_11 小时前
聊聊金仓KFS:一款把数据同步软件做扎实的产品
数据库
闲云野鹤在人间11 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算