目录
前言
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`;