mysql 从一个表insert到另一张表_产品操作MySQL第3篇 – 修改一张表

c834f68d2ca636d52eb4cdf2069e8444.png

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

At 2019/4/22 By David.Yang

修改一张数据表

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

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

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

新增字段

-- 新增字段

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

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

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

示例:

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

SQL

mysql> desc test;

6de62ba506dd74011f738bdf4bc7139a.png

补充两个字段

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;

088d4b7c43b462f0f96595f54192e192.png

看到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;

a3b539fe92cf4f4b5471f6f1b08e1ec2.png

修改字段属性

-- 修改字段属性

-- 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;

62c02d478d956440177b51304f0fe005.png

看到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;

822f363fafb484b696dfeccab4d9afe8.png

可以看到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;

4ae960f42b85c699155318fb1b76d518.png

可以看到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;

b507ec61306e4c8cf2e4a975f4d0b491.png

可以看到成功讲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;

6d45c88327b3cbeaebb9a003fe63e965.png

将其删除

SQL

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

Query OK, 0 rows affected (0.10 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc test;

adf16a0a7055f01082edec9cda072968.png

对字段值管理默认值

添加默认值

  • 新建字段时指定默认值

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

-- 新增字段

-- 前面讲 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;

80a136772d3204f10e61e762c3895dd7.png

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

注:

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

d3a19b881ddeca77d962777be27cf1f3.png
  • 修改已存在字段的默认值

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

-- 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;

be90c1b3f1195fb0a2c5c4abd46f12a7.png

注:

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

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

新数据将会赋予默认值。

aefa193d44ce7a5cac8f505a5c8e6d7f.png

删除默认值

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

-- 删除默认值

-- 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;

0647c67b167f5748ed7ba4a5708acc82.png

我们可以发现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;

e272b7ff292b5f07c4001872fb06fa2d.png

再对表进行重命名

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

演示:

SQL

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

Query OK, 0 rows affected (0.02 sec)

mysql> show tables;

b683321d844d998c6e29ff2f4fce0088.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值