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,记住这个逻辑就不会乱。

相关推荐
jiunian_cn6 小时前
【Redis】渐进式遍历
数据库·redis·缓存
好好学习天天向上~~6 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹7 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic
橙露7 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
冰暮流星7 小时前
sql语言之分组语句group by
java·数据库·sql
符哥20087 小时前
Ubuntu 常用指令集大全(附实操实例)
数据库·ubuntu·postgresql
C++ 老炮儿的技术栈7 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
陌上花开缓缓归以7 小时前
linux mtd-utils使用源码分析(ubuntu测试版)
linux·arm开发·ubuntu
怣507 小时前
MySQL子查询零基础入门教程:从小白到上手(零基础入门版)
数据库·mysql