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

简介

alter table table_name
add [column] column_name column_definition [first|after existing_column];

说明:

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

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

alter table table_name
add [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 vendor
add column phone varchar(15) after name;

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

alter table vendor
add 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 vendor
add 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_rate
from 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 vendor
add column vendor_group int not null;

操作结果:

ERROR 1060 (42S21): Duplicate column name 'vendor_group'

检查表中是否已存在列

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

select if(count(*) = 1, 'Exist', 'Not Exist') as result
from information_schema.columns
where 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

MySQL向表中添加列相关推荐

  1. 怎么在Mysql中添加列_mysql如何给表中添加列(字段)?

    mysql给表中添加列的方法:1.使用"ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件];"在末尾添加列:2.使用"ALTER TABLE 表名 A ...

  2. sql追加列mysql_mysql如何给表中添加列(字段)?

    mysql给表中添加列的方法:1.使用"ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件];"在末尾添加列:2.使用"ALTER TABLE 表名 A ...

  3. SQL命令向表中添加列

    SQL语言用ALTER TABLE语句修改基本表,其一般格式为: ALTER TABLE <表名> [ADD [COLUMN] <新列名><数据类型>[完整性约束] ...

  4. 【mysql】table中添加列

    前言 mysql 对已有table添加列 操作命令 # 先登录mysql >mysql -uroot -p # 切换数据库 >use mydb; # 添加2列 >alter tabl ...

  5. Mysql在表中添加约束条件

    第一种:在创建表的时候: create table student( sno char(9) primary key, sname varchar(20) unique, ssex char(2) n ...

  6. <MySQL>表中添加和删除字段

    1.数据库表:添加字段 如:在data_list_dic表中字段dicValue后面添加新字段:dicName2 原始表: SQL语句: ALTER TABLE data_list_dic ADD d ...

  7. MySQL向表中添加一个列

    ALTER TABLE post/*post:表名*/ ADD COLUMN h_id/*h_id:列名*/ INT;

  8. mysql删除表中的一列数据_在数据表中添加或删除一列

    注意: 我们希望能够尽快以你的语言为你提供最新的帮助内容. 本页面是自动翻译的,可能包含语法错误或不准确之处. 我们的目的是使此内容能对你有所帮助. 可以在本页面底部告诉我们此信息是否对你有帮助吗? ...

  9. sql server 数据库表中增加列,增加字段,插入列,插入字段,修改列,修改字段,

    格式 --增加列 alter table 表名 add 字段名 类型 null default 默认值--给列增加注释 execute sp_addextendedproperty 'MS_Descr ...

最新文章

  1. insert 语句_[原理解析] MySQL insert语句的磁盘写入之旅
  2. MPLS 具有哪些特点?——Vecloud
  3. 【HDU - 1757】A Simple Math Problem (矩阵快速幂)
  4. 2017.10.26 星际贸易 思考记录
  5. 一种简单实用的 AjaxPro 调试/错误处理方式
  6. 关于前端学习和笔试面试的总结
  7. struts2实现XML异步交互
  8. Github Projects 项目管理 怎么用
  9. 黑马程序员, html css javascript 前端笔记 pink老师教程
  10. ACM MM论文放榜!淘系技术内容互动算法团队4篇论文入选!
  11. 一次性奖励300万?成都市武侯区促进文化产业发展系列政策影视产业专项政策出来了
  12. 前端预览PDF总结:iframe、embed、PDFObject、PDF.js
  13. css 背景图片虚化磨砂效果
  14. 三星s8文档有html,【分享】你不知道的三星s8 : s8/s8+全面屏教程
  15. VIP邮箱发出去的邮件能撤回吗?怎么撤回邮件?
  16. shell 一些好玩的技巧.
  17. 微信分享链接不显示缩略图
  18. 如何将网站发布上线,并配置自定义域名
  19. ORA-01452报错的一种解决办法
  20. 瑞芯微1126环境配置说明

热门文章

  1. mysql按专业人数升序查询_sql 语句排序 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列?...
  2. 拼多多自动退款的5个方案,第5个是终极方法
  3. 怎么解决Word表格分页断开
  4. 树莓派 LCD驱动安装,及屏幕分辨率设置
  5. base64转码后更换jpeg、png图片格式
  6. 成为资本顾旋:我们如何成为创新奇智最早外部机构投资者
  7. RDD、DataSet与DataFream
  8. 同花顺问财选股python源码
  9. 消除Hadoop警告WARN util.NativeCodeLoader
  10. iOS Call Kit for VOIP