产品操作MySQL第3篇 – 修改一张表

MYSQL

本资料为产品岗位作为日常工作参考,语言口语化

At 2019/4/15 By David.Yang


修改一张数据表

随着业务发展,会出现数据表无法支撑当前业务数据的情况,

这时候我们需要对数据表进行变动,

数据表发生变动都通过SQL ALTER TABLE 语句来实现。


新增字段

-- 新增字段

-- ALTER TABLE `表名` ADD `列名称` 字段类型(长度) [完整性约束条件] COMMENT '注释说明' AFTER `位置字段`;

-- [完整性约束条件]指前文讲的限定字段的条件,比如:

-- 为空设定:NOT NULL DEFAULT '0'


示例:

先看看test表现在有哪些字段

SQL

mysql> desc test;



补充两个字段

SQL

mysql>ALTER TABLE `test` ADD `name` varchar(20) COMMENT '名称';

Query OK, 0 rows affected (0.17 sec)

Records: 0 Duplicates: 0  Warnings: 0


SQL

mysql>desc test;



看到name字段已经成功添加到test表当中了

我们在添加一个字段,并且指定字段在name字段后面,

而且指定不能为空,默认值为0

SQL

mysql>ALTER TABLE `test` ADD `gender` int(2) NOT NULL DEFAULT 0 COMMENT '性别 0未知 1女 2男' AFTER `name`;

Query OK, 0 rows affected (0.11 sec)

Records: 0 Duplicates: 0  Warnings: 0


看看现在有哪些字段了

SQL

mysql>desc test;


修改字段属性

-- 修改字段属性

-- ALTER TABLE `表名` CHANGE `列名称``新列名称`(不需要重命名就用和原来列名) 字段类型(长度) [完整性约束条件]

-- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件

示例:

我们先添加一个字段,在修改他的属性

SQL

mysql> ALTER TABLE `test` ADD `brith` int(10) COMMENT '生日';

Query OK, 0 rows affected (0.12 sec)

Records: 0  Duplicates: 0  Warnings: 0


mysql> desc test;

看到brith字段已经加进去了


修改字段名称

示例:

-- 修改字段名称

-- ALTER TABLE `表名` CHANGE `列名称` `新列名称`(不需要重命名就用和原来列名) 字段类型(长度) [完整性约束条件]

-- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件

SQL

mysql> ALTER TABLE `test` CHANGE `brith` `brithday` int(10) COMMENT '生日';

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0


mysql> desc test;

可以看到brith已经改名为brithday


修改字段属性

-- 修改字段属性

-- ALTER TABLE `表名` MODIFY `列名称` 字段类型(长度) [完整性约束条件]

-- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件

示例:

-- 修改brithday类型由数值改成字符串

SQL

mysql> ALTER TABLE `test` MODIFY `brithday` VARCHAR(20) COMMENT '生日';

Query OK, 1 row affected (0.08 sec)

Records: 1  Duplicates: 0  Warnings: 0

mysql> desc test;

可以看到brithday已经由数值变成了一种文本格式


示例:

-- 将brithday移到name后面

SQL

mysql>ALTER TABLE `test` MODIFY `brithday` VARCHAR(20) COMMENT '生日' AFTER `name`;

Query OK, 0 rows affected (0.09 sec)

Records: 0 Duplicates: 0  Warnings: 0


mysql>DESC test;

可以看到成功讲brithday移动到了name后面


删除一个字段列

删除一个不再需要的字段使用DROP 语句,

在删除数据列之前应该确定业务当中已经不再使用这个字段,

当前使用到的地方都已经做了迁移,

否则…

-- 删除列

-- ALTER TABLE `表名字` DROP `字段名称`

示例:

此处先创建一个字段,

后然再将其删除

SQL

mysql> ALTER TABLE `test` ADD `deleted` varchar(20) COMMENT '删除演示字段';

Query OK, 0 rows affected (0.10 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test;


将其删除

SQL

mysql>ALTER TABLE `test` DROP `deleted`;

Query OK, 0 rows affected (0.10 sec)

Records: 0 Duplicates: 0  Warnings: 0


mysql>desc test;


对字段值管理默认值

添加默认值

ϒ 新建字段时指定默认值

我们可以在一个字段创建时就可以进行默认值赋值

-- 新增字段

-- 前面讲 ALTER TABLE `表名` ADD `字段名` 这个语法时讲到约束条件里面是可以将默认值之类进行规定


演示:

SQL

mysql> ALTER TABLE `test` ADD `age` int(4) DEFAULT 18;

Query OK, 0 rows affected (0.14 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test;

设定age默认值为18,之后所有数据在不赋予age时数据库默认会填入18


注:

新字段创建后,存量数据也会被赋予默认值


ϒ 修改已存在字段的默认值

-- 已存在字段设置默认值

-- ALTER TABLE `表名` ALTER `字段名` SET DEFAULT '默认值';


演示:

SQL

mysql> ALTER TABLE `test` ALTER `name` SET DEFAULT '匿名用户';

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test;


注:

针对已存在的字段进行默认值赋予,

存量数据不受影响,不会被赋值,

新数据将会赋予默认值。


删除默认值

使一个字段的默认值失效,直接删除即可。

-- 删除默认值

-- ALTER TABLE `表明` ALTER `字段名` DROP DEFAULT;


演示:

SQL

mysql> ALTER TABLE `test` ALTER `name` DROP DEFAULT;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test;


我们可以发现name的默认值已经不存在


数据表重命名

我先复制一张表出来,然后再演示删除一张表。


演示:

SQL

mysql> CREATE TABLE `test1` SELECT * FROM `test`;

Query OK, 1 row affected (0.05 sec)

Records: 1  Duplicates: 0  Warnings: 0

mysql> show tables;


再对表进行重命名


-- ALTER TABLE `表名字` RENAME `表新名字`


演示:

SQL

mysql>ALTER TABLE `test1` RENAME `test2`;

Query OK, 0 rows affected (0.02 sec)


mysql>show tables;


可以发现表已经由test1改名为test2

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,277评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,777评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,946评论 0 245
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,271评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,636评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,767评论 1 221
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,989评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,733评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,457评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,674评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,155评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,518评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,160评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,114评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,898评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,822评论 2 280
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,705评论 2 273

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,651评论 5 116
  • 一、数据库简介 1.数据库系统 1.1数据库 DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺...
    郑元吉阅读 560评论 0 6
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,005评论 0 19
  • 1、数据库(database)管理 1.1 create 创建数据库 1.2 show 查看所有数据库 1.3 a...
    七秒浮屠阅读 702评论 0 3
  • 马克思老婆子布置作业, 现写现交那种, 我不在班。
    达浪打啦阅读 87评论 0 0