Mysql创建表的四种场景

1,723 阅读1分钟

前言

Mysql的create语句有四种用法,分别对应创建表的四种场景。

正文

场景一:完全新建

完全新建一张表。

CREATE TABLE `log` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id,无意义',
  `tenant_id` bigint(20) unsigned NOT NULL COMMENT '租户id',
  primary key (id),
  key (tenant_id)
) ENGINE=InnoDB AUTO_INCREMENT=518 DEFAULT CHARSET=utf8mb4 COMMENT='沽清日志表';

场景二:复制

基于一个已有的表,复制这个表的结构、列属性,来创建一个空表。

CREATE TABLE `log_back` LIKE `log`;

场景三:创建表并插入数据

创建出一个新表,并将从另外一张表里查询出来的数据插入到新表当中。

CREATE TABLE `log_copy_data` 
SELECT * FROM `log`;
CREATE table `log_copy_data2`
(i int, name bigint)
SELECT
id as i,
tenant_id as name
FROM `log`;

注意,此处并不会复制log表的结构和列属性,不会复制log表的主键id的属性、索引。

场景四:创建一个临时表

创建一个临时表,并在该临时表上操作数据,服务器会在会话结束时,删除掉这个表。

CREATE TEMPORARY TABLE 'temp_log` (id int, name varchar);
CREATE TEMPORARY TABLE `temp_log_back` LIKE `log`;
CRAETE TEMPORARY TABLE `temp_log_copy2` 
(i int, name bigint)
SELECT id as i, tenant_id as name
FROM `log`;