mysql DDL语言执行过程

本文详细介绍了MySQL进行在线DDL操作的具体步骤,包括加字段、加索引等修改表结构的操作流程。针对大表处理过程中可能遇到的问题及解决方案进行了讨论。

由于mysql在线ddl(加字段、加索引等修改表结构之类的操作)过程如下:

 A.对表加锁(表此时只读)
B.复制原表物理结构,创建新中间表
C.修改中间表的物理结构
D.把原表数据导入中间表中,数据同步完后,锁定中间表,并删除原表
E.rename中间表为原表
F.刷新数据字典,并释放锁


普遍,对于大表的处理 ,目前没有特别好的解决方案 。 大部分公司都会有个瞬断的过程 。

### 数据库课程设计中的 MySQL DDL 使用指南 #### 创建表 在数据库课程设计中,创建新表是常见的操作之一。通过 `CREATE TABLE` 语句可以定义新的关系型表格及其属性列。语法如下: ```sql CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, ... ); ``` 此命令允许指定每一列的数据类型以及任何必要的约束条件[^3]。 例如,在学生管理系统项目里建立一个名为 students 的表: ```sql CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age TINYINT UNSIGNED, gender ENUM('M', 'F'), enrollment_date DATE NOT NULL ); ``` #### 修改现有表结构 当需要调整已存在的表结构时,可利用 `ALTER TABLE` 来增删字段或者改变其特性。具体来说,可以通过添加、修改或移除列来进行结构调整;也可以增加索引或其他类型的约束来优化性能和数据完整性验证过程。 以下是几个常用的 `ALTER TABLE` 子句实例: - 添加一列:`ALTER TABLE table_name ADD COLUMN new_column DATATYPE;` - 更改某一列的名称或类型:`ALTER TABLE table_name MODIFY COLUMN old_col NEW_DATATYPE, CHANGE COLUMN old_col new_col NEW_DATATYPE;` - 移除某列:`ALTER TABLE table_name DROP COLUMN col_to_remove;` 对于上述例子中的 student 表格,如果想要新增加一个 email 字段,则执行下面这条 SQL 命令即可实现目的。 ```sql ALTER TABLE students ADD COLUMN email VARCHAR(100); ``` #### 删除对象 要彻底清除整个表的内容并释放其所占用的空间资源,应该采用 `DROP TABLE` 或者更安全的方式——先清空再重建(`TRUNCATE`)。前者不仅会消除记录还会连同元信息一起销毁,而后者仅保留架构不变的情况下快速重置所有行为空状态[^4]。 以先前提到的学生管理系统的场景为例,假设不再需要保存历史成绩信息了,那么就可以这样处理 score_history 这张表: ```sql -- 完全删除score_history表 DROP TABLE IF EXISTS score_history; -- 清空但不破坏score_history表结构 TRUNCATE TABLE score_history; ``` #### 查看当前设置 为了确保所使用的字符集正确无误,可以在任何时候运行特定查询获取有关选定模式的信息。这有助于预防潜在兼容性问题的发生,并保障跨平台移植顺利进行[^1]。 ```sql SELECT schema_name,default_character_set_name FROM information_schema.schemata WHERE schema_name = 'your_database'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值