当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。

开始本章教程前让我们先创建一张表,表名为:testalter_tbl。

root@host# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> create table testalter_tbl-> (-> i INT,-> c CHAR(1)-> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

删除,添加或修改表字段

如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:

mysql> ALTER TABLE testalter_tbl  DROP i;

如果数据表中只剩余一个字段则无法使用DROP来删除字段。

MySQL 中使用 ADD 子句来向数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型:

mysql> ALTER TABLE testalter_tbl ADD i INT;

执行以上命令后,i 字段会自动添加到数据表字段的末尾。

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。

尝试以下 ALTER TABLE 语句, 在执行成功后,使用 SHOW COLUMNS 查看表结构的变化:

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

FIRST 和 AFTER 关键字可用于 ADD 与 MODIFY 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。


修改字段类型及名称

如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。

例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

ALTER TABLE 对 Null 值和默认值的影响

当你修改字段时,你可以指定是否包含值或者是否设置默认值。

以下实例,指定字段 j 为 NOT NULL 且默认值为100 。

mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;

如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。


修改字段默认值

你可以使用 ALTER 来修改字段的默认值,尝试以下实例:

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | 1000    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

你也可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Changing a Table Type:

修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 testalter_tbl 的类型修改为 MYISAM :

注意:查看数据表类型可以使用 SHOW TABLE STATUS 语句。

mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************Name: testalter_tblType: MyISAMRow_format: FixedRows: 0Avg_row_length: 0Data_length: 0
Max_data_length: 25769803775Index_length: 1024Data_free: 0Auto_increment: NULLCreate_time: 2007-06-03 08:04:36Update_time: 2007-06-03 08:04:36Check_time: NULLCreate_options:Comment:
1 row in set (0.00 sec)

修改表名

如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。

尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

ALTER 命令还可以用来创建及删除MySQL数据表的索引,该功能我们会在接下来的章节中介绍。

MySQL 索引

1 篇笔记 写笔记

  1. Vladimir

    137***4241@qq.com

    alter其他用途:

    修改存储引擎:修改为myisam

    alter table tableName engine=myisam;

    删除外键约束:keyName是外键别名

    alter table tableName drop foreign key keyName;

    修改字段的相对位置:这里name1为想要修改的字段,type1为该字段原来类型,first和after二选一,这应该显而易见,first放在第一位,after放在name2字段后面

    alter table tableName modify name1 type1 first|after name2;

MySQL ALTER命令相关推荐

  1. mysql源码添加一个命令,MySQL ALTER命令

    MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@ho ...

  2. 雷林鹏分享:MySQL ALTER命令

    当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@host# mysql -u r ...

  3. 第25章 MySQL ALTER命令教程

    当咱们需要修改数据表名或者修改数据表字段时,就需要使用到第25章 MySQL ALTER命令教程. 开始本章教程前让咱们先创建一张表,表名为:testalter_tbl. root@host# mys ...

  4. mysql alter算法_MySQL ALTER命令_mysql alter_添加_删除_修改

    MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@ho ...

  5. mysql创建table w3c_MySQL ALTER命令

    MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@ho ...

  6. MySQL(25)---- ALTER命令

    MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@ho ...

  7. php mysql修改命令_PHP编程:mysql alter table命令修改表结构实例详解

    <PHP编程:mysql alter table命令修改表结构实例详解>要点: 本文介绍了PHP编程:mysql alter table命令修改表结构实例详解,希望对您有用.如果有疑问,可 ...

  8. mysql alter table_mysql alter table 修改表命令详细介绍

    MySQL ALTER语法如下: ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...] alter_specification: AD ...

  9. Mysql学习总结(6)——MySql之ALTER命令用法详细解读

    MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. [sql] 

最新文章

  1. RESTful 架构基础
  2. 吴恩达机器学习视频及答案2018
  3. 如何实现文字翻译,这个技巧你需要掌握
  4. ceb文件在线查看_教你word、excel、ppt、pdf、ceb等格式免费转换,从此告别苦恼
  5. winston log 库如何创建 custom logger
  6. 征战云时代,如何捍卫企业数据安全?
  7. echart模块化单文件引入
  8. 坚持开源、能力内化,中移苏研荣获“中国开源领军企业”大奖!
  9. MNN(二):借助Opencv实现MNN推理
  10. # Day15-Java基础
  11. python pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued
  12. 提高情商的书籍推荐,这些书能给你提高情商的训练方法
  13. (附源码)计算机毕业设计SSM快递代收系统
  14. 网络字节顺序和主机字节顺序的转换(htons ntohs htonl ntohl)
  15. Loadrunner中几个超时函数的用法
  16. 【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
  17. 条码标签打印机可能遇到哪些问题
  18. 刷脸时代真的来了?R5人脸识别智能锁告诉你
  19. Android仿知乎图片墙
  20. VMware(必须是15.1.0才兼容win10) 安装ubuntu步骤(解决安装时候总是黑屏得问题,去掉3D加速图形)

热门文章

  1. 【OpenCV 例程200篇】93. 噪声模型的直方图
  2. C++重载流插入运算符与流提取运算符
  3. flutter ios打包_使用 Travis CI 为 Flutter 项目打包 Android/iOS 应用
  4. python3 web框架_循序渐进Python3(十二) --0--  web之框架
  5. centos6.5装mysql好难_centos 6.5装mysql5.7
  6. 多个服务器数据互通_5月23日部分服务器数据互通公告!
  7. 【数据库】Windows安装redis全流程
  8. 散列表(算法导论笔记)
  9. VMware仅主机模式访问外网
  10. 转:flex [Inspectable]标签详解