码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 实战演练 | 使用纯 SQL 将表复制到新表


    很多时候,我们可能需要将数据从一个现有的表复制到一个新的表中,例如,备份数据,或将一个环境中的数据复制到另一个环境中,就像出于测试目的所做的那样。在 SQL 中,通常会使用 CREATE TABLE 和 SELECT 语句,如下所示:

    CREATE TABLE new_table; 
    SELECT SELECT col, col2, col3 
    INTO new_table 
    FROM
        existing_table;
    

    在第一个语句中,数据库使用 CREATE TABLE 语句中指定的名创建一个新表。新表的结构由 SELECT 语句的结果集定义。然后,数据库将 SELECT 语句的结果填充到新表中。

    尽管上述的过程可以完美地复制表,但是有一种更简单的方法,我们可以使用 CREATE TABLE 语句的变体将表复制到新表中!今天我们将在这里学习如何使用它。

    介绍 CREATE TABLE AS SELECT 语句

    CREATE TABLE 语句提供了一种方法从另一个表创建表。这种方法就是在 CREATE TABLE 语句的末尾添加 SELECT 语句。该语句的完整语法是这样:

    CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;
    

    这种方法只需一行代码,与我们在上面使用两个单独的语句所做的操作完全相同。

    复制部分数据

    由于 SELECT 语句支持你通常在 SQL 语句中使用的所有子句,包括 WHERE 和 ORDER BY 子句,因此我们可以通过在语句中提供条件来限制要复制的内容。以下是它的语法:

    CREATE TABLE new_table 
    SELECT col1, col2, col3 
    FROM
        existing_table
    WHERE
        conditions;
    

    一些示例

    以下是几个使用 Navicat Premium 作为数据库客户端的示例:

    在最基本的形式中,CREATE TABLE AS SELECT 语句可以使用 SELECT All (*)按原样复制表。这是一个示例:

    这是一个更复杂的示例,该示例仅从 orders 表中复制三列,并将行限制为具有最近的 requiredDate 的行:

    我们可以看到新表只有三列被选中:

    总结

    毫无疑问,CREATE TABLE AS SELECT 语句提供了一种快速简便的方法来将数据从一个表复制到新表中。话虽如此,它确实有其局限性。首先,并不是所有的关系数据库都支持它。我知道 MySQL 和 SQL Server 支持,但是其他数据库可能支持也可能不支持。

    还值得注意的是,CREATE TABLE AS SELECT 语句只是复制表及其数据。它不会复制与表关联的其他数据库对象,例如索引、主键约束、外键约束、触发器等。为了不仅复制数据,并同时复制与表关联的所有数据库对象,我们应该使用两个单独的语句,如下所示:

    CREATE TABLE orders_copy LIKE orders;
    
    INSERT orders_copy
    SELECT * FROM orders;
    

    如果你对 Navicat Premium 感兴趣,可以免费试用 14 天!

    往期回顾

    Navicat 被投毒了 | 真相来了!

    盗版引发设备瘫痪

    Navicat 16.1 为OceanBase 社区版

    Navicat 成为信通院数据库创新实验室成员

    Navicat 学术伙伴计划 - 免费教育版申请

    Navicat 技术智库 - 实战演练与各类热门问题解答

    免费试用攻略 | Navciat 16 数据库管理工具

  • 相关阅读:
    拉普拉斯特征映射(Laplacian Eigenmaps)
    制作自己的前端组件库并上传到npm上
    【SVM分类】基于matlab哈里斯鹰算法优化支持向量机SVM分类【含Matlab源码 2243期】
    【计算机网络】P2P文件分发介绍
    ES6中的Promise基础讲解
    CI/CD 工具和技术:释放 DevOps 的力量
    5G端到端网络切片进展与挑战分析
    JSONObject的底层原理&&常见方法的使用以及项目中的使用场景
    褪去流量外衣后,质量问题频现,usmile笑容加困在同质化竞争里
    【HEC-RAS】模型不稳定故障排除技巧(一)
  • 原文地址:https://blog.csdn.net/weixin_53935287/article/details/126464545
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号