MySQL数据库基础入门指南之DDL、DML、DCL三大命令完整指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“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)按功能分为三大类:
| 分类 | 全称 | 说明 | 常用命令 |
|---|---|---|---|
| DDL | Data Definition Language | 数据定义语言,定义数据库结构 | CREATE、ALTER、DROP、TRUNCATE |
| DML | Data Manipulation Language | 数据操作语言,操作数据内容 | INSERT、UPDATE、DELETE、SELECT |
| DCL | Data Control Language | 数据控制语言,管理权限 | GRANT、REVOKE |
二、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' | 删除用户 |
六、总结
| 分类 | 核心命令 |
|---|---|
| DDL | CREATE、ALTER、DROP、TRUNCATE |
| DML | INSERT、SELECT、UPDATE、DELETE |
| DCL | CREATE USER、GRANT、REVOKE |
| 表约束 | PRIMARY KEY、FOREIGN KEY、NOT NULL、UNIQUE、DEFAULT |
| 常用查询 | WHERE、ORDER BY、GROUP BY、LIMIT、JOIN、LIKE |
结合项目来看,数据库操作是后端开发的必备技能。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数据控制语言的完整教程
相关资讯
-
09.01
通过使用 MCP 创建日程和待办怎么做-执行顺序和关键限制
-
09.01
SpringBoot使用WebSocket(二)
-
09.01
IONIQ艾尼氪V成都车展亮相:楔形车身吸睛,科技续航双在线
-
09.01
在Excel中轻松抓取其他表格数据的做法与技巧分享
-
09.01
袋里IP架构设计:采集Shopify / BigCommerce 公开数据时的袋里策略差异
-
09.01
[057][调度模块]分布式环境下定时任务的防重复执行方案
游戏推荐
推荐专题
热门阅读
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏