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

相关推荐
m0_640309307 分钟前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python
qq_3721542311 分钟前
Redis如何在应用启动时预热缓存数据
jvm·数据库·python
2601_9498153311 分钟前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
解救女汉子16 分钟前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
杨云龙UP23 分钟前
2000—CentOS Linux 7上部署Oracle 19c(19.3) RAC(RedHat/CentOS 7/8)
linux·运维·服务器·数据库·oracle·centos
m0_6784854531 分钟前
怎么导入只包含特定表的SQL文件_正则提取与分离导入
jvm·数据库·python
星晨雪海32 分钟前
若依框架原有页面功能进行了点位管理改造之列表查询(4)
数据库·sql·mybatis
历程里程碑34 分钟前
MySQL事务深度解析:ACID到MVCC实战+万字长文解析
开发语言·数据结构·数据库·c++·sql·mysql·排序算法
橄榄熊34 分钟前
docker MySQL 密码报错,重新修改保留原样的数据
mysql·docker·容器
NineData36 分钟前
NineData 将亮相 2026 德国汉诺威工业博览会
数据库·人工智能·数据库管理工具·ninedata·数据库迁移工具·玖章算术