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 :大表删旧数据别直接 <code>DELETE,容易锁表;应分批加LIMIT 1000+ 循环,或改用TRUNCATE(但会重置自增ID)
DQL:SELECT 不只是“查”,而是数据提取的第一道过滤器
SELECT 是 MySQL 使用频率最高的语句,占日常操作 70% 以上。新手常以为“能出结果就行”,但字段选错、没加索引、滥用 LIKE '%xxx' 会直接拖垮性能。