MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

关系型数据库的数据通常都是以表的形式存储和展现,因此可以简单而粗暴地讲,一个关系就是一个表。在创建表格后,在后期对数据库表的管理工作中,表的维护、修改是重要工作,如增加一个新列,删除一列,修改某属性的数据类型等,本篇文章总结MySQL数据库表管理的基本操作。包括复制和删除表,新增、修改、删除列等。

数据库表管理相关命令

MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

复制表 和删除表

创建表格的命令大家都很熟悉,CREATE TABLE 表名 (列名1 数据类型 选项,…),但是在数据库管理过程中,如果要复制一张一模一样的表,重新创建表格、插入数据显然是麻烦且耗时耗力的一件事情。
(1)只复制列构造(不复制记录数据)

如我想要只复制表格customer的列构造并命名新表格为visitor,可以使用命令:

CREATE TABLE visitor LIKE customer
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)
查看 表格visitor 可以看到它的构造和customer一模一样,而执行查询时,可以看到该表是一张空表。*

(2)复制数据到表

通过上述操作命令,复制了一张列构造一样的表格,但是现在想要将数据复制到该表,可以通过执行命令:

INSERT INTO visitor SELECT * FROM customer;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

执行结束后查询表记录,可以看到customer的数据完全复制到visitor;

(3)同时执行列构造和数据的复制
想要复制包括列构造和数据完全一样的表,也可以一部到位:

CREATE TABLE customerH SELECT * FROM customer;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

(4)删除表DROP TABLE
删除表使用DROP 命令,删除是不可逆的,不能恢复:

DROP TABLE customerH;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

通过SHOW TABLES查看数据库表名,可以看到通过DROP TABLE命令删除了表customerH;

2 修改表列
(1)修改表列数据类型MODIFY

使用MODIFY修改数据类型:

ALTER TBALE 表名 MODIFY 列名 新数据类型;

如将visitor 中nam由varchar(20)改为varchar(30)
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)
列的数据类型可以修改,但是一定要慎重,因为修改数据类型可能会导致数据出现错误,如原本是VARCHAR(100)修改为VARCHAR(50),原本50个字符以外的数据将丢失。

(2)增加新列ADD

增加一列年龄 ,数据类型int到表visitor,默认的位置是增加到表的最后:

ALTER TABLE visitor ADD old INT;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

如果想要在表头增加列,可以通过ALTER TALE 表名 ADD 列名 数据类型 FIRST;

ALTER TABLE visitor ADD old INT FIRST;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

也可以在任意位置追加列,使用after来确认位置:

ALTER TBALE visitor ADD old INT AFTER nam;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

(3)修改列的位置

上述命令可以在新增列时确定列的位置,如果列已经存在了,使用MODIFY 来修改列的位置:

ALTER TABLE visitor MODIFY old INT AFTER nam;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

(4)修改列名和数据类型

可以通过CHANGE 来修改表的列名和类型,

ALTER TABLE 表名 CHANGE 列名 新列名 类型;

如将表visitor.birh修改为birthday ,数据类型为DATE;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)
(3)删除列
删除列同样通过drop;

ALTER TABLE 表名 DROP 列名;
MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)

总结:凡是修改表中列的命令,都是ALTER TBALE EXPR col的形式,以ALTER TABLE 开头,以函数如 MODIFY ,CHANGE ,ADD结尾。