DDL(1)表和库的基础操作

2025-12-05  本文已影响0人  温岭夹糕

实验环境

mysql8.0

DDL简介

DDL(data definition Language 数据定义语言)是SQL的三大核心子集之一(DML/DCL),专门用于定义/修改/删除数据库对象的结构(而非操作数据本身)

数据库操作

创建数据库

手册定义

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...

create_option: [DEFAULT] {
    CHARACTER SET [=] charset_name
  | COLLATE [=] collation_name
  | ENCRYPTION [=] {'Y' | 'N'}
}
show character set;

#charset一列表示支持的字符集
show collation; 

字符集问题不仅会影响数据存储,还会影响客户端程序与mysql服务器的通信,显示使用字符集命令

SET NAMES 'utf8mb4'
show collation where Charset='utf8mb4';

其中collate的命名规则如下

字符集名称_语言_比较规则后缀
utf8mb4_unicode_ci

常见的后缀含义
后缀 含义 示例效果

后缀 含义
ci case insensitive(不区分大小写)
cs case sensitive(区分大小写)
bin 二进制比较

综上创建一个test数据库的完整语句就是

mysql> CREATE DATABASE if not exists \
    -> test character set=utf8mb4 \
    -> collate=utf8mb4_unicode_ci;

创建表格

定义在这里

表数据的存储文件

8.0之后默认使用Innodb引擎

配置innbodb_file_per_table选项控制在哪个表空间

创建表格选项(table_option)  TABLESPACE也能控制

[mysqld]配置,5.6版本以后默认开启

innodb_file_per_table = ON  -- 推荐生产环境启用

我们可以想到每个表对应独立的文件,删除时直接删除文件,不会产生内存碎片,甚至能对单个表进行迁移备份

列选项

常见的表格选项

表格选项table_option用于优化表的行为

删除/修改语句和DDL的回滚

删除/修改语句没啥好说的关键词drop/alter
mysql8.0开始支持原子DDL(atomic DDL),即多条原子ddl语句构成的ddl语句,要么全部失败,要么全部成功,目前只有innoDB支持该功能

注意原子DDL并不是事务DDL,任何一条DDL语句,都会隐式结束当前会话中的任何事务,这意味着ddl语句并不能在另一个事务中执行

上一篇 下一篇

猜你喜欢

热点阅读