create table as 和create table like的区别
Posted bjx2020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了create table as 和create table like的区别相关的知识,希望对你有一定的参考价值。
create table as 和create table like的区别
对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢?
/* -- 没有开启gtid的情况下,不拷贝数据,只创建一模一样的表结构,包括索引约束等,结合insert语句可以实现复制一个表的结构和数据的目的 create table tbl_test_bak like tbl_test; insert into tbl_test_bak select * from tbl_test; -- 以下方式也可以创建表结构,包含数据,但是没有索引约束等,所以不推荐再使用了。而且,在开启gtid情况下,会报语法错误 create table tbl_test_bak as select * from tbl_test; */ -- drop table if exists tbl_test ; create table tbl_test ( id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, PRIMARY KEY (id), KEY idx_name (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; insert into tbl_test(name) values(‘aaa‘); insert into tbl_test(name) values(‘bbb‘); insert into tbl_test(name) values(‘AAA‘); insert into tbl_test(name) values(‘BBB‘); mysql> select * from tbl_test; +----+------+ | id | name | +----+------+ | 1 | aaa | | 3 | AAA | | 2 | bbb | | 4 | BBB | +----+------+ 4 rows in set (0.00 sec) mysql> create table tbl_test_bak like tbl_test; Query OK, 0 rows affected (0.04 sec) mysql> select * from tbl_test_bakG; Empty set (0.00 sec) ERROR: No query specified mysql> create table tbl_test_bak as select * from tbl_test; Query OK, 4 rows affected (0.03 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> show create table tbl_test_bakG; *************************** 1. row *************************** Table: tbl_test_bak Create Table: CREATE TABLE `tbl_test_bak` ( `id` bigint(20) NOT NULL DEFAULT ‘0‘, `name` varchar(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ERROR: No query specified mysql> select * from tbl_test_bak; +----+------+ | id | name | +----+------+ | 1 | aaa | | 3 | AAA | | 2 | bbb | | 4 | BBB | +----+------+ 4 rows in set (0.00 sec)
以上是关于create table as 和create table like的区别的主要内容,如果未能解决你的问题,请参考以下文章
何时将 CREATE TABLE AS SELECT 与 CREATE TABLE LIKE?
MySQL create table as与create table like对比
MySQL create table as与create table like对比
db2中可以实现create table A as select * from B吗
HiveQL/SQL:CREATE TABLE AS SELECT (CTAS) 和 CREATE EXTERNAL TABLE + INSERT INTO 有啥区别?