Skip to main content
掌握基础 SQL 是使用 MySQL 的第一步。本节覆盖数据库与表的创建、常见数据类型、增删改查、常用函数及典型约束写法,帮助你在日常开发中高效建模与查询。

库与表

定义字段时优先考虑是否需要 NOT NULL、默认值与约束,提前设计可以减少后续数据清洗成本。

常见数据类型

  • 数值:TINYINT/INT/BIGINT,定点数 DECIMAL(p,s);避免货币使用 FLOAT/DOUBLE
  • 字符串:CHAR(n) 固定长度、VARCHAR(n) 变长;文本 TEXT 系列
  • 日期时间:DATE/TIME/DATETIME/TIMESTAMPTIMESTAMP 有时区相关行为
  • 布尔:BOOLEANTINYINT(1) 的别名
  • JSON:MySQL 5.7+ 原生 JSON 类型,支持 ->JSON_EXTRACT
选择排序规则(collation)会影响比较与排序,中文常用 utf8mb4_zh_0900_as_cs(区分大小写/声调),默认 utf8mb4_0900_ai_ci 为不区分大小写。

约束与默认值

  • CHECK 约束在 8.0+ 才真正执行
  • ENUM 适合枚举值较少、稳定的状态字段
  • 可以使用 DEFAULT 配合 ON UPDATE 自动维护时间戳

插入与查询

别名可提升可读性:SELECT p.name AS product_name,并可在客户端保持一致的列名。

常用表达式与函数

  • 数值处理:ROUND, CEIL, FLOOR
  • 字符串:CONCAT, SUBSTRING, TRIM
  • 日期时间:DATE_ADD, DATEDIFF
  • JSON:JSON_EXTRACT, JSON_SET, ->>(直接文本)

更新与删除

谨慎执行无 WHERE 的 UPDATE/DELETE,可先用 SELECT 验证命中范围,并在事务中操作以便出错时回滚。

聚合与分组

HAVING 用于聚合后的过滤,WITH ROLLUP 可以得到小计/合计行。

批量导入与导出

  • 需要客户端启用 --local-infile=1
  • 可用于从 CSV 快速填充测试数据
导出可通过 SELECT ... INTO OUTFILEmysqldump 实现,详见“备份与恢复”。

简单 JOIN

更多 JOIN、CTE 与窗口函数示例请参见“连接与聚合”。

小结

到此已掌握 CRUD、过滤、排序与分组。下一步前往“表设计与索引”,了解如何为查询选择合适的约束与索引结构。