写点什么

单表操作

用户头像
在即
关注
发布于: 2021 年 03 月 25 日
单表操作

复制表结构和数据

如何快速的创建与已有表结构相同的数据表?

根据前面章节的学习,有两种方式:

依据数据表,手动 CREATE TABLE 再次实现一个表的创建。

SHOW CREATE TABLE,复制此查询结果、修改表名并执行创建语句。

MySQL 提供了一种快捷的方式:复制表结构

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名

{ LIKE 旧表名| (LIKE 旧表名 ) }

从“旧表名”中复制一份相同的表结构,但不会复制表中保存的数据。

“{}”表示语法在使用时可以任选其中一种,“|”表示或的意思。

复制表结构和数据

mysql> USE shop;

Database changed

mysql> CREATE TABLE mydb.mygoods LIKE shgoods;

Query OK, 0 rows affected (0.07 sec)

mysql> SHOW CREATE TABLE mydb.my_goods\G

************************* 1. row *************************

       Table: my_goods

Create Table: CREATE TABLE my_goods (

 id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品 id',

category_id int(10) unsigned NOT NULL DEFAULT '0' COMMENT '分类 id',

……此处省略部分字段

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

如何将表中的已有数据快速的添加到指定表中?

根据前面章节的学习,只有一种方式:

通过 INSERT…INTO 手动编写添加的数据内容。

MySQL 提供了一种快捷的方式:复制表数据

INSERT [INTO] 数据表名 1 [(字段列表)] SELECT [(字段列表)] FROM 数据表名 2;

数据表名 1 和数据表名 2 通常使用的是同一个表(如 my_goods 表)

可在短期内快速增加表的数据量,测试表的压力以及效率等。

从 shgoods 表中复制数据到 mygoods 表中

mysql> INSERT INTO mydb.mygoods SELECT * FROM shgoods;

Query OK, 10 rows affected (0.01 sec)

Records: 10 Duplicates: 0 Warnings: 0


mysql> INSERT INTO mydb.mygoods SELECT * FROM shgoods;

ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

以上主键冲突的问题,数据复制时可以指定除 id 主键外的任意字段完成。

mysql> INSERT INTO mydb.mygoods (categoryid, name, keyword, price,

    -> content) SELECT category_id, name, keyword, price, content

    -> FROM sh_goods;

Query OK, 10 rows affected (0.00 sec)

Records: 10 Duplicates: 0 Warnings: 0


发布于: 2021 年 03 月 25 日阅读数: 7
用户头像

在即

关注

还未添加个人签名 2021.02.27 加入

还未添加个人简介

评论

发布
暂无评论
单表操作