MySQL 的create table as 与like 的使用

1.MySQL复制相同表结构的方法:

 
  1. -- 1.使用AS复制相同的表结构
  2. CREATE TABLE table_name AS SELECT * FROM other_table WHERE 1=2;(或者LIMIT 0)
  3. -- 2.使用LIKE复制相同的表结构
  4. CREATE TABLE table_name LIKE other_table;
AI写代码

2.复制表的数据

 
  1. 复制全部数据 注意:复制全部数据 列的类型要相同
  2. INSERT INTO table_name SELECT * FROM other_name;
  3. 或者复制指定的列
  4. INSERT INTO test_index_tbl1 (
  5. test_index_tbl1.`id`,
  6. test_index_tbl1.`name`,
  7. test_index_tbl1.`author`,
  8. test_index_tbl1.`info`
  9. ) SELECT id, NAME, author, info 
  10. FROM
  11. test_index_tbl;
 

3.AS与LIKE的用途

AS:用来创建相同表结构并复制源表数据(可根据后面的条件来控制要不要复制源表数据)

LIKE:用来创建完整表结构和全部索引。

示例:book表作为测试使用

①.使用SHOW CREATE TABLE 查看表的创建语句

SHOW CREATE TABLE book ;

结果:

 
  1. CREATE TABLE `book` (  
  2. `id` int(11) NOT NULL AUTO_INCREMENT,  
  3. `name` varchar(50) NOT NULL,  
  4. `author` varchar(20) NOT NULL,  
  5. `info` varchar(255) DEFAULT NULL,  
  6. PRIMARY KEY (`id`),  
  7. KEY `author` (`author`)
  8. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
 

②.使用AS复制book表

CREATE TABLE table_name as SELECT * FROM book;

③.查看table_name的创建语句

SHOW CREATE TABLE table_name ;

结果:

 
  1. CREATE TABLE `table_name` (  
  2. `id` int(11) NOT NULL DEFAULT '0',  
  3. `name` varchar(50) NOT NULL,  
  4. `author` varchar(20) NOT NULL,  
  5. `info` varchar(255) DEFAULT NULL
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
 

使用AS复制源表,结论:

对比两次查询的创建语句发现,AS复制了表的源数据和结构,但没有复制索引和主键的设置。

再测试LIKE复制表

①.使用LIKE复制表

CREATE TABLE table_name LIKE book;

②.查询book(源表)的创建语句

结果:

 
  1. CREATE TABLE `book` (  
  2. `id` int(11) NOT NULL AUTO_INCREMENT,  
  3. `name` varchar(50) NOT NULL,  
  4. `author` varchar(20) NOT NULL,  
  5. `info` varchar(255) DEFAULT NULL,  
  6. PRIMARY KEY (`id`),   KEY `author` (`author`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
 

③.查询table_name(复制表)的创建语句

结果:

 
  1. CREATE TABLE `table_name` (  
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3.  `name` varchar(50) NOT NULL
  4.  `author` varchar(20) NOT NULL,  
  5. `info` varchar(255) DEFAULT NULL,  
  6. PRIMARY KEY (`id`),  
  7. KEY `author` (`author`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
 

对比两次结果发现完完全全的复制了源表的结构包括索引信息。

结论:

AS:用来创建相同表结构并复制源表数据(可根据后面的条件来控制要不要复制源表数据)

LIKE:用来创建完整表结构和全部索引。(可以使用INSERT INTO和SELECT语句复制源表的所有数据 )

INSERT INTO table_name SELECT * FROM book;

4.AS与LIKE的区别:

AS:创建出来的table_name 缺少源表的索引信息,只有表结构相同,没有索引。

LIKE:创建出来的新表包含源表的完整结构和索引信息。

补充:Oracle支持AS,即只有表结构没有索引,Oracle不支持LIKE

posted @ 2025-06-27 17:12  CharyGao  阅读(187)  评论(0)    收藏  举报