MySQL 的create table as 與like 的使用
阿新 • • 發佈:2021-01-24
-- 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:用來建立相同表結構並複製源表資料(可根據後面的條件來控制要不要複製源表資料)
①.使用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
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複製源表,結論:
對比兩次查詢的建立語句發現,AS複製了表的源資料和結構,但沒有複製索引和主鍵的設定。
再測試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
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;