小不的笔记

时间之外的往事

mysql create table

建表

1
2
3
4
5
6
CREATE TABLE table [IF NOT EXISTS] (
field1 type1,
field2 type2,
INDEX IDX_FIELD (field),
PRIMARY KEY (field1)
)

CREATE TABLE … LIKE …

基于一张表来创建另一个表 一模一样复制表结构, 包括主键、索引、默认值等信息。

1
CREATE TABLE t2 LIKE t1;

复制表和数据,还希望完整保留主键、索引、默认值等信息。

1
2
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 SELECT * FROM t1;

CREATE TABLE … SELECT

可以认为是 CREATE TABLE 语句 追加一个 SELECT 语句用来填充数据。 CREATE TABLE 中的表定义的列 和 SELECT 列如果不存在,SELECT 中的列会追加到表的最后。 SELECT 列类型与CREATE TABLE中定义不一样,以CREATE TABLE定义为准。 创建表且复制数据,但是不需要主键、索引、默认值等信息。

1
CREATE TABLE t2 [AS] SELECT * FROM t1;

只创建表, 其他什么都不需要。

1
CREATE TABLE t2 [AS] SELECT * FROM t1 LIMIT 0;

复制表和数据,只想保留主键

1
CREATE TABLE t2 (PRIMARY KEY (`ID`)) [AS] SELECT * FROM t1;

删表

1
2
3
4
DROP TABLE t1;
DROP TABLE t1, t2, ...;
DROP TEMPORARY TABLE t1;
DROP TEMPORARY TABLE t1, t2, ...;

删除存在的表

1
2
DROP TABLE IF EXISTS t1;
DROP TEMPORARY TABLE IF EXISTS t1;

参考链接

CREATE TABLE CREATE TABLE … LIKE Statement CREATE TABLE … SELECT Statement