写点什么

MySQL 向表中添加列

作者:okokabcd
  • 2022-10-27
    山东
  • 本文字数:1290 字

    阅读完需:约 4 分钟

MySQL向表中添加列

我们使用alter table add column语句向现有表中添加新列。

简介

alter table table_nameadd [column] column_name column_definition [first|after existing_column];
复制代码


说明:


  • alter table子句后指定表名;

  • column关键字是可选的,可以省略它;

  • 可以通过first关键字将新列添加为表的第一列,也可以使用after existing_column子句在现有列之后添加新列,如果没有明确指定会将其添加为最后一列;


若要向表中添加两个或更多列,使用下面语法:


alter table table_nameadd [column] column_name column_definition [first|after existing_column],add [column] column_name column_definition [first|after existing_column],...;
复制代码

举例

创建一个表

create database test;use test;
create table if not exists vendor ( id int auto_increment primary key, name varchar(255));
复制代码

添加新列并指定位置

alter table vendoradd column phone varchar(15) after name;
复制代码

添加新列但不指定新列位置

alter table vendoradd column vendor_group int not null;
复制代码

插入记录

insert into vendor(name, phone, vendor_group)values('IBM', '(408)-298-2987', 1);
insert into vendor(name, phone, vendor_group)values('Microsoft', '(408)-298-2988', 1);
复制代码

同时添加两列

alter table vendoradd column email varchar(100) not null,add column hourly_rate decimal(10, 2) not null;
复制代码


注意:email 和 hourly_rate 两列都是 not null,但是 vendor 表已经有数据了,在这种情况下,MySQL 将使用这些新列的默认值。

检查 vendor 表中的数据

select id, name, phone, vendor_group, email, hourly_ratefrom vendor;
复制代码


查询结果:


+----+-----------+----------------+--------------+-------+-------------+| id | name      | phone          | vendor_group | email | hourly_rate |+----+-----------+----------------+--------------+-------+-------------+|  1 | IBM       | (408)-298-2987 |            1 |       |        0.00 ||  2 | Microsoft | (408)-298-2988 |            1 |       |        0.00 |+----+-----------+----------------+--------------+-------+-------------+2 rows in set (0.00 sec)
复制代码


email 列中填充了空值,而不是 NULL 值,hourly_rate 列填充了 0.00

添加表中已存在的列

MySQL 将发生错误


alter table vendoradd column vendor_group int not null;
复制代码


操作结果:


ERROR 1060 (42S21): Duplicate column name 'vendor_group'
复制代码

检查表中是否已存在列

对于几列的表,很容易看到哪些列已经存在,如果有一个饮食数百列的大表,那就比较费劲了


select if(count(*) = 1, 'Exist', 'Not Exist') as resultfrom information_schema.columnswhere table_schema = 'test'  and table_name = 'vendor'  and column_name = 'phone';
复制代码


查询结果:


+--------+| result |+--------+| Exist  |+--------+1 row in set (0.00 sec)
复制代码


在 where 子句中,我们传递了三个参数:表模式或数据库,表名和列名。我们使用 if 函数来返回列是否存在。

参考

https://www.begtut.com/mysql/mysql-add-column.html

发布于: 刚刚阅读数: 3
用户头像

okokabcd

关注

还未添加个人签名 2019-11-15 加入

一年当十年用的Java程序员

评论

发布
暂无评论
MySQL向表中添加列_MySQL_okokabcd_InfoQ写作社区