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

DDL:建库建表、改结构的底层命令
MySQL基础语法里,DDL(Data Definition Language)是操作数据库和表结构的起点。你每天写的 CREATE DATABASE、ALTER TABLE、DROP 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)负责对表中真实数据下手,INSERT、UPDATE、DELETE 看似简单,但线上事故八成出在这儿。
-
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' 会直接拖垮性能。
10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A
- 别写
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;才能看到当前库的表;如果忘了USE,SHOW TABLES;会返回空,而不是报错——这个静默行为最容易让人误判库是否选对
实际写 SQL 时,最常被忽略的不是高级功能,而是建库时没设 utf8mb4、删数据前没 SELECT COUNT(*) 预估量、以及 UPDATE 永远不加 WHERE 条件。这些动作本身只多敲几个字符,但漏掉一次,可能就得加班恢复备份。









