MySQL 数据库与表管理:DDL 与 DML 核心操作指南

Luna
Luna
发布时间:2026-10-16| 4人浏览过
原创

本文系统讲解 MySQL 数据库中 DDL(数据定义语言)与 DML(数据操作语言)的实际应用。内容涵盖数据库与数据表的完整生命周期管理,包括创建、查询、修改字符集及删除操作;详细解析建表语句、字段增删改及常用数据类型与约束。此外,对比演示了数据插入、更新及删除(含 DELETE 与 TRUNCATE 的区别),为数据库基础操作提供清晰的语法参考。

MySQL 基础操作:DDL 与 DML 概述

在掌握基本的 SELECT 查询后,深入理解数据的结构化管理与变更机制至关重要。DDL (Data Definition Language),即数据定义语言,主要用于对数据库结构和表结构进行定义和维护,如创建、修改和删除库与表。DML (Data Manipulation Language),即数据操纵语言,则专注于对表中存储的具体记录进行添加、删除和修改操作。

一、DDL:数据库与表的结构管理

DDL 操作对象通常是数据库本身及其内部的数据表。其关键字通常包含 DATABASE(针对库)或 TABLE(针对表)。

第1步:数据库的创建、使用与删除

目的:建立数据存储容器并设定环境参数。

操作语法:

-- 创建数据库(若不存在则创建,推荐写法)
CREATE DATABASE IF NOT EXISTS 数据库库名;

-- 创建时指定字符集(防止中文乱码)
CREATE DATABASE 数据库库名 CHARACTER SET utf8mb4;

-- 切换当前会话使用的数据库
USE 数据库库名;

完成判断:执行无报错即可使用 USE 命令验证切换成功。

第2步:数据库的查询与信息检查

目的:了解现有库列表、字符集配置及当前工作库。

-- 列出所有数据库名称
SHOW DATABASES;

-- 查看特定数据库的创建语句(含字符集等细节)
SHOW CREATE DATABASE 数据库库名;

-- 查看当前正在使用的数据库名
SELECT DATABASE();

第3步:修改数据库属性

目的:调整数据库默认字符集以兼容新数据格式。

-- 修改数据库字符集
ALTER DATABASE 数据库库名 CHARACTER SET 新字符集名称;

第4步:安全删除数据库

风险提醒:DROP DATABASE 操作不可逆,会连同库内所有数据永久删除。生产环境操作前务必确认备份。

-- 存在则删除
DROP DATABASE IF EXISTS 数据库库名;

第5步:数据表的创建与管理

目的组织数据结构,定义字段类型及约束。

建表语法结构:

CREATE TABLE 表名(
    列1 数据类型 【约束】, 
    列2 数据类型 【约束】, 
    -- ... 
    列n 数据类型 【约束】 
);

注意:最后一行字段定义后不加逗号。

第6步:查询表结构与列表

目的:确认表是否存在及其详细定义。

-- 查询当前库的所有表名
SHOW TABLES;

-- 查询指定库的表(需先USE或指定库名上下文)
SHOW TABLES FROM 数据库库名;

-- 查看表的具体结构(字段名、类型、键信息等)
DESC 表名;

第7步:修改数据表结构

目的:适应业务需求变化,调整表字段或名称。

-- 1. 重命名表
ALTER TABLE 原表名 RENAME TO 新表名;

-- 2. 修改表字符集
ALTER TABLE 表名 CHARACTER SET 新字符集;

-- 3. 新增列(字段)
ALTER TABLE 表名 ADD 新列名 数据类型;

-- 4. 修改列定义(改名且改类型)
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型;

-- 5. 仅修改列的数据类型(不改名)
ALTER TABLE 表名 MODIFY 列名 新数据类型;

-- 6. 删除列
ALTER TABLE 表名 DROP 列名;

第8步:删除数据表

风险提醒:删除表将清空该表所有数据。建议先确认数据是否已备份。

-- 存在则删除
DROP TABLE IF EXISTS 表名;

二、MySQL 数据类型与约束简介

在设计表结构时,合理选择数据类型和约束是保证数据完整性的关键。数据类型决定了字段能存储何种信息(如整数、字符串、日期等),而约束则限制了数据的合法性。

常见的约束包括主键(PRIMARY KEY)、非空(NOT NULL)、唯一(UNIQUE)等,它们共同确保存入数据库的数据准确有效。

标识列(自增):在实际应用中,常使用 AUTO_INCREMENT 为每一行生成唯一的递增 ID,需在字段定义时添加此属性。

三、DML:数据记录的增删改

DML 用于对表中的具体记录进行操作。正确编写 DML 语句能有效维护业务数据的准确性。

第9步:插入数据 (INSERT)

目的:向表中新增一行或多行记录。

-- 标准写法:指定列名对应值
INSERT INTO 表名(列名1, 列名2) VALUES(值1, 值2);

-- SET 写法:清晰明了,适合部分列赋值
INSERT INTO 表名 SET 列名1 = 值1, 列名2 = 值2;

注意事项:

  1. 列名与值的数量、顺序必须严格一致。
  2. 若省略列名,VALUES 需按表定义顺序提供所有字段值。
  3. 字符串和日期类型通常需要加单引号。

第10步:修改数据 (UPDATE)

目的:更新满足条件的记录字段值。

-- 单表更新
UPDATE 表名 
SET 列名1 = 新值1, 列名2 = 新值2 
WHERE 筛选条件;

重要警告:WHERE 子句至关重要。若无 WHERE 条件,整张表的所有记录都会被更新!

第11步:删除数据 (DELETE vs TRUNCATE)

目的:移除表中不需要的记录。

-- 按条件删除(DML语句,可回滚,逐行删除)
DELETE FROM 表名 WHERE 条件;

-- 无条件删除所有记录
DELETE FROM 表名; -- 谨慎使用!

当需要清空整张表并重置自增 ID 时,推荐使用 TRUNCATE:

-- DDL语句,速度快,重置自增计数器,不可回滚
TRUNCATE TABLE 表名;

对比总结:DELETE 是逐行删除,支持 WHERE 过滤和事务回滚,但速度较慢;TRUNCATE 是整体释放数据页,效率极高,但无法恢复且重置自增 ID。

以上就是 MySQL 之浅谈 DDL 和 DML 的详细内容,更多关于 MySQL 数据库结构设计与数据操作的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。