详情

首页手游攻略 MySQL数据库基础入门指南之DDL、DML、DCL三大命令完整指南

MySQL数据库基础入门指南之DDL、DML、DCL三大命令完整指南

佚名 2026-09-01 08:40:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“MySQL数据库基础入门指南之DDL、DML、DCL三大命令”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 一、SQL 语言分类
  • 二、DDL:数据定义语言
    • 2.1 数据库操作
    • 2.2 数据类型
    • 2.3 新建表
    • 2.4 约束(Constraints)
    • 2.5 修改表结构
    • 2.6 删除表
  • 三、DML:数据操作语言
    • 3.1 插入数据:INSERT
    • 3.2 查询数据:SELECT
    • 3.3 更新数据:UPDATE
    • 3.4 删除数据:DELETE
  • 四、DCL:数据控制语言
    • 4.1 用户管理
    • 4.2 权限管理
    • 4.3 权限级别
    • 4.4 常用权限列表
  • 五、常用命令速查表
    • 六、总结

      结合项目来看,大家好,数据库是后端开发的核心组件,几乎所有的应用都需与数据库打交道。今天我们将系统性地学习 MySQL 的基础操作,涵盖数据库与表的新建数据的增删改查用户管理以及权限控制,同时理解 DDL、DML、DCL 三大类 SQL 命令的区别与应用。

      一、SQL 语言分类

      SQL(Structured Query Language)按功能分为三大类:

      分类全称说明常用命令
      DDLData Definition Language数据定义语言,定义数据库结构CREATEALTERDROPTRUNCATE
      DMLData Manipulation Language数据操作语言,操作数据内容INSERTUPDATEDELETESELECT
      DCLData Control Language数据控制语言,管理权限GRANTREVOKE

      二、DDL:数据定义语言

      实际处理时,DDL 用来定义数据库的结构,包括数据库、表、索引等对象的新建、修改和删除。

      2.1 数据库操作

      -- 查看所有数据库
      SHOW DATABASES;
      -- 创建数据库
      CREATE DATABASE mydb;
      CREATE DATABASE IF NOT EXISTS mydb;
      CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      -- 选择数据库
      USE mydb;
      -- 查看当前使用的数据库
      SELECT DATABASE();
      -- 删除数据库
      DROP DATABASE mydb;
      DROP DATABASE IF EXISTS mydb;

      2.2 数据类型

      新建表之前,需了解常用的数据类型:

      分类数据类型说明
      数值INT整数
      BIGINT大整数
      DECIMAL(M,D)精确小数
      FLOAT / DOUBLE浮点数
      字符串VARCHAR(N)可变长度字符串(最长 65535 字符)
      CHAR(N)固定长度字符串
      TEXT长文本
      日期DATE日期(YYYY-MM-DD)
      DATETIME日期时间(YYYY-MM-DD HH:MM:SS)
      TIMESTAMP时间戳
      布尔BOOLEAN / TINYINT(1)布尔值

      2.3 新建表

      -- 基本建表语法
      CREATE TABLE 表名 (
          列名 数据类型 [约束],
          列名 数据类型 [约束],
          ...
      );

      -- 示例:创建用户表
      CREATE TABLE users (
          id INT PRIMARY KEY AUTO_INCREMENT,
          username VARCHAR(50) NOT NULL UNIQUE,
          email VARCHAR(100) NOT NULL UNIQUE,
          password VARCHAR(255) NOT NULL,
          age INT DEFAULT 0,
          created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
          updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
      );

      -- 查看表结构
      DESC users;
      -- 或
      SHOW COLUMNS FROM users;

      -- 查看建表语句
      SHOW CREATE TABLE users;

      -- 查看所有表
      SHOW TABLES;

      2.4 约束(Constraints)

      约束说明
      PRIMARY KEY主键,唯一标识一行
      FOREIGN KEY外键,关联其他表
      NOT NULL不能为空
      UNIQUE唯一,不能重复
      DEFAULT默认值
      AUTO_INCREMENT自动递增(用来整数主键)

      2.5 修改表结构

      -- 添加列
      ALTER TABLE users ADD COLUMN phone VARCHAR(20);

      -- 修改列类型
      ALTER TABLE users MODIFY COLUMN phone VARCHAR(15);

      -- 修改列名和类型
      ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(20);

      -- 删除列
      ALTER TABLE users DROP COLUMN mobile;

      -- 重命名表
      ALTER TABLE users RENAME TO user_accounts;

      2.6 删除表

      -- 删除表
      DROP TABLE users;

      -- 删除表(如果存在)
      DROP TABLE IF EXISTS users;

      三、DML:数据操作语言

      DML 用来对表中的数据进行增、删、改、查操作。

      3.1 插入数据:INSERT

      -- 插入单行(指定列)
      INSERT INTO users (username, email, password, age)
      VALUES ('张三', '[email protected]', '123456', 25);

      -- 插入单行(所有列)
      INSERT INTO users VALUES (NULL, '李四', '[email protected]', '654321', 30, NOW(), NOW());

      -- 插入多行
      INSERT INTO users (username, email, password, age) VALUES
      ('王五', '[email protected]', '111111', 28),
      ('赵六', '[email protected]', '222222', 22),
      ('孙七', '[email protected]', '333333', 35);

      -- 插入查询结果
      INSERT INTO users_backup (username, email, age)
      SELECT username, email, age FROM users WHERE age > 25;

      3.2 查询数据:SELECT

      -- 查询所有列
      SELECT * FROM users;

      -- 查询指定列
      SELECT id, username, email FROM users;

      -- 条件查询(WHERE)
      SELECT * FROM users WHERE age > 25;
      SELECT * FROM users WHERE username = '张三';
      SELECT * FROM users WHERE age BETWEEN 20 AND 30;
      SELECT * FROM users WHERE email LIKE '%@example.com';

      3.3 更新数据:UPDATE

      -- 更新单行
      UPDATE users SET age = 26 WHERE username = '张三';

      -- 更新多列
      UPDATE users SET age = 30, email = '[email protected]' WHERE id = 1;

      -- 条件更新
      UPDATE users SET age = age + 1 WHERE age < 30;

      -- 更新所有行(谨慎使用)
      UPDATE users SET updated_at = NOW();

      3.4 删除数据:DELETE

      -- 删除指定行
      DELETE FROM users WHERE id = 1;

      -- 删除满足条件的行
      DELETE FROM users WHERE age > 60;

      -- 删除所有行(谨慎使用)
      DELETE FROM users;

      四、DCL:数据控制语言

      DCL 用来管理数据库用户的权限。

      4.1 用户管理

      -- 查看所有用户
      SELECT User, Host FROM mysql.user;

      -- 创建用户
      CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
      CREATE USER 'username'@'%' IDENTIFIED BY 'password'; -- 允许任何主机连接

      -- 修改密码
      ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';
      SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new_password');

      -- 删除用户
      DROP USER 'username'@'localhost';

      4.2 权限管理

      -- 授予权限
      -- 语法:GRANT 权限 ON 数据库.表 TO '用户'@'主机'
      GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'localhost';
      GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'username'@'localhost';
      GRANT SELECT ON *.* TO 'readonly'@'%'; -- 全局只读

      -- 授予所有权限
      GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

      -- 查看用户权限
      SHOW GRANTS FOR 'username'@'localhost';

      -- 撤销权限
      REVOKE INSERT, UPDATE ON mydb.users FROM 'username'@'localhost';
      REVOKE ALL PRIVILEGES ON mydb.* FROM 'username'@'localhost';

      -- 刷新权限(使修改生效)
      FLUSH PRIVILEGES;

      4.3 权限级别

      权限级别说明示例
      全局所有数据库*.*
      数据库指定数据库mydb.*
      指定表mydb.users
      指定列mydb.users.username

      4.4 常用权限列表

      权限说明
      ALL PRIVILEGES所有权限
      SELECT查询数据
      INSERT插入数据
      UPDATE更新数据
      DELETE删除数据
      CREATE新建数据库/表
      DROP删除数据库/表
      ALTER修改表结构
      INDEX新建/删除索引

      五、常用命令速查表

      分类命令说明
      数据库SHOW DATABASES查看所有数据库
      CREATE DATABASE db新建数据库
      USE db选择数据库
      DROP DATABASE db删除数据库
      表操作SHOW TABLES查看所有表
      CREATE TABLE t (...)新建表
      DESC t查看表结构
      ALTER TABLE t ADD/ MODIFY修改表结构
      DROP TABLE t删除表
      数据操作INSERT INTO t VALUES(...)插入数据
      SELECT * FROM t查询数据
      UPDATE t SET ... WHERE ...更新数据
      DELETE FROM t WHERE ...删除数据
      用户权限CREATE USER 'u'@'h' IDENTIFIED BY 'p'新建用户
      GRANT ... ON db.* TO 'u'@'h'授予权限
      REVOKE ... ON db.* FROM 'u'@'h'撤销权限
      SHOW GRANTS FOR 'u'@'h'查看权限
      DROP USER 'u'@'h'删除用户

      六、总结

      分类核心命令
      DDLCREATEALTERDROPTRUNCATE
      DMLINSERTSELECTUPDATEDELETE
      DCLCREATE USERGRANTREVOKE
      表约束PRIMARY KEYFOREIGN KEYNOT NULLUNIQUEDEFAULT
      常用查询WHEREORDER BYGROUP BYLIMITJOINLIKE

      结合项目来看,数据库操作是后端开发的必备技能。DDL 负责数据库结构的设计,DML 负责数据的日常操作,DCL 负责用户权限的安全管理。掌握这三类 SQL 命令,就能独立完成从数据库设计到数据维护的全流程。

      落到代码里,以上就是MySQL数据库基础入门指南之DDL、DML、DCL三大命令详解的详细内容,更多关于MySQL数据库DDL、DML、DCL的资料请关注脚本之家其它相关文章!

      您可能感兴趣的文章:

      • MySQL中的DDL、DML与DCL的深度探究
      • MySQL DDL从入门到精通,包含索引视图分区表等全操作解析
      • 从入门到精通解析MySQL中DDL操作的核心知识与应用技巧
      • 一文彻底吃透MySQL DDL操作之数据库、数据表、字段全解析
      • MySQL DDL数据定义语言示例总结
      • MySQL DML 操作(CRUD)总结
      • MySQL DML语句定义及常用用法实战指南
      • MySQL DML基本操作示例详解
      • MySQL DCL数据控制语言的完整教程

      相关资讯
      点击查看更多
      游戏推荐
      推荐专题
      热门阅读
      推荐下载