MySQL 的create table as 與like 的使用
-
-- 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;
AI寫代碼
2.復制表的數(shù)據(jù)
-
復制全部數(shù)據(jù) 注意:復制全部數(shù)據(jù) 列的類型要相同
-
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:用來創(chuàng)建相同表結構并復制源表數(shù)據(jù)(可根據(jù)后面的條件來控制要不要復制源表數(shù)據(jù))

①.使用SHOW CREATE TABLE 查看表的創(chuàng)建語句
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
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復制源表,結論:
對比兩次查詢的創(chuàng)建語句發(fā)現(xiàn),AS復制了表的源數(shù)據(jù)和結構,但沒有復制索引和主鍵的設置。
再測試LIKE復制表
CREATE TABLE table_name LIKE 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(復制表)的創(chuàng)建語句
-
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
對比兩次結果發(fā)現(xiàn)完完全全的復制了源表的結構包括索引信息。
AS:用來創(chuàng)建相同表結構并復制源表數(shù)據(jù)(可根據(jù)后面的條件來控制要不要復制源表數(shù)據(jù))
LIKE:用來創(chuàng)建完整表結構和全部索引。(可以使用INSERT INTO和SELECT語句復制源表的所有數(shù)據(jù) )
INSERT INTO table_name SELECT * FROM book;
4.AS與LIKE的區(qū)別:
AS:創(chuàng)建出來的table_name 缺少源表的索引信息,只有表結構相同,沒有索引。
摘抄自網(wǎng)絡,便于檢索查找。

浙公網(wǎng)安備 33010602011771號