首页 > 数据库 >MySQL向表中添加列

MySQL向表中添加列

时间:2022-10-27 20:57:42浏览次数:77  
标签:vendor name column add 添加 MySQL table alter 向表中

我们使用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

标签:vendor,name,column,add,添加,MySQL,table,alter,向表中
From: https://www.cnblogs.com/okokabcd/p/16833688.html

相关文章

  • MKZS515-高并发高性能高可用Mysql - 第6章 如何处理数据更新
    1、数据库”动起来“之后,会发生什么?1、产生日志数据数据库在更新时候,会产生binlog、redolog、undologbinlog:server层产生的逻辑......
  • ntunnel_mysql.php
    前言:问题:服务器有跳板机不能直接用本地navicat链接数据库可以用这个方法导出php脚本通过wep服务3.访问4.本地navicat......
  • 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景
    大家好,我是melo,一名大三后台练习生专栏回顾索引的原理&&设计原则欢迎关注本专栏:MySQL高级篇本篇速览在我们上一篇文章中,讲到了索引的原理&&设计原则,知道了索引如......
  • Ubuntu 安装 PhpMyAdmin 管理 MySQL 数据库
     Ubuntu安装PhpMyAdmin管理MySQL数据库前言:当前服务器有跳板机不能直接用本地navicat连接数据库问题  PhpMyAdmin是一个用PHP编写的软件工具,可以通过......
  • 如何添加网狐荣耀6801的3D桌子效果
    默认的桌子是平面图,头像也很丑,讲一下怎么改为3D桌子效果如下:  引入增加的代码和资源,要把头文件和cpp都添加到项目,然后资源要在版本RC里面引入,注意代码不能直接替换,需......
  • 学习笔记——设置动态表格(添加、删除记录)
    2022-10-27实验结果:  实现代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc="vue.js"></scr......
  • OpenResty+mysql+redis
    1、       ad_load.lua  nginx.conf1、读取mysql并缓存redis     参考:https://www.cnblogs.com/bbgs-xc/p/14437703.html https:/......
  • Mysql备份
    Mysql备份笔记Mysql日志类型日志分类错误日志:启动,停止,关闭失败报错。rpm安装日志位置/var/log/mysqld.log通用查询日志:所有的查询都记下来二进制日志:实现备......
  • MySQL基础篇--执行计划key_len计算
    字符类型charchar(N)固定字段且允许NULL=N*(characterset:utf8=3,gbk=2,latin1=1)+1(NULL)char(N)固定字段且不允许NULL=N*(characterset:utf8=3,gbk=2,lat......
  • echarts相关配置(随时添加)
    option--tooltip图层的信息提示框backgroundColor、textStyle:{color、font-size}option-legend图例属性设置(top、right、x、y等)、orient:(vertical、horizontal)option-seri......