美文网首页
DDL(1)表和库的基础操作

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

作者: 温岭夹糕 | 来源:发表于2025-12-05 22:16 被阅读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'}
}
  • character set选项指定默认字符集,默认的 MySQL 服务器字符集和排序规则是utf8mb4和utf8mb4_0900_ai_ci
    使用以下命令查看支持的字符集
show character set;

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

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

SET NAMES 'utf8mb4'
  • collate指定默认数据库的排序规则,查看与utf8mb4相关的字符集排序
show collation where Charset='utf8mb4';

其中collate的命名规则如下

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

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

后缀 含义
ci case insensitive(不区分大小写)
cs case sensitive(区分大小写)
bin 二进制比较
  • ENCRYPTION在8.0.16中引入,是数据库加密选项

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

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

创建表格

定义在这里

表数据的存储文件

8.0之后默认使用Innodb引擎

  • 独立表空间创建的表,表数据和关联索引存储在data文件夹的.db文件中(与表名相同)
  • 在共享表空间中创建的存放在ibdata文件中*(一般仅在特殊场景下才如大量小表,考虑使用)
配置innbodb_file_per_table选项控制在哪个表空间

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

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

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

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

列选项

  • json列不能被索引
  • 对于char/varchar/binary/varbinary列可以创建仅使用前导部分的索引,即col_name(len),这样能使得列索引文件减小
  • 如果未指定NULL或NOT NULL,则默认NULL
  • auto_increment,每个表只能有一个auto_increment列,且必须被索引,且不能有default值
  • comment注释
  • primary key 主键,唯一索引
  • key | index 都是索引
  • unique不同索引
  • fulltext 用于全文搜索
  • foreign key 外键

常见的表格选项

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

  • engine新表的默认存储引擎是innodb,还有myisam(主要用于只读或以读为主),memory(数据存内存)
  • character set,collate和comment上面都提过
  • tablespace

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

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

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

相关文章

  • 黑猴子的家:mysql DDL 库和表的管理

    DDL数据定义语言 1、库的操作 (1)显示数据库 (2)创建库 (3)删除库 2、表的操作 (1)创建表 案例:...

  • SQL语法总结

    SQL DML 和 DDL 数据操作语言 (DML) (基础篇) SELECT - 从数据库表中获取数据SELEC...

  • mysql语句

    DDL:对数据库,表,列进行操作DDL:对数据库,表,列进行操作 关键字:create 创...

  • 2020-08-03(mysql基础)

    1,ddl:(Defination数据定义语言)操作数据库和表; dml:(Manipulation数据操作语...

  • MySQL语句记录(持续更新)

    1. DDL (Data Definition Language)数据定义语言,用于操作数据库和表 create ...

  • oracle学习笔记十——创建和管理表(DDL语句)

    十.创建和管理表(属于DDL语句) 1.DDL语句 (1)DDL语句主要是操作数据库对象(创建,删除,修改)(2)...

  • SQL之DDL

    DDL是用于操作数据库以及表结构的语句 数据库操作 数据类型 表操作 一.数据库操作 查看所有数据库:SHOW D...

  • SQLite 语法初级教程

    SQL DML 和 DDL DML:数据库操作语言 SELECT - 从数据库表中获取数据UPDATE - 更新数...

  • MYSQL入门学习基础片-增删改查

    一、DDL数据定义语言 1、数据库操作(暂无需掌握) 2、表结构操作 前提:先使用USE 数据库名 选择数据库 选...

  • 2021-02-03 HiveSQL:DDL和DML

    一、DDLHive中的DDL和MySQL中基本一致。 1.数据库的操作 2.表的操作2.1创建表相较于MySQL,...

网友评论

      本文标题:DDL(1)表和库的基础操作

      本文链接:https://www.haomeiwen.com/subject/csvtcstx.html