MySQL数据库表的管理(修改表,复制,新增、修改列,删除表列)
关系型数据库的数据通常都是以表的形式存储和展现,因此可以简单而粗暴地讲,一个关系就是一个表。在创建表格后,在后期对数据库表的管理工作中,表的维护、修改是重要工作,如增加一个新列,删除一列,修改某属性的数据类型等,本篇文章总结MySQL数据库表管理的基本操作。包括复制和删除表,新增、修改、删除列等。
0 数据库表管理相关命令
进行的操作 | 命令 |
---|---|
只复制列构造 | CREATE TABLE 新表名 LIKE 旧表名; |
复制数据 | INSERT INTO 新表名 SELECT FROM 旧表名; |
复制列构造+数据 | CREATE TABLE 新表名 SELECT FROM 旧表名; |
删除表 | DROP TABLE 表名; |
修改列数据类型 | ALTER TBALE 表名 MODIFY 列名 新数据类型; |
新增列 | ALTER TABLE 表名 ADD 列名 数据类型[FITRST/AFTER COL]; |
修改列位置 | ALTER TABLE 表名 MODIFY 列名 数据类型 AFTER col名; |
修改列名和数据类型 | >ALTER TABLE 表名 CHANGE 列名 新列名 类型; |
删除列 | ALTER TABLE 表名 DROP 列名; |
1 复制表 和删除表
创建表格的命令大家都很熟悉,CREATE TABLE 表名 (列名1 数据类型 选项,...)
,但是在数据库管理过程中,如果要复制一张一模一样的表,重新创建表格、插入数据显然是麻烦且耗时耗力的一件事情。
(1)只复制列构造(不复制记录数据)
如我想要只复制表格customer的列构造并命名新表格为visitor,可以使用命令:
>CREATE TABLE visitor LIKE customer;
查看 表格visitor 可以看到它的构造和customer一模一样,而执行查询时,可以看到该表是一张空表。
(2)复制数据到表
通过上述操作命令,复制了一张列构造一样的表格,但是现在想要将数据复制到该表,可以通过执行命令:
>INSERT INTO visitor SELECT * FROM customer;
执行结束后查询表记录,可以看到customer的数据完全复制到visitor;
(3)同时执行列构造和数据的复制
想要复制包括列构造和数据完全一样的表,也可以一部到位:
>CREATE TABLE customerH SELECT * FROM customer;
(4)删除表DROP TABLE
删除表使用DROP 命令,删除是不可逆的,不能恢复:
>DROP TABLE customerH;
通过SHOW TABLES
查看数据库表名,可以看到通过DROP TABLE命令删除了表customerH;
2 修改表列
(1)修改表列数据类型MODIFY
使用MODIFY修改数据类型:
>ALTER TBALE 表名 MODIFY 列名 新数据类型;
如将visitor 中nam由varchar(20)改为varchar(30)
列的数据类型可以修改,但是一定要慎重,因为修改数据类型可能会导致数据出现错误,如原本是VARCHAR(100)修改为VARCHAR(50),原本50个字符以外的数据将丢失。
(2)增加新列ADD
增加一列年龄 ,数据类型int到表visitor,默认的位置是增加到表的最后:
ALTER TABLE visitor ADD old INT;
如果想要在表头增加列,可以通过
ALTER TALE 表名 ADD 列名 数据类型 FIRST
;ALTER TABLE visitor ADD old INT FIRST;
也可以在任意位置追加列,使用after来确认位置:
ALTER TBALE visitor ADD old INT AFTER nam;
(3)修改列的位置
上述命令可以在新增列时确定列的位置,如果列已经存在了,使用MODIFY 来修改列的位置:
>ALTER TABLE visitor MODIFY old INT AFTER nam;
(4)修改列名和数据类型
可以通过CHANGE 来修改表的列名和类型,
>ALTER TABLE 表名 CHANGE 列名 新列名 类型;
如将表visitor.birh修改为birthday ,数据类型为DATE;
(3)删除列
删除列同样通过drop;
>ALTER TABLE 表名 DROP 列名;
总结:凡是修改表中列的命令,都是
ALTER TBALE EXPR col
的形式,以ALTER TABLE 开头,以函数如 MODIFY ,CHANGE ,ADD结尾。
还没有评论,来说两句吧...