mysql基础语法包括哪些内容_mysql语法入门解析

1次阅读

DDL用于建库建表和修改结构,如CREATE database、ALTER table;DML用于增删改数据,如INSERT、UPdatedelete,操作时需注意事务、WHERE条件等关键细节。

mysql基础语法包括哪些内容_mysql语法入门解析

DDL:建库建表、改结构的底层命令

mysql基础语法里,DDL(Data Definition Language)是操作数据库和表结构的起点。你每天写的 CREATE DATABASEALTER TABLEDROP TABLE 都属于它——不是“查数据”,而是“搭架子”。

  • CREATE DATABASE if NOT EXISTS itheima default CHARSET utf8mb4;:加 IF NOT EXISTS 是防止重复创建报错;utf8mb4 是必须设的字符集,否则存 emoji 或某些生僻字会丢数据
  • DESC student;SHOW CREATE TABLE student; 更快看字段名和类型,但看不到完整建表语句和索引定义
  • ALTER TABLE student ADD column phone VARCHAR(11) AFTER name;:新增字段时用 AFTER 明确位置,避免字段顺序混乱影响应用层映射(尤其 ORM 场景)

DML:增删改数据的实操要点

DML(Data Manipulation Language)负责对表中真实数据下手,INSERTUPDATEDELETE 看似简单,但线上事故八成出在这儿。

  • INSERT INTO student (id, name) VALUES (1, '张三'), (2, '李四');:批量插入比单条快 5–10 倍,但要注意 MySQL 默认事务隔离级别下,整批要么全成功,要么全回滚
  • UPDATE student SET age = 20 WHERE id = 1;:永远带 WHERE!不加就是全表更新,没有回收站,执行完就不可逆
  • DELETE FROM student WHERE create_time :大表删旧数据别直接 DELETE,容易锁表;应分批加 LIMIT 1000 + 循环,或改用 TRUNCATE(但会重置自增ID)

DQL:select 不只是“查”,而是数据提取的第一道过滤器

SELECT 是 MySQL 使用频率最高的语句,占日常操作 70% 以上。新手常以为“能出结果就行”,但字段选错、没加索引、滥用 LIKE '%xxx' 会直接拖垮性能。

  • 别写 SELECT *:即使开发环境看着快,一旦表加了 TEXT 字段或几十列,网络传输+内存开销翻倍;生产环境务必显式列出所需字段
  • SELECT name AS username, birthday AS birth_date FROM student ORDER BY id DESC LIMIT 20;AS 改列名方便程序解析;LIMIT 必须配合 ORDER BY,否则分页结果不稳定
  • 条件里慎用函数:WHERE DATE(create_time) = '2025-01-01' 会让索引失效;应改写为 WHERE create_time >= '2025-01-01' AND create_time

语法细节:大小写、分号、注释这些“小事”真会卡住你

MySQL 对大小写不敏感,但 linux 下数据库名、表名默认区分大小写(windows 不区分),这个差异在迁移或跨平台部署时经常引发 Table doesn't exist 错误。

  • 所有语句结尾必须有分号 ;,否则客户端会一直等待输入,看起来像“卡死”
  • 单行注释用 -- (注意空格)或 #;多行用 /* ... */;注释里别混用中文标点,某些客户端解析会失败
  • USE itheima; 后再执行 SHOW TABLES; 才能看到当前库的表;如果忘了 USESHOW TABLES; 会返回空,而不是报错——这个静默行为最容易让人误判库是否选对

实际写 SQL 时,最常被忽略的不是高级功能,而是建库时没设 utf8mb4、删数据前没 SELECT count(*) 预估量、以及 UPDATE 永远不加 WHERE 条件。这些动作本身只多敲几个字符,但漏掉一次,可能就得加班恢复备份。

text=ZqhQzanResources