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

 更新时间:2026年08月26日 09:10:16   作者:青禾837  
本文将带大家系统性地学习 MySQL 的基础操作,涵盖数据库与表的创建、数据的增删改查、用户管理以及权限控制,同时理解 DDL、DML、DCL 三大类 SQL 命令的区别与应用,希望对大家有所帮助

大家好,数据库是后端开发的核心组件,几乎所有的应用都需要与数据库打交道。今天我们将系统性地学习 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 ('张三', 'zhangsan@example.com', '123456', 25);

-- 插入单行(所有列)
INSERT INTO users VALUES (NULL, '李四', 'lisi@example.com', '654321', 30, NOW(), NOW());

-- 插入多行
INSERT INTO users (username, email, password, age) VALUES 
('王五', 'wangwu@example.com', '111111', 28),
('赵六', 'zhaoliu@example.com', '222222', 22),
('孙七', 'sunqi@example.com', '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 = 'new@example.com' 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的资料请关注脚本之家其它相关文章!

相关文章

最新评论