MySQL中的CREATE TABLE LIKE和CREATE TABLE SELECT

news2025/4/14 15:26:35

MySQL中的CREATE TABLE LIKE和CREATE TABLE SELECT

  • CREATE TABLE LIKE
  • CREATE TABLE SELECT

CREATE TABLE LIKE

  • CREATE TABLE ... LIKE可以用来复制表结构,源表上的索引和约束也会复制。
  • CREATE TABLE ... LIKE不能复制表数据
  • CREATE TABLE ... LIKE只能复制基表,不能复制视图
  • CREATE TABLE ... LIKE可以复制CHECK约束,但是复制后的约束名称是自动生成的。
  • CREATE TABLE ... LIKE不能复制外键约束,也不会保留DATA DIRECTORYINDEX DIRECTORY表创建参数。
  • CREATE TABLE ... LIKE不会复制表的临时属性。要复制临时表请使用CREATE TEMPORARY TABLE LIKE
  • 当源表被LOCK TABLES锁定时,CREATE TABLE LIKE语句无法成功执行。

用法示例:

CREATE TABLE t1 LIKE t2;
CREATE TEMPORARY TABLE t1 LIKE t2;

CREATE TABLE SELECT

  • CREATE TABLE ... SELECT可以用来复制表结构,但不会复制索引(主键也不会)。
  • CREATE TABLE ... SELECT可以复制表数据(可以通过WHERE过滤)。
  • CREATE TABLE ... SELECT可以复制基表,也可以复制视图。
  • CREATE TABLE ... SELECT不能复制外键约束。
  • CREATE TABLE ... SELECT支持在建表时定义字段,从源表复制过来的不同名字段会作为新增字段,同名的字段则会被覆盖。
  • CREATE TABLE ... SELECT支持在建表时为字段定义约束和索引。

用法示例:

CREATE TABLE t1 SELECT * FROM t2 where 1=2;             --仅复制表结构
CREATE TABLE t1 SELECT * FROM t2;                       --复制全量数据
CREATE TABLE t1 SELECT name,age FROM t2 where age>30;   --复制部分数据

--复制另外两张表关联查询的结果集
CREATE TABLE t1
  SELECT artist.name, COUNT(work.artist_id) AS number_of_works
  FROM artist LEFT JOIN work ON artist.id = work.artist_id
  GROUP BY artist.id;

--复制的列作为新增字段
CREATE TABLE t1 (a int) SELECT name,age FROM t2;  

--复制的不同列作为新增字段,同名的列被覆盖      
CREATE TABLE t1 (a int, name varchar(30)) SELECT name,age FROM t2; 

--为复制过来的字段定义索引和约束
CREATE TABLE t1 (name varchar(30) not null) SELECT name,age FROM t2; 
CREATE TABLE t1 (unique(employee_id)) SELECT employee_id,name FROM t3; 

实验:

SQL> create table t2 (name varchar(30), age int not null);
SQL> create table t3 (employ_id int, name varchar(30), age int);
SQL> insert into t2 values ('Joe',35),('Rachel',31),('Monica',33);
SQL> insert into t3 values (11,'MJoe',35),(12,'MRachel',31),(13,'MMonica',33);
SQL> commit;

SQL> select * from t2;
+--------+-----+
| name   | age |
+--------+-----+
| Joe    |  35 |
| Rachel |  31 |
| Monica |  33 |
+--------+-----+
3 rows in set (0.00 sec)

SQL> select * from t3;
+-----------+---------+------+
| employ_id | name    | age  |
+-----------+---------+------+
|        11 | MJoe    |   35 |
|        12 | MRachel |   31 |
|        13 | MMonica |   33 |
+-----------+---------+------+
3 rows in set (0.00 sec)


--仅复制表结构
SQL> CREATE TABLE t1 SELECT * FROM t2 where 1=2; 
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

SQL> select * from t1;
Empty set (0.00 sec)

SQL> desc t1;
+-----------+-----------------+------+-----+---------+--------------------------+
| Field     | Type            | Null | Key | Default | Extra                    |
+-----------+-----------------+------+-----+---------+--------------------------+
| my_row_id | bigint unsigned | NO   | PRI | NULL    | auto_increment INVISIBLE |
| name      | varchar(30)     | YES  |     | NULL    |                          |
| age       | int             | NO   |     | NULL    |                          |
+-----------+-----------------+------+-----+---------+--------------------------+
3 rows in set (0.00 sec)
           
--复制的列作为新增字段
SQL> CREATE TABLE t1 (a int) SELECT name,age FROM t2; 
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

SQL> select * from t1;
+------+--------+-----+
| a    | name   | age |
+------+--------+-----+
| NULL | Joe    |  35 |
| NULL | Rachel |  31 |
| NULL | Monica |  33 |
+------+--------+-----+
3 rows in set (0.00 sec)
 
--复制的不同列作为新增字段,同名的列被覆盖      
SQL> CREATE TABLE t1 (a int, name varchar(30)) SELECT name,age FROM t2; 
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

SQL> select * from t1;
+------+--------+-----+
| a    | name   | age |
+------+--------+-----+
| NULL | Joe    |  35 |
| NULL | Rachel |  31 |
| NULL | Monica |  33 |
+------+--------+-----+
3 rows in set (0.00 sec)


--为复制过来的字段定义约束
SQL> CREATE TABLE t1 (name varchar(40) not null default 'Tony') SELECT name,age FROM t2; 
Query OK, 3 rows affected (0.13 sec)
Records: 3  Duplicates: 0  Warnings: 0

SQL> desc t1;
+-----------+-----------------+------+-----+---------+--------------------------+
| Field     | Type            | Null | Key | Default | Extra                    |
+-----------+-----------------+------+-----+---------+--------------------------+
| my_row_id | bigint unsigned | NO   | PRI | NULL    | auto_increment INVISIBLE |
| name      | varchar(40)     | NO   |     | Tony    |                          |
| age       | int             | NO   |     | NULL    |                          |
+-----------+-----------------+------+-----+---------+--------------------------+
3 rows in set (0.00 sec)

--为复制过来的字段定义索引
SQL> CREATE TABLE t1 (unique(employ_id)) SELECT employ_id,name FROM t3;
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

SQL> desc t1;
+-----------+-----------------+------+-----+---------+--------------------------+
| Field     | Type            | Null | Key | Default | Extra                    |
+-----------+-----------------+------+-----+---------+--------------------------+
| my_row_id | bigint unsigned | NO   | PRI | NULL    | auto_increment INVISIBLE |
| employ_id | int             | YES  | UNI | NULL    |                          |
| name      | varchar(30)     | YES  |     | NULL    |                          |
+-----------+-----------------+------+-----+---------+--------------------------+
3 rows in set (0.01 sec)

References
【1】https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html
【2】https://dev.mysql.com/doc/refman/8.0/en/create-table-like.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2325544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

权重衰减-笔记

《动手学深度学习》-4.5-笔记 权重衰减就像给模型“勒紧裤腰带”,不让它太贪心、不让它学太多。 你在学英语单词,别背太多冷门单词,只背常见的就行,这样考试时更容易拿分。” —— 这其实就是在“限制你学的内容复杂度”。 在…

Hyperliquid 遇袭「拔网线」、Polymarket 遭治理攻击「不作为」,从双平台危机看去中心化治理的进化阵痛

作者:Techub 热点速递 撰文:Glendon,Techub News 继 3 月 12 日「Hyperliquid 50 倍杠杆巨鲸」引发的 Hyperliquid 清算事件之后,3 月 26 日 晚间,Hyperliquid 再次遭遇了一场针对其流动性和治理模式的「闪电狙击」。…

软考笔记6——结构化开发方法

第六章节——结构化开发方法 结构化开发方法 第六章节——结构化开发方法一、系统分析与设计概述1. 系统分析概述2. 系统设计的基本原理3. 系统总体结构设计 二、结构化分析方法1. 结构化分析方法概述2. 数据流图(DFD)3. 数据字典 三、结构化设计方法(了解&#xff…

一种C# Winform的UI处理

效果 圆角 阴影 突出按钮 说明 这是一种另类的处理,不是多层窗口 也不是WPF 。这种方式的特点是比较简单,例如圆角、阴影、按钮等特别容易修改过。其实就是html css DirectXForm。 在VS中如下 圆角和阴影 然后编辑这个窗体的Html模板&#xff0c…

为什么视频文件需要压缩?怎样压缩视频体积即小又清晰?

在日常生活中,无论是为了节省存储空间、便于分享还是提升上传速度,我们常常会遇到需要压缩视频的情况。本文将介绍为什么视频需要压缩,压缩视频的好处与坏处,并教你如何使用简鹿视频格式转换器轻松完成MP4视频文件的压缩。 为什么…

Nginx — Nginx处理Web请求机制解析

一、Nginx请求默认页面资源 1、配置文件详解 修改端口号为8080并重启服务: 二、Nginx进程模型 1、nginx常用命令解析 master进程:主进程(只有一个) worker进程:工作进程(可以有多个,默认只有一…

5.0 WPF的基础介绍1-Grid,Stack,button

WPF: Window Presentation Foundation. WPF与WinForms的对比如下: 特性WinFormsWPF技术基础基于传统的GDI(图形设备接口)基于DirectX,支持硬件加速的矢量渲染UI设计方式拖拽控件事件驱动代码(简单但局限)…

Docker 端口映射原理

在 Docker 中,默认情况下容器无法直接与外部网络通信。 为了使外部网络能够访问容器内的服务,Docker 提供了端口映射功能,通过将宿主机的端口映射到容器内的端口,外部可以通过宿主机的IP和端口访问容器内的服务 以下通过动手演示…

SDL —— 将sdl渲染画面嵌入Qt窗口显示(附:源码)

🔔 SDL/SDL2 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) 效果 使用QWidget加载了SDL的窗口,渲染器使用硬件加速跑GPU的。支持Qt窗口缩放或显示隐藏均不影响SDL的图像刷新。   操作步骤 1、在创建C++空工程时加入SDL,引入头文件时需…

算法每日一练 (23)

💢欢迎来到张翊尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (23)最大正方形题目描述解题思路解题代码…

UE5学习笔记 FPS游戏制作28 显式玩家子弹数

文章目录 添加变量修改ShootOnce方法,设计时减少子弹,没有子弹不能开枪在UI上显示 添加变量 在Gun类中添加BulletNum和ClipSize两个参数 BulletNum是当前还有多少子弹,ClipSize是一个弹匣多少子弹 Rifle的ClipSzie设置为30,Laun…

《构建有效的AI代理》学习笔记

原文链接:https://www.anthropic.com/engineering/building-effective-agents 《构建有效的AI代理》学习笔记 一、概述 核心结论 • 成功的AI代理系统往往基于简单、可组合的模式,而非复杂框架。 • 需在性能、成本与延迟之间权衡,仅在必要时增加复杂度…

数据处理专题(四)

目标 使用 Matplotlib 进行基本的数据可视化。‍ 学习内容 绘制折线图 绘制散点图 绘制柱状图‍ 代码示例 1. 导入必要的库 import matplotlib.pyplot as pltimport numpy as npimport pandas as pd 2. 创建示例数据集 # 创建示例数据集data { 月份: [1月, 2月, 3…

【目标检测】【深度学习】【Pytorch版本】YOLOV1模型算法详解

【目标检测】【深度学习】【Pytorch版本】YOLOV1模型算法详解 文章目录 【目标检测】【深度学习】【Pytorch版本】YOLOV1模型算法详解前言YOLOV1的模型结构YOLOV1模型的基本执行流程YOLOV1模型的网络参数YOLOV1模型的训练方式 YOLOV1的核心思想前向传播阶段网格单元(grid cell)…

云钥科技多通道工业相机解决方案设计

项目应用场景分析与需求挑战 1. 应用场景 ‌目标领域‌:工业自动化检测(如精密零件尺寸测量、表面缺陷检测)、3D立体视觉(如物体建模、位姿识别)、动态运动追踪(如高速生产线监控)等。 ‌核心…

从零到一:ESP32与豆包大模型的RTC连续对话实现指南

一、对话效果演示 ESP32与豆包大模型的RTC连续对话 二、ESP-ADF 介绍 乐鑫 ESP-ADF(Espressif Audio Development Framework)是乐鑫科技(Espressif Systems)专为 ESP32 系列芯片开发的一款音频开发框架。它旨在简化基于 ESP32 芯…

【深度学习与实战】2.3、线性回归模型与梯度下降法先导案例--最小二乘法(向量形式求解)

为了求解损失函数 对 的导数,并利用最小二乘法向量形式求解 的值‌ 这是‌线性回归‌的平方误差损失函数,目标是最小化预测值 与真实值 之间的差距。 ‌损失函数‌: 考虑多个样本的情况,损失函数为所有样本的平方误差之和&a…

【Django】教程-2-前端-目录结构介绍

【Django】教程-1-安装创建项目目录结构介绍 3. 前端文件配置 3.1 目录介绍 在app下创建static文件夹, 是根据setting中的配置来的 STATIC_URL ‘static/’ templates目录,编写HTML模板(含有模板语法,继承,{% static ‘xx’ …

详解list容器

1.list的介绍 list的底层结构是双向带头循环链表,允许随机的插入和删除,但其内存空间不是连续的。随机访问空间能力差,需要从头到尾遍历节点,不像vector一样高效支持 2.list的使用 构造函数 1.默认构造函数:创建一个…

leetcode_977. 有序数组的平方_java

977. 有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/ 1.题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1…