当前位置: 首页 > news >正文

从零起步学习MySQL || 第二章:DDL语句定义及常见用法示例

一、什么是 DDL?

DDL(Data Definition Language) 是 SQL 的一个分类,用于 定义和管理数据库对象结构
执行 DDL 语句时,MySQL 会自动 提交事务(自动生效),不可回滚。

常见的 DDL 操作包括:

操作关键字功能说明
创建CREATE创建数据库、表、视图、索引等
修改ALTER修改数据库或表的结构
删除DROP删除数据库、表、视图、索引等
重命名RENAME修改数据库对象的名称
清空TRUNCATE清空表中的数据(但不删除表结构)

二、DDL 的常见语句与示例

1. 创建数据库:CREATE DATABASE

CREATE DATABASE IF NOT EXISTS mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

解释:

  • IF NOT EXISTS:防止重复创建;

  • CHARACTER SET:指定字符集;

  • COLLATE:指定排序规则。

查看数据库:

SHOW DATABASES;

使用数据库:

USE mydb;


2. 创建数据表:CREATE TABLE

CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,gender ENUM('男', '女') DEFAULT '男',age INT CHECK(age >= 0),create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

说明:

  • id:主键(PRIMARY KEY),自动增长;

  • username:不允许为空(NOT NULL),唯一(UNIQUE);

  • gender:枚举类型(ENUM);

  • CHECK:字段约束;

  • create_time:默认当前时间戳。

查看表结构:

DESC user;


3. 修改表结构:ALTER TABLE

(1)添加列

ALTER TABLE user ADD email VARCHAR(100);

(2)修改列类型

ALTER TABLE user MODIFY age SMALLINT;

(3)重命名列

ALTER TABLE user CHANGE username user_name VARCHAR(50);

(4)删除列

ALTER TABLE user DROP COLUMN gender;

(5)添加约束

ALTER TABLE user ADD CONSTRAINT uq_email UNIQUE(email);

(6)修改表名

ALTER TABLE user RENAME TO users;


4. 删除表:DROP TABLE

DROP TABLE IF EXISTS users;

注意:

  • 删除后,数据和结构都会被永久删除

  • IF EXISTS 可以避免错误。


5. 清空表数据:TRUNCATE TABLE

TRUNCATE TABLE user;

区别于 DELETE

特点DELETETRUNCATE
是否为 DDL否(DML)是(DDL)
是否可回滚✅ 可回滚(事务内)❌ 不可回滚
是否重置自增❌ 否✅ 是
执行速度较慢非常快

三、DDL 的执行特性

  • DDL 语句 会自动提交事务

  • 一旦执行,无法通过 ROLLBACK 回滚;

  • 一般用于数据库初始化、表结构变更阶段;

  • 在 Java 项目中通常通过 数据库迁移工具(如 Flyway、Liquibase) 管理。


四、综合示例

创建一个电商系统的 product 表:

CREATE TABLE product (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),stock INT DEFAULT 0,category_id INT,created_at DATETIME DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,FOREIGN KEY (category_id) REFERENCES category(id)
);

要点说明:

  • DECIMAL(10,2):精确存储价格;

  • ON UPDATE CURRENT_TIMESTAMP:每次修改记录时自动更新时间;

  • FOREIGN KEY:建立外键约束,保证表间关联。


五、在 Java 中如何使用 DDL(简单示例)

在 Java 项目中,你可以使用 JDBC 执行 DDL:

String sql = """CREATE TABLE IF NOT EXISTS user (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL,password VARCHAR(100) NOT NULL)
""";try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement()) {stmt.executeUpdate(sql);System.out.println("表创建成功!");
}


✅ 总结

操作语句功能
创建CREATE DATABASE / TABLE定义数据库或表
修改ALTER TABLE修改表结构
删除DROP DATABASE / TABLE删除数据库或表
清空TRUNCATE TABLE清空表数据但保留结构
重命名RENAME TABLE修改表名
http://www.dtcms.com/a/474470.html

相关文章:

  • Oracle REST Data Services是什么?
  • [吾爱大神原创工具] windows 多窗口同步软件(键+鼠) 20251011 更新
  • TDengine 数学函数 COS 用户手册
  • qfd 网站开发wordpress 上传主题 ftp
  • 算法与数据结构——排序算法大全
  • 吕口-反射薄利多销AI入口算法系统方案
  • Python全方位指南:定义、应用与零基础入门实战
  • Iperius Backup Full(备份恢复软件) 多语便携版
  • 建站平台在线提交功能wordpress 访问慢
  • 《深入理解Java虚拟机JVM高级特性与最佳实践》
  • 昆明模板建站定制网站网页设计公司哪个好
  • 语义与认知中的循环解释悖论及其对人工智能自然语言处理的深层语义分析的影响和启示
  • 可以做硬件外包项目的网站网站建设的发展目标
  • 地产网站建设互动营销网站兼容手机代码
  • 【AI编程】腾讯AI编程神器 CodeBuddy从使用到项目实战详解
  • JavaEE 初阶第二十九期:HTTP协议深度揭秘(三)
  • ReentrantLock中的Condition
  • 基于Spring Boot + Vue 3的乡村振兴综合服务平台架构设计与实现
  • 专门做门的网站软件开发公司专业的有哪些
  • 网站不用了 怎么关闭吗做资源网站怎么赚钱
  • J东h5st逆向实战
  • 营销型网站如何制作软件设计师含金量高吗
  • 【MySQL】从零开始了解数据库开发 --- 基本查询
  • LeetCode进阶算法题解详解
  • 构造器是什么
  • docker desktop安装(windows os)
  • 免费的网站域名查询app国外的营销网站有哪些
  • 大模型基础入门与 RAG 实战:从理论到 llama-index 项目搭建(有具体代码示例)
  • 保定网站建设报价网页设计图片变圆角
  • 网站首页没收录大连网站流量优化定制