Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略

刚接触 MySQL 的同学,是不是总搞不清ALTERDROP的区别?写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,记住这个逻辑就不会乱。

相关推荐
改一下配置文件9 分钟前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号10 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash14 小时前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
jiayou641 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端