MySQL向表中添加列方法实例
作者:okokabcd 发布时间:2024-01-20 19:08:37
标签:mysql,表,添加列
我们使用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函数来返回列是否存在。
在表中已有字段后添加列名
alter table 表名 add column 列名 类型 after 已有列名 comment '注释信息';
alter table students add column class varchar(40) after student_name comment '学生班级';
删除列
alter table 表名 drop column 列名;
alter table students drop column grade;
参考
https://www.begtut.com/mysql/mysql-add-column.html
来源:https://blog.csdn.net/ln_ydc/article/details/127560296


猜你喜欢
- 前言今天的文章比较基础,但却是必须掌握的,而且本文有些内容,也许你之前没想过。希望这篇文章能够让你理解环境变量并掌握 Go 环境变量相关操作
- 公用表表达式简介:公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VI
- 前言Golang语言有诸多优点:静态编译、协程、堪比c语言的高性能。但是也有一些令人发指的地方 —— 经常被人调侃 五行代码,三行错误处理
- 在 SQL Server 中可以这样处理: if not exists (select 1 from t where id = 1
- 在极坐标中,圆的表示方式为:x=x0+rcosθy=y0+rsinθ圆心为(x0,y0),r为半径,θ为旋转度数,值范围为0-359如果给定
- variables_to_restore函数,是TensorFlow为滑动平均值提供。之前,也介绍过通过使用滑动平均值可以让神经网络模型更加
- 前言在JavaScript中,数据类型分为两大类,一种是基础数据类型,另一种则是复杂数据类型,又叫引用数据类型基础数据类型:数字Number
- 如果没有设置分页,django-rest-framework 会将所有资源类表序列化后返回,如果资源很多,就会对网站性能造成影响。为此,我们
- 这些列举的网站,站内还有大量的效果,希望大家多去找找,对于研究的朋友来说,更是很棒的源码参考。第5款的东东,很强很震撼...1、$fx()简
- 练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?a = [&quo
- 引子:在windows中python3使用 pycryptodemo 模块实现Aes加密解密。Aes加密有多种方式,自己可以上网了解下。 A
- 在我上一篇文章,我搭了一个框架,模拟了Flask网站上“@app.route(‘/')”第一条例子的行为。如果你错过了那篇“这不是魔
- 通常绘制二维曲线的时候可以使用matplotlib,不过如果电脑上安装了pandas的话可以直接使用Series的绘图方法进行图像的绘制。p
- 绘制一个菱形四边形,边长为 200 像素。方法1和2绘制了内角为60和120度的菱形,方法3绘制了内角为90度的菱形。方法1
- SQLserver 2000中出现“指定的服务并未以已安装的服务存在" 解决方案一、将计算机名改成大写。二、将sql server
- Python tkinter中label控件动态改变值最近在用tkinter做大作业,因为是第一次接触tkinter,所以会遇到很多问题。比
- 本文实例讲述了python计算方程式根的方法。分享给大家供大家参考。具体实现方法如下:''' roots = pol
- Array()CInt()CStr() Date() DateAdd() Day() FormatCurrency() FormatDate
- 加上设置字符编码的方法:response.setHeader("charset","gb2312")
- 1.首先安装依赖包,避免在安装过程中出现问题[root@chufeng yusen]# yum -y install wget vim ba