MySQL-DDL基础
1、库定义
1.1 创建数据库
create database test_1;
create database if not exists test_2;
create database test_3 charset utf8mb4;
create schema test_4;
1.2 查询数据库
show databases;
show create database test_3;
1.3 修改库定义
alter database test_3 charset utf8;
1.4 删除数据库
drop database test_4;
2、表定义
2.1 创建表
create table student(
id int unsigned not null primary key auto_increment comment '学号',
name varchar(64) not null comment '姓名',
age tinyint unsigned not null comment '年龄',
gender char(1) not null comment '性别',
province enum('bj','tj','sh','cq','xk','am','tw') not null comment '省份',
intime datetime not null default now() comment '入学时间'
);
2.2 查询表定义
show tables;
show create table student;
desc student;
2.3 修改表定义
rename table student to stu;
alter table stu engine=innodb;
alter table stu add is_deleted tinyint not null default 0;
alter table stu add a int after name;
alter table stu drop a;
alter table stu modify name varchar(100) not null;
alter table stu add index i_name(name);
2.4 删除表
drop table stu;
2.5 清空表
truncate table stu;
alter table目前可以支持的算法有三种:COPY、INPLACE、INSTANT。
INSTANT只需修改数据字典中的元数据,无需拷贝数据也无需重建整表,同样,也无需加排他MDL锁,原表数据也不受影响。整个DDL过程几乎是瞬间完成的,也不会阻塞DML,使用范围较小。这个新特性是8.0.12引入的。
执行DDL操作时,ALGORITHM选项可以不指定,这时候MySQL按照INSTANT、INPLACE、COPY的顺序自动选择合适的模式。
一般DDL操作最好都采用pt-osc或gh-ost这样的工具来实施,并且实施之前务必要先检查当前目标表上是否有事务或大查询未结束,避免严重的MDL锁等待
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律