16、MySQL DDL语句应用

  1. 数据库相关操作

16、MySQL DDL语句应用

1. 查看数据库

  • 查看所有数据库

SHOW DATABASES;

显示当前MySQL实例中所有数据库的列表。

  • 查看指定数据库

SHOW DATABASES LIKE '库名';

支持通配符 %(如 LIKE '%test%'匹配包含 “test” 的数据库名)。

  • 查看建库语句

SHOW CREATE DATABASE 库名;

返回创建该数据库的完整SQL语句,包含字符集、排序规则等信息。

2. ​创建数据库​

  • 基础语法

CREATE DATABASE 库名;

若未指定字符集,默认使用服务器配置(如MySQL的 utf8mb4)。

  • 指定字符集与排序规则

CREATE DATABASE 库名

DEFAULT CHARACTER SET utf8mb4

COLLATE utf8mb4_0900_ai_ci;

明确设置字符编码和排序规则,避免乱码问题。

  • 加密选项(MySQL企业版)​

DEFAULT ENCRYPTION = 'N'; — 'Y'表明加密,'N'为不加密

注意:此选项需MySQL企业版支持,社区版可能不可用。

3. ​修改数据库字符集​

ALTER DATABASE 库名

DEFAULT CHARACTER SET 新字符集

COLLATE 新排序规则;

注意​:此操作仅影响后续新建的表,已有表的字符集需单独修改。

4. ​删除数据库​

DROP DATABASE 库名;

永久删除数据库及所有数据,需谨慎操作。

5. ​切换/使用数据库​

USE 库名;

SELECT DATABASE(); — 返回当前使用的数据库名

通过 USE切换上下文,后续操作默认作用于该库。

  1. 数据表相关操作

16、MySQL DDL语句应用

1. ​查看表信息​

  • 查看所有表

SHOW TABLES;

  • 查看表结构

DESC 表名; — 简略字段信息

SHOW CREATE TABLE 表名; — 完整建表语句

2. ​创建表​

  • 基础语法

CREATE TABLE 表名 (

字段名 数据类型 [约束] [COMMENT '注释'],

) ENGINE=存储引擎 DEFAULT CHARSET=字符集 COLLATE=排序规则 COMMENT='表注释';

示例:

CREATE TABLE student (

id INT NOT NULL COMMENT '学号',

name VARCHAR(50) NOT NULL COMMENT '姓名',

age TINYINT UNSIGNED DEFAULT 18,

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

  • 存储引擎​:InnoDB支持事务,MyISAM适合读密集型场景。​字符集​:utf8mb4支持Emoji和多语言,utf8可能截断4字节字符。

3. ​修改表结构​

  • 修改表名

RENAME TABLE 原表名 TO 新表名;

— 或

ALTER TABLE 原表名 RENAME 新表名;

  • 修改字符集

ALTER TABLE 表名 CONVERT TO CHARACTER SET 新字符集 COLLATE 新排序规则;

此操作会转换表及所有列的字符集,需确保数据兼容性。

  • 增删改字段​​添加字段

ALTER TABLE 表名

ADD COLUMN 字段名 数据类型 [约束] [AFTER 现有字段 | FIRST];

示例:

ALTER TABLE student ADD COLUMN phone CHAR(11) UNIQUE AFTER name;

  • 修改字段

ALTER TABLE 表名

MODIFY COLUMN 字段名 新数据类型 [约束] [COMMENT '新注释'];

  • 删除字段

ALTER TABLE 表名 DROP COLUMN 字段名;

  • 修改字段名

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型 [约束];

4. ​删除表​

DROP TABLE 表名; — 删除表结构及数据

TRUNCATE TABLE 表名; — 删除数据并重置自增ID,保留表结构

DELETE FROM 表名; — 逐行删除数据,保留结构

区别​:

  • DROP彻底移除表,无法恢复。
  • TRUNCATE效率高于 DELETE,不触发逐行删除日志

  • DELETE支持事务回滚,TRUNCATE不可回滚

三、关键注意事项

  1. 字符集一致性
  • 数据库、表、字段的字符集需统一,避免隐式转换导致乱码

  • 修改字符集时,提议使用 ALTER TABLE CONVERT TO …同步转换所有列。
  1. DDL的隐式提交
  • DDL操作(如 CREATE/ALTER/DROP)会自动提交事务,无法回滚

  1. 备份与恢复
  • 修改表结构前,提议备份数据(如 mysqldump)。生产环境中,推荐使用工具(如Navicat、DBeaver)可视化操作,降低风险

四、扩展应用场景

  • 批量建表​:通过脚本生成DDL语句,结合版本控制工具(Git)管理变更。
  • 字符集迁移​:若需修改已有数据库的字符集,需导出数据→修改结构→重新导入(参考搜索结果

)。

  • 权限控制​:结合 GRANT/REVOKE限制用户对DDL操作的权限,提升安全性

16、MySQL DDL语句应用

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容