1. 程式人生 > 其它 >MySQL create table as與create table like對比

MySQL create table as與create table like對比

MySQL中表的克隆有多種,常用的是create table as和create table like,兩者有所差別。

① reate table as 只能部分克隆表結構,但完整保留資料

② create table like會完整地克隆表結構,但不會插入資料,需要單獨使用insert into或load data方式載入資料

1.準備工作

先準備一些測試資料:

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `user_name` varchar(200) DEFAULT '',
  `phone` varchar(
200) DEFAULT '', `b_code` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (1, '李明', '101', '2021001'); INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (2, '
趙慧', '456', '2020001'); INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (3, '李凱', '123', '2021002'); INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (6, '張三1', '123', '2022001'); INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (7, '張三2', '123
', '2021003');

查詢表說明如下:

desc user;

查詢的結果如下:

select * from user

2.create table as

使用create table as複製表:

create table user_bk as select * from user;

1)查詢表資料:

select * from user_bk

2)查詢表說明:

desc user_bk

會發現資料可完整的複製過來,但主鍵、自動遞增和索引丟失了。

上述複製的全部的資料,當然也可以只複製部分資料,在後面新增where條件即可

create table user_bk as select * from user where b_code like '2021%';

3.create table like

使用create table like複製表:

create table user_bk2 like user;

1)查詢表資料:

select * from user_bk2

2)查詢表說明:

desc user_bk

會發現資料結構可完整的複製過來,但沒有資料。

就是這麼簡單,你學廢了嗎?感覺有用的話,給筆者點個贊吧 !