我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PostgreSQL复制表的5种方式详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PostgreSQL复制表的5种方式详解

PostgreSQL 提供了多种不同的复制表的方法,它们的差异在于是否需要复制表结构或者数据。

CREATE TABLE AS SELECT 语句

CREATE TABLE AS SELECT 语句可以用于复制表结构和数据,但是不会复制索引。

我们可以使用以下语句基于 employee 复制一个新表 emp2,包括表中的数据:

CREATE TABLE emp2 
AS
SELECT * FROM employee;

如果只想要复制表结构,不复制数据,可以增加 WITH NO DATA 子句:

CREATE TABLE emp2 
AS
SELECT * FROM employee
WITH NO DATA;

或者也可以使用一个不返回任何结果的查询语句,例如:

CREATE TABLE emp2 
AS
SELECT * FROM employee
WHERE FALSE;

这种复制方法不会创建任何索引或者约束,例如主键、外键以及 NOT NULL 约束等。

CREATE TABLE LIKE 语句

CREATE TABLE LIKE 语句也可以用于复制表结构:

CREATE TABLE emp3 
(LIKE employee);

语法中的括号是必不可少的,而且这种方法不会复制数据,但是会复制字段的 NOT NULL 约束。

CREATE TABLE AS TABLE 语句

CREATE TABLE AS TABLE 语句可以复制表结构和数据,例如:

CREATE TABLE emp4 
AS 
TABLE employee
WITH NO DATA;

这种语法不会复制索引、外键以及非空约束等。

如果不需要复制数据,可以使用 WITH NO DATA 子句:

CREATE TABLE emp4 
AS 
TABLE employee
WITH NO DATA;

SELECT INTO 语句

SELECT INTO 语句可以复制表结构和数据,但是不包含索引等。例如:

SELECT * INTO emp5 FROM employee;

PostgreSQL 推荐使用 CREATE TABLE AS 替代 SELECT INTO 语句实现类似效果,因为前者适用性更广,功能更全。

CREATE TABLE INHERITS 语句

PostgreSQL 支持 CREATE TABLE 语句的 INHERIT 子句,用于继承表结构。这种复制表的方法和其他方法有所区别,任何针对父表的修改通常也会自动修改子表。

另外,这种方法还可以为子表定义额外的字段。例如:

CREATE TABLE emp5 (
    notes text NOT NULL
) 
INHERITS ( employee );

其中,notes 是我们额外定义的字段,其他字段继承 employee。

使用 psql \d 命令查看 emp5 的结构如下:

\d emp5

                        Table "public.emp5"
  Column   |          Type          | Collation | Nullable | Default
-----------+------------------------+-----------+----------+---------
 emp_id    | integer                |           | not null |
 emp_name  | character varying(50)  |           | not null |
 sex       | character varying(10)  |           | not null |
 dept_id   | integer                |           | not null |
 manager   | integer                |           |          |
 hire_date | date                   |           | not null |
 job_id    | integer                |           | not null |
 salary    | numeric(8,2)           |           | not null |
 bonus     | numeric(8,2)           |           |          |
 email     | character varying(100) |           | not null |
 notes     | text                   |           | not null |
Check constraints:
    "ck_emp_salary" CHECK (salary > 0::numeric)
    "ck_emp_sex" CHECK (sex::text = ANY (ARRAY['男'::character varying, '女'::character varying]::text[]))
Inherits: employee

到此这篇关于PostgreSQL 复制表的 5 种方式的文章就介绍到这了,更多相关PostgreSQL 复制表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PostgreSQL复制表的5种方式详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PostgreSQL复制表的5种方式详解

PostgreSQL提供了多种不同的复制表的方法,它们的差异在于是否需要复制表结构或者数据,这篇文章主要介绍了PostgreSQL复制表的5种方式,需要的朋友可以参考下
2023-01-18

PostgreSQL 复制表的 5 种方式详解

目录CREATE TABLE AS SELECT 语句CREATE TABLE LIKE 语句CREATE TABLE AS TABLE 语句SELECT INTO 语句CREATE TABLE INHERITS 语句PostgreSQL
2023-01-18

MySQL中复制表结构及其数据的5种方式

目录1. 使用 CREATE TABLE ... LIKE 和 INSERT INTO ... SELECT2. 使用 CREATE TABLE ... http://www.lsjlt.comAS SELECT3. 使用 mysqldum
MySQL中复制表结构及其数据的5种方式
2024-09-24

MySQL复制表的三种方式(小结)

复制表结构及其数据 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表,所以新表不会有主键,索引。create table table_name_new as (select * from table_
2022-05-12

mysql复制表的几种常用方式总结

目录mysql复制表的几种方式 1、复制表结构及数据到新表2、只复制表结构到新表3、复制旧表的数据到新表(假设两个表结构一样)4、复制旧表的数据到新表(假设两个表结构不一样)5、可以将表1结构复制到表26、可以将表1内容全部复制到表27、
2023-04-10

GPT-4对比ChatGPT更聪明的5种方式详解

这篇文章主要为大家介绍了GPT-4对比ChatGPT更聪明的5种方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-19

PHP数组写法详解:探究5种不同的方式

PHP数组作为一种重要的数据结构,在实际开发中被广泛使用。掌握不同的数组写法可以帮助开发人员更灵活高效地处理数据。本文将详细探究PHP中5种不同的数组写法,并给出具体的代码示例,以帮助读者更加深入地理解。一、索引数组索引数组是PHP中最
PHP数组写法详解:探究5种不同的方式
2024-03-13

Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解

Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解概述在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值、复制、浅拷贝、深拷贝等绕口的名词到底有什么区别和作用
2023-06-02

java复制文件的4种方式

 1. 使用FileStreams复制  这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。  这是第一个方法的代码:  privat
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录