刚接触 MySQL 的同学,是不是总搞不清ALTER和DROP的区别?写SELECT语句时总被 1064 语法错误卡壳?其实 SQL 没那么复杂 ------ 它本质是按「功能分类」的工具集。今天这篇就带你在 Linux 环境下,从表结构操作(ALTER/DROP) 入手,把 DQL/DML/DDL 等五大 SQL 分类拆明白,再结合实战案例教你避开语法坑,从 "写语句报错" 到 "熟练改表查数据" 一步到位。
一、表结构操作------ALTER/DROP
ALTER语句
使用 ALTER TABLE 语句追加, 修改, 或删除列的语法
1.add
-- 增加字段
alter table 表名 add dateT date;
-- 设置默认值
alter table 表名 add dateT date DEFAULT "2025-12-12";
例如:


2.modify
modify后必须明确指定「字段类型」(哪怕只是修改注释,也要重新声明类型)
-- 修改字段类型,属性
alter table 表名 modify dateT datetime;
alter table 表名 modify dateT date comment "日期";
-- 修改字段默认不为空
alter table 表名 modify stu_id int not null;
-- 修改字段默认可以为空
alter table 表名 modify stu_id int default null;
例如:





3.drop
-- 删除字段
alter table 表名 drop 字段名;
例如:

4.change
-- 修改字段名称
alter table 表名 change stu_id sid varchar(255);
例如:

5.character set
-- 修改表的字符集
alter table 表名 character set utf8;
例如:

6.rename to
-- 修改表名
alter table 旧表名 rename to 新表名;
-- 另外一种写法
rename table 旧表名 to 新表名;
例如:


DROP语句
-- 删除表
drop table if exists 表名;
例如:

二、五大SQL分类
五大SQL分类表
| 分类 | 核心作用 | 核心关键字 | 典型操作 |
|---|---|---|---|
| DQL | 查询数据 | SELECT、FROM、WHERE | 多表查询、统计 |
| DML | 增删改数据 | INSERT、UPDATE、DELETE | 新增记录、改值 |
| DDL | 定义 / 修改数据库结构 | CREATE、ALTER、DROP | 建表、删索引 |
| DCL | 权限 / 事务控制(广义) | GRANT、REVOKE、COMMIT | 授权、提交事务 |
| TCL | 事务控制(狭义) | COMMIT、ROLLBACK、SAVEPOINT | 回滚、保存点 |
1.数据查询语言(DQL, Data Query Language)
核心作用:从数据库中查询 / 检索数据(仅读取,不修改数据),是最常用的 SQL 类别。
核心关键字:select(核心)、from、where、group by、having、order by、limit、join等。
-- 查询前5名年龄小于21的用户姓名和专业,按年龄降序排列
SELECT name, major
FROM 表名
WHERE age < 21
ORDER BY age DESC
LIMIT 5;
例如:

2.数据操作语言(DML, Data Manipulation Language)
核心作用:操作(增 / 删 / 改)数据库中的数据(仅修改数据内容,不改变表结构)。
核心关键字:insert(新增)、update(修改)、delete(删除)、merge(合并,部分数据库支持)。
-- 新增一条用户记录
INSERT INTO 表名 (name, age, phone) VALUES ('张三', 25, '13800138000');
-- 修改用户专业
UPDATE 表名 SET major= '软件工程' WHERE id = 1;
-- 删除年龄大于18的用户
DELETE FROM users WHERE age > 18;
例如:



3、数据定义语言(DDL, Data Definition Language)
核心作用:定义 / 修改 / 删除数据库对象(表、索引、视图、触发器、数据库等)的结构,操作会直接生效(无需事务提交)。
**核心关键字:**create(创建)、alter(修改)、drop(删除)、truncate(清空表,属于 DDL 而非 DML)、rename(重命名)。
-- 创建用户表
CREATE TABLE 表名 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
phone VARCHAR(20) UNIQUE
);
-- 给用户表新增email字段
ALTER TABLE 表名 ADD COLUMN email VARCHAR(100);
-- 删除用户表
DROP TABLE 表名;
-- 清空用户表(删除所有数据且不可回滚)
-- TRUNCATE TABLE 表名;
例如:



4、数据控制语言(DCL, Data Control Language)
核心作用:管理数据库的权限和事务,控制用户对数据库的访问权限、事务提交 / 回滚等。
**核心关键字:**grant(授权)、revoke(撤销权限)、commit(提交事务)、rollback(回滚事务)、savepoint(保存点)、set transaction(设置事务属性)。
-- 授予用户test对users表的查询/插入权限
GRANT SELECT, INSERT ON 表名 TO 'test'@'localhost';
-- 撤销test用户的插入权限
REVOKE INSERT ON 表名 FROM 'test'@'localhost';
-- 提交事务(确认DML操作)
COMMIT;
-- 回滚事务(撤销未提交的DML操作)
ROLLBACK;
5.事务控制语言(TCL, Transaction Control Language)
补充说明:部分分类体系中,TCL 会从 DCL 中独立出来,专门聚焦事务管理(本质是 DCL 的子集)。
**核心关键字:**commit、rollback、savepoint
-- 开启事务(部分数据库需显式声明)
START TRANSACTION;
UPDATE 表名 SET age = 26 WHERE id = 1;
-- 设置保存点
SAVEPOINT sp1;
DELETE FROM 表名 WHERE id = 2;
-- 回滚到保存点(仅撤销删除操作,修改操作保留)
ROLLBACK TO sp1;
-- 提交最终修改
COMMIT;
看到这里,你应该能理清 SQL 五大分类的边界,也能在 Linux 终端里熟练用alter改表、drop删表了吧?其实 SQL 的核心是 "按功能选工具"------ 查数据用 DQL,改结构用 DDL,增删数据用 DML,记住这个逻辑就不会乱。