【数据库中的四种核心语言】-- DDL、DML、DQL、DCL
一、数据定义语言(DDL)
核心作用:定义数据库结构(创建 / 修改 / 删除数据库、表、索引等),操作对象是 “数据库对象的结构”,而非数据本身。
特点:操作一旦执行立即生效,且不可逆(无法通过事务回滚)。
1. CREATE(创建)
示例 1:创建数据库
-- 创建名为"company"的数据库
CREATE DATABASE company;
执行结果:系统中新增一个名为company的空数据库。

示例 2:创建表
-- 切换到company数据库
USE company;
-- 创建员工表"emp",包含id、姓名、年龄、性别、部门字段
CREATE TABLE emp (
id INT PRIMARY KEY, -- 主键(唯一标识每条记录)
name VARCHAR(50) NOT NULL, -- 姓名(非空)
age INT,
gender CHAR(1), -- '男'或'女'
department VARCHAR(50)
);
执行结果:company数据库中新增emp表,结构如下:

2. ALTER(修改结构)
示例:向 emp 表添加 “入职日期” 字段
-- 新增"hire_date"字段(日期类型)
ALTER TABLE emp ADD COLUMN hire_date DATE;
执行结果:emp表结构更新,新增hire_date字段:

3. DROP(删除)
示例:删除 emp 表
-- 删除emp表(表结构和数据全部删除)
DROP TABLE emp;
执行结果:emp表从数据库中永久删除,无法恢复。(这里就不做演示了)
4. TRUNCATE(清空表数据,保留结构)sql
-- 清空emp表所有数据,但保留表结构
TRUNCATE TABLE emp;
执行前:

执行后:

执行结果:emp表的所有记录被删除,但表结构(字段、约束等)不变。
二、数据操纵语言(DML)
核心作用:对表中的数据进行增、删、改,操作对象是 “表中的记录”。
特点:操作可以通过事务(COMMIT/ROLLBACK)控制,执行后需提交才生效。
1. INSERT(插入数据)
示例:向 emp 表插入 3 条员工数据
-- 插入单条数据
INSERT INTO emp (id, name, age, gender, department, hire_date)
VALUES (1, '张三', 30, '男', '技术部', '2020-01-15');
-- 插入多条数据
INSERT INTO emp (id, name, age, gender, department, hire_date)
VALUES
(2, '李四', 35, '女', '人事部', '2019-03-20'),
(3, '王五', 40, '男', '技术部', '2018-05-10');
执行结果:emp表新增 3 条记录:

2. UPDATE(修改数据)
示例:将 “张三” 的年龄改为 31 岁
UPDATE emp
SET age = 31
WHERE id = 1; -- 必须加WHERE条件,否则会修改所有记录
执行结果:id=1 的记录年龄更新为 31:

3. DELETE(删除数据)
示例:删除 “李四” 的记录
DELETE FROM emp
WHERE id = 2; -- 同样的,加WHERE条件,否则会删除所有记录
执行结果:id=2 的记录被删除,表中剩余 2 条记录:

三、数据查询语言(DQL)
核心作用:从表中查询数据,是 SQL 中最常用的语句,核心命令是SELECT。
特点:只查询数据,不修改数据或结构。
1. 基础查询
示例:查询所有员工的姓名和年龄
SELECT name, age FROM emp;
执行结果:

2. 带条件查询(WHERE)
示例:查询年龄 > 35 岁的员工
SELECT * FROM emp WHERE age > 35;
执行结果:

3. 分组查询(GROUP BY)
示例:按部门统计员工数量
SELECT department, COUNT(*) AS 员工数量
FROM emp
GROUP BY department;
执行结果:

4. 排序查询(ORDER BY)
示例:按年龄从大到小排序员工(降序)
SELECT name, age FROM emp ORDER BY age DESC;
执行结果:

从小到大(升序):将DESC 替换 ASC 或者不加(默认为升序)
四、数据控制语言(DCL)
核心作用:管理用户权限(授予 / 收回用户对数据库的操作权限)。
特点:操作立即生效,影响用户对数据的访问能力。
1. GRANT(授予权限)
示例:创建用户user1并授予查询emp表的权限
-- 创建用户user1(密码为123456)
CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';
-- 授予user1查询emp表的权限
GRANT SELECT ON company.emp TO 'user1'@'localhost';
执行结果:user1用户只能查询emp表,无法修改或删除数据。


2. REVOKE(收回权限)
示例:收回user1查询emp表的权限
REVOKE SELECT ON company.emp FROM 'user1'@'localhost';
执行结果:user1用户失去查询emp表的权限,再次查询会报错。

总结:四种语句的核心区别
| 语句类型 | 操作对象 | 核心命令 | 特点(事务) | 典型场景 |
|---|---|---|---|---|
| DDL | 数据库 / 表结构 | CREATE/ALTER/DROP | 自动提交,不可回滚 | 创建表、删除数据库 |
| DML | 表中的数据 | INSERT/UPDATE/DELETE | 可通过事务提交 / 回滚 | 添加员工、修改年龄 |
| DQL | 表中的数据(查询) | SELECT | 不影响数据,无事务 | 统计部门人数、查询老员工 |
| DCL | 用户权限 | GRANT/REVOKE | 立即生效,不可回滚 | 给用户授权、收回权限 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)