_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':no such file or directory数据库笔试题及答案Mysql Where 条件使用列别名Every derived table must have its own aliasMySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)utf8mb4 字符集(4字节 UTF-8 Unicode 编码)Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE)right syntax to use near 'USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 6mysql中delete的表别名使用方法Windows7下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.batMySQL与PostgreSQL比较 哪个数据库更好java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column 'Content' at row 1service mysqld start MySQL Daemon failed to start.Python Version 2.7 required which was not found in the registry解决python连接mysql,UTF-8乱码问题如何从官网下载MySQL最新版本的安装包?MySQL 如何实现行转列分级输出?Bluemix云端数据库服务使用示例———PHP投票程序Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序MySQL 数据库简介Windows 安装最新版 MySQLLinux 安装最新版MySQL与 MySQL 建立连接MySQL 创建子账号MySQL 多实例配置MySQL 创建数据库MySQL 删除数据库MySQL 选中数据库MySQL 的数据类型1MySQL 的数据类型2MySQL 设计数据表MySQL 数据表设计规范ALTER 命令修改表MySQL 删除数据表INSERT 插入数据DELETE 删除数据SELECT 查询数据UPDATE 更新数据LIKE 模糊查询WHERE 条件查询UNION 联合查询ORDER BY 排序JOIN 表连接DISTINCT 去重GROUP BY分组聚合函数 AVG、COUNT、SUM聚合函数 MIN、MAX条件判断函数MySQL 的系统函数MySQL 中使用正则表达式MySQL 存储引擎概述

ALTER 命令修改表

ALTER 命令修改表

前面小节介绍了如何新建表、设计表,本小节介绍如何对已经建好的数据表进行修改,其中包括对字段的修改和表名称的修改。在实际工作中,有时候原来设计的表可能不太合理,例如:用户名字段原本设计的只有 10 个字符的长度,但是有很多的用户希望开放用户名长度限制,这个时候就需要我们对表进行修改操作,让数据表更加合理。我们从以下几个角度来看下如何修改数据表:

  • 修改数据表名称;

  • 查看建表的 SQL 语句;

  • 修改表字段数据类型;

  • 新增、修改、删除表字段;

1. 修改数据表名称

修改表名称命令很简单:

命令 : ALTER TABLE 旧的表名 RENAME TO 新的表名;

我们使用这条命令将 item_name 数据库中的 student 表修改成 new_student,执行结果如下图:

图片描述

2. 查看建表 sql 语句

修改表字段类型命令 :

 命令 : SHOW CREATE table_name;

执行结果如下图:

图片描述

如上图所示 “new_student” 为表名,建表语句为:

CREATE TABLE `new_student` (
  `id` int() unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar() NOT NULL DEFAULT '无名',
  `age` int() unsigned NOT NULL DEFAULT '0',
  `id_number` varchar() NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tips:其中 “student” 为表名称,“id”、“name”、“age”、id_number为字段名称,跟在字段名称后面的是字段的数据类型,“UNSIGNED” 表示无符号,AUTO_INCREMENT表示自增,PRIMARY KEY (`id`)表示设置 “id” 为业务主键,NOT NULL DEFAULT ‘无名’“表示默认不为空。且默认值为无名”。

3. 修改表字段数据类型

修改表字段数据类型命令,以上面 “new_student” 表的 “name” 字段为例,varchar 类型修改为 char类型 :

ALTER TABLE `new_student` MODIFY COLUMN `name` char() CHARACTER 
SET utf8 COLLATE utf8_general_ci 
NOT NULL DEFAULT '无名' AFTER `id`;

其中 “CHARACTER SET utf8 COLLATE utf8_general_ci” 为新字段类型的字符集和编排方式,默认值为 “无名”,AFTER id 表示跟在 id 字段后面。

执行结果如下图 :

图片描述

Tips:参照上面修改命令格式,将 name 字段数据类型改为 int 命令:
ALTER TABLE new_student MODIFY COLUMN name int(10) NOT NULL DEFAULT '无名' AFTER id;。

4. 新增表字段

新增数据表的字段命令,以新增性别字段为例:

 ALTER TABLE `new_student` ADD COLUMN `sex` tinyint() UNSIGNED NOT NULL DEFAULT  COMMENT '性别 : 1:男 2:女' AFTER `id_number`;

执行结果如下图:

图片描述

Tips:其中COMMENT '性别 : 1:男 2:女' 表示该字段的注释说明;。

5. 删除表字段

删除表字段命令如下,以删除上面性别字段为例 :

ALTER TABLE `new_student` DROP COLUMN `sex`;

执行结果如下图:

图片描述

6. 修改表字段名称

修改表字段数据类型命令,以 name 字段改为 new_name 为例:

ALTER TABLE `new_student` CHANGE COLUMN `name` `new_name` char() CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '无名' AFTER `id`;

执行结果如下图:

图片描述

7. 修改表字段默认值

修改表字段默认值命令,以修改  new_name 字段默认值为例 :

ALTER TABLE `new_student` MODIFY COLUMN `new_name` char() CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '小花' AFTER `id`;

执行结果如下图:

图片描述

8.小结

本小节介绍了如何修改表字段名称、修改字段数据类型、删除表字段、修改表字段名称、修改表字段默认值,需要注意的是,ALTER TABLE 操作的性能对于大表来说会存在问题,因此在实际生产环境中,ALTER TABLE 操作需要谨慎,MySQL 执行大部分修改表结构的方法是用新的结构创建一个空白表,从表汇总查出所有数据插入新表,这样操作对于大数据量的表来说可能需要花费很长时间,所以操作大表之前需要谨慎一些。