SQL六大核心类别全解析

SQL(结构化查询语言)根据其功能可分为六大核心类别,每类负责不同的数据库操作任务:


1. DDL:数据定义语言 (Data Definition Language)

功能 :定义/修改数据库 对象(表、视图、索引、数据库 等)的结构
核心语句

  • 创建数据库

    sql 复制代码
    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
  • 查询所有数据库

    sql 复制代码
    SHOW DATABASES;
  • 使用数据库

    sql 复制代码
    USE 数据库名;
  • 删除数据库

    sql 复制代码
    DROP DATABASE [IF EXISTS] 数据库名;
  • 查询当前数据库

    sql 复制代码
    SELECT DATABASE();
  • 查询当前数据库所有表

    sql 复制代码
    SHOW TABLES;
  • 查询表结构

    sql 复制代码
    DESC 表名;
  • 查询指定表的建表语句

    sql 复制代码
    SHOW CREATE TABLE 表名;
  • 添加表当中的字段

    sql 复制代码
    ALTER TABLE 表名 ADD 字段名 类型 [COMMENT 注释] [约束];
  • 修改表中数据类型

    sql 复制代码
    ALTER TABLE 表名 MODIFY 字段名 新数据类型;
  • 修改表中字段名和字段类型

    sql 复制代码
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [COMMENT 注释] [约束];
  • `清空表数据(保留结构

    sql 复制代码
    TRUNCATE TABLE logs; -- 比 DELETE 更快,不可回滚
  • `重命名表名(部分数据库支持)

    sql 复制代码
    ALTER TABLE 旧表名 RENAME TO 新表名;
  • 删除表

    sql 复制代码
     DORP TABLE [IF EXISTS] 表名;  
  • 删除指定表,并重新创建该表

    sql 复制代码
     TRUNCATE TABLE 表名; 

2. DML:数据操作语言 (Data Manipulation Language)

功能 :操作 中的数据记录 (增、删、改)。
核心语句

  • 给指定字段插入数据

    sql 复制代码
    INSERT INTO 表名(字段名1,  字段名2, ...) VALUES (值1,  值2, ...);
  • 给全部字段插入数据

    sql 复制代码
    INSERT INTO 表名 VALUES (值1, 值2, ...); 
  • 批量添加数据

    sql 复制代码
     INSERT INTO 表名(字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
  • UPDATE:更新数据

    sql 复制代码
    UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [WHERE 条件];
  • DELETE:删除数据(以行为单位)

    sql 复制代码
    DELETE FROM 表名 [WHERE 条件];

注意 :DML 操作需显式提交事务(COMMIT)才会永久生效。


3. DQL:数据查询语言 (Data Query Language)

功能 :从表中检索数据 (90%的SQL使用场景)。
唯一但核心语句

  • SELECT:查询数据

    sql 复制代码
    SELECT name, email FROM users WHERE id > 10 ORDER BY name;
  • 常搭配子句:
    WHERE(过滤)、JOIN(多表连接)、
    GROUP BY(分组)、HAVING(分组过滤)、
    ORDER BY(排序)、LIMIT(限制行数)、 SELECT (字段列表)

具体详细介绍可点击 ------ SQL查询实战:高效数据检索全攻略


4. DCL:数据控制语言 (Data Control Language)

功能 :管理数据库访问权限与安全性
核心语句

  • 查询用户

    sql 复制代码
    USE mysql; SELECT * FROM user;
  • 创建用户

    sql 复制代码
    GRANT USER '用户名'@'主机号' IDENTIFIED BY '密码';
  • 修改用户密码

    sql 复制代码
    ALTER USER '用户名'@'主机名' IDENTIFED WITH mysql_native_password BY '新密码';
  • 删除用户

    sql 复制代码
    DROP USER '用户名'@'主机号'; 
  • 授予权限

    sql 复制代码
    GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; 
  • 撤销权限

    sql 复制代码
    REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

5. TCL:事务控制语言 (Transaction Control Language)

功能 :管理数据库事务 (保证数据一致性)。
核心语句

  • BEGIN / START TRANSACTION:开启事务

  • COMMIT:提交事务(永久保存更改)

    sql 复制代码
    COMMIT;
  • ROLLBACK:回滚事务(撤销未提交的更改)

    sql 复制代码
    ROLLBACK;
  • SAVEPOINT:设置事务保存点(部分回滚)

    sql 复制代码
    SAVEPOINT sp1; -- 设置保存点
    ROLLBACK TO sp1; -- 回滚至保存点

6. 其他扩展类别

  • CCL:游标控制语言 (Cursor Control Language)
    用于遍历结果集(如 DECLARE CURSOR, FETCH, CLOSE)。

  • 存储过程/函数 (非纯SQL但广泛使用):

    sql 复制代码
    CREATE PROCEDURE GetUser(IN uid INT)
    BEGIN
      SELECT * FROM users WHERE id = uid;
    END;

分类总结对比

类别 功能 关键语句 是否自动提交
DDL 定义/修改结构 CREATE, ALTER, DROP 自动提交
DML 操作数据记录 INSERT, UPDATE, DELETE 需显式提交
DQL 查询数据 SELECT -
DCL 权限管理 GRANT, REVOKE 自动提交
TCL 事务控制 COMMIT, ROLLBACK, SAVEPOINT -

关键特性说明

  1. DDL 自动提交 :执行 CREATE/ALTER/DROP 后立即生效(无法回滚)。
  2. DML 需事务控制 :必须显式执行 COMMITROLLBACK 才能生效/撤销。
  3. DQL 不改变数据:仅查询,安全且可频繁使用。
  4. 权限最小化原则:通过 DCL 严格控制用户访问权限(如只读权限)。
  5. 事务的 ACID 保障:TCL 确保原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

掌握这些分类有助于编写高效、安全的 SQL 语句,并理解数据库操作的底层逻辑。

相关推荐
小光学长1 小时前
基于vue框架的防疫科普网站0838x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
极限实验室1 小时前
使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
数据库·docker·devops
飞翔的佩奇1 小时前
Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
java·数据库·mysql·毕业设计·ssm·旅游·jsp
智海观潮2 小时前
Flink CDC支持Oracle RAC架构CDB+PDB模式的实时数据同步吗,可以上生产环境吗
大数据·oracle·flink·flink cdc·数据同步
Code季风5 小时前
将 gRPC 服务注册到 Consul:从配置到服务发现的完整实践(上)
数据库·微服务·go·json·服务发现·consul
Boilermaker19926 小时前
【Java EE】SpringIoC
前端·数据库·spring
霸王龙的小胳膊6 小时前
泛微虚拟视图-数据虚拟化集成
数据库
灵犀学长6 小时前
解锁Spring Boot多项目共享Redis:优雅Key命名结构指南
数据库·redis
轩情吖6 小时前
Qt的信号与槽(二)
数据库·c++·qt·信号·connect·信号槽·