mysql alter 用法

本文介绍了如何使用MySQL的ALTER TABLE语句来修改数据库表结构,包括修改列名、数据类型,新增及删除列等操作。
写道
mysql

修改列示例:

alter table employee modify userName varchar(20);

修改列说明:

alter table employee changer userName user_name varchar(20);

删除列:

alter table employee drop userSex;

新增列:

alter table employee add (email varchar(50) null);
### MySQLALTER 语句的用法 #### 1. 概述 `ALTER` 语句在 MySQL 中用于修改已有表的结构。它可以用来添加、删除或修改列,改变索引,调整存储引擎以及其他与表相关的操作[^1]。 #### 2. 基本语法 `ALTER` 语句的一般形式如下: ```sql ALTER [IGNORE] TABLE 表名 改动说明; ``` 其中改动说明可以是多个子句组合而成,每个子句之间用逗号分隔。 #### 3. 添加列 要向现有表中添加新列,可使用 `ADD` 子句。例如: ```sql ALTER TABLE employees ADD COLUMN phone_number VARCHAR(15); ``` 这条语句会在 `employees` 表中增加一个名为 `phone_number` 的列,其数据类型为 `VARCHAR(15)`[^1]。 #### 4. 修改列 对于已经存在的列,如果需要更改它的定义,可以使用 `MODIFY` 或者 `CHANGE` 子句。 - 使用 `MODIFY` 只能改变列的数据类型和其他属性而不改变列名: ```sql ALTER TABLE employees MODIFY phone_number VARCHAR(20); ``` - 如果还需要重命名列,则应使用 `CHANGE` 子句: ```sql ALTER TABLE employees CHANGE phone_number contact_info VARCHAR(20); ``` 这里不仅改变了列的数据类型,还将原列名 `phone_number` 更改为 `contact_info`[^2]。 #### 5. 删除列 若想从表中移除某一列,可通过 `DROP COLUMN` 实现: ```sql ALTER TABLE employees DROP COLUMN contact_info; ``` #### 6. 调整列位置 有时可能希望重新排列表内的列顺序,这也可以借助于 `AFTER` 或 `FIRST` 参数完成: ```sql ALTER TABLE employees ADD COLUMN department_id INT AFTER employee_id; ALTER TABLE employees ADD COLUMN created_at TIMESTAMP FIRST; ``` 前一句把新建的 `department_id` 插入到 `employee_id` 后面;而后一句则使 `created_at` 成为首列。 #### 7. 更改表选项 除了针对单个列的操作外,还能整体更新某些表级参数比如默认字符集或者转换成另一种存储引擎等等: ```sql ALTER TABLE employees CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE employees ENGINE=InnoDB; ``` #### 8. 示例综合练习 假设有一个初始状态简单的用户信息记录表 `users` ,仅含两字段分别是用户名(`username`)和密码哈希值(`password_hash`) 。现在按照业务需求逐步完善它: 第一步:扩展年龄范围并允许为空; 第二步:加入电子邮箱地址作为额外联系方式之一; 第三步:规定主键唯一标识符; 第四步:切换至更高效的事务处理机制即 InnoDB 类型。 最终脚本可能是这样的样子: ```sql -- Step 1: Modify existing column definition. ALTER TABLE users MODIFY password_hash CHAR(64); -- Step 2: Add new columns for additional information. ALTER TABLE users ADD COLUMN email_address VARCHAR(255), ADD COLUMN age TINYINT UNSIGNED NULL; -- Step 3: Define primary key constraint on username field ensuring uniqueness across all rows within this table. ALTER TABLE users ADD CONSTRAINT pk_users PRIMARY KEY (username); -- Step 4: Switch underlying storage engine type to support advanced features like transactions etc.. ALTER TABLE users ENGINE=InnoDB; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值