- 复制相同表结构
-- 1.使用AS复制相同的表结构 CREATE TABLE table_name AS SELECT * FROM other_table WHERE 1=2; CREATE TABLE table_name AS SELECT * FROM other_table LIMIT 0; -- 2.使用LIKE复制相同的表结构 CREATE TABLE table_name LIKE other_table;
- 复制表的数据
-- 复制全部数据 INSERT INTO table_name SELECT * FROM other_name; -- 复制指定的列 INSERT INTO test_index_tbl1 ( test_index_tbl1.`id`, test_index_tbl1.`name`, test_index_tbl1.`author`, test_index_tbl1.`info` ) SELECT id, NAME, author, info FROM test_index_tbl;
- AS与LIKE的区别:
- AS:用来创建相同表结构并复制源表数据(可根据后面的条件来控制要不要复制源表数据)
- LIKE:用来创建完整表结构和全部索引(可以使用INSERT INTO和SELECT语句复制源表的所有数据)
- 使用
SHOW CREATE TABLE
查看表的创建语句
SHOW CREATE TABLE book ;
CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `author` varchar(20) NOT NULL, `info` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `author` (`author`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
- 使用AS复制book表
CREATE TABLE table_name as SELECT * FROM book;
SHOW CREATE TABLE table_name ;
CREATE TABLE `table_name` ( `id` int(11) NOT NULL DEFAULT '0', `name` varchar(50) NOT NULL, `author` varchar(20) NOT NULL, `info` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
AS复制了表的源数据和结构,但没有复制索引和主键的设置。
- 使用LIKE复制表
CREATE TABLE table_name LIKE book;
SHOW CREATE TABLE table_name ;
CREATE TABLE `table_name` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `author` varchar(20) NOT NULL, `info` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `author` (`author`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
完全的复制了源表的结构包括索引信息
INSERT INTO table_name SELECT * FROM book;
- AS:创建出来的table_name 缺少源表的索引信息,只有表结构相同,没有索引。
- LIKE:创建出来的新表包含源表的完整结构和索引信息。
- Oracle支持AS,即只有表结构没有索引,Oracle不支持LIKE