之前我自己建立好了一个数据库xscj;表xs是已经定义好的

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

具体的定义数据类型如下:

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第2张

为了复制表xs,我们新建一个表名为xstext,使用下列语句进行复制xs,或者说是备份都可以;

create table xstext as select * from x
create table xstext select * from xs;

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第3张

我们可以看到,复制的表的字段与xs表的字段相同,不同之处在于复制的表没有主键或主码,同时复制的表里存储了与原表相同的信息

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第4张

完成了表的复制,下面设置xstext表的主键,使用下列语句

alter table xstext add constraint KY_xstext primary key (学号);

xstext是我自己的表名,学号是表里的一个字段,换成自己的记好了

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第5张

这样之后,就可以看到复制的表里主键已经设置成功了

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第6张

因为表有主键,使用insert语句,会出错

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第7张

换用replace语句,可以成功插入

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第8张

【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace Mysql 第9张

数据来源:郑阿奇的《mysql数据库教程》

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄