MySQL create table as與create table like對比
阿新 • • 發佈:2021-10-14
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
會發現資料結構可完整的複製過來,但沒有資料。
就是這麼簡單,你學廢了嗎?感覺有用的話,給筆者點個贊吧 !