ALTER TABLE [table name] [changes];
CREATE TABLE [database name].[new table name] LIKE [old table name];
只是复制了表的结构,并没有把数据也复制的
随后把数据也复制一下
INSERT INTO [new table name]
SELECT * FROM [database name].[old table name];
复制表结构的同时,也复制数据
CREATE TABLE [new table name]
SELECT * FROM [database name].[old table name];
DROP TABLE [database name].[table name];
ALTER TABLE [table name]
ADD COLUMN [column name] [type];
例子
ALTER TABLE bird_families
ADD COLUMN order_id INT;
ALTER TABLE [table name]
DROP COLUMN [column name];
删除列会将列的 结构和数据 一并删除
MySQL 不关心显示表结构时,列的位置,而指定新列的显示位置只是方便开发者查看
ALTER TABLE [table name]
ADD COLUMN [column name] [type, constraints]
AFTER [another column name];
ALTER TABLE [table name]
ADD COLUMN [column name] [type, constraints]
FIRST;
ALTER TABLE birds_new
ADD COLUMN body_id CHAR(2) AFTER wing_id,
ADD COLUMN bill_id CHAR(2) AFTER body_id,
ADD COLUMN endangered BIT DEFAULT b'1' AFTER bill_id,
CHANGE COLUMN common_name common_name VARCHAR(255);
ADD COLUMN
CHANGE COLUMN
BIT
类型解释:
CHANGE COLUMN
输入了列名 common_name 两次
ALTER TABLE
时,会创建一个副本表,当所有操作合法时,才会替换掉原有的表
ALTER TABLE birds_new
MODIFY COLUMN endangered
ENUM('Extinct',
'Extinct in Wild',
'Threatened - Critically Endangered',
'Threatened - Endangered',
'Threatened - Vulnerable',
'Lower Risk - Conservation Dependent',
'Lower Risk - Near Threatened',
'Lower Risk - Least Concern')
AFTER family_id;
修改表结构的另一个方法,使用 MODIFY COLUMN
MODIFY COLUMN
只需要输入一次列名,因为这个命令不支持修改列名
CHANGE COLUMN
使用 CHANGE
命令
ALTER TABLE [table name]
CHANGE COLUMN [column name] [new column name] [type, constraints] DEFAULT [default value];
在修改默认值的同时,可以修改列名
使用 ALTER
命令
ALTER TABLE [table name]
ALTER [column name] SET DEFAULT [default value];
将自定义的默认值取消,重新设置会 NULL 或对应数据类型的默认值
ALTER TABLE [table name]
ALTER [column name] DROP DEFAULT;
SELECT auto_increment
FROM information_schema.tables
WHERE table_name = [your table name];
这里输出的结果就是 [your table] 在下一次插入数据时,自增长的值
修改这个值
USE [your database]
ALTER TABLE [your table]
AUTO_INCREMENT = 10;
RENAME TABLE [the table]
TO [that table];
稳妥的做法:
RENAME TABLE
的操作同时可以实现数据库的移动,即实现从数据库 A 移动到数据库 B 中
RENAME TABLE B.the_table TO B.the_table_old,
A.the_table_new TO B.the_table;
在修改过程中若出现了问题,将会得到一个错误消息,并且不会作出任何修改