1. 程式人生 > 其它 >MySQL 的create table as 與like 的使用

MySQL 的create table as 與like 的使用

技術標籤:MySQLmysql

1.MySQL複製相同表結構的方法:

-- 1.使用AS複製相同的表結構
 CREATE TABLE table_name AS SELECT * FROM other_table WHERE 1=2;(或者LIMIT 0) 
-- 2.使用LIKE複製相同的表結構 
CREATE TABLE table_name LIKE other_table;

2.複製表的資料

複製全部資料 注意:複製全部資料 列的型別要相同 
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;

3.AS與LIKE的用途

AS:用來建立相同表結構並複製源表資料(可根據後面的條件來控制要不要複製源表資料)

LIKE:用來建立完整表結構和全部索引。

示例:book表作為測試使用

①.使用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;

③.檢視table_name的建立語句

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複製源表,結論:

對比兩次查詢的建立語句發現,AS複製了表的源資料和結構,但沒有複製索引和主鍵的設定。

再測試LIKE複製表

①.使用LIKE複製表

CREATE TABLE table_name LIKE book;

②.查詢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

③.查詢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

對比兩次結果發現完完全全的複製了源表的結構包括索引資訊。

結論:

AS:用來建立相同表結構並複製源表資料(可根據後面的條件來控制要不要複製源表資料)

LIKE:用來建立完整表結構和全部索引。(可以使用INSERT INTO和SELECT語句複製源表的所有資料 )

INSERT INTO table_name SELECT * FROM book;

4.AS與LIKE的區別:

AS:創建出來的table_name 缺少源表的索引資訊,只有表結構相同,沒有索引。

LIKE:創建出來的新表包含源表的完整結構和索引資訊。

補充:Oracle支援AS,即只有表結構沒有索引,Oracle不支援LIKE