当前位置:网站首页>PostgreSQL中的表复制
PostgreSQL中的表复制
2022-07-07 09:03:00 【秋漓】
PostgreSQL提供了两种方式用来进行表复制:
1、create table as
2、create table like
数据准备
创建含有序列、主键、注释、CHECK约束的tmp表用于后续测试:
create table tmp(
id SERIAL,
name VARCHAR(100) primary key,
num int CHECK(10<num and num<100)
);
comment on column tmp.id is '标识码';
comment on column tmp.name is '名称';
comment on column tmp.num is '数量';
insert into tmp(name,num) VALUES('苹果',61);
insert into tmp(name,num) VALUES('香蕉',51);
表的DDL展示:
下面就来讲讲两种表复制方式的结果:
create table as
挺常规的方法,在复制表结构的时候还可以带上数据。不过这种复制会丢失原有表的注释、约束等信息。
create table tmp_x as select * from tmp where name='苹果';
DDL:
create table like
语法:create table tar_table LIKE source_table [ like_option ... ]
like_option有下列几种选择:
1、INCLUDING COMMENTS:注释
2、INCLUDING CONSTRAINTS :CHECK约束
3、INCLUDING DEFAULTS:被拷贝的列定义的默认表达式才会被拷贝。默认的行为是排除默认表达式,导致新表中被拷贝过来的列的默认值为空值。注意,如果拷贝的默认值调用了数据库修改函数(如nextval),则可能在原始表和新表之间创建功能联系。
4、INCLUDING IDENTITY:拷贝复制字段定义的标识声明。 为新表的每个标识列创建一个新的序列,与旧表相关的序列区分开。
5、INCLUDING INDEXES :主键约束 和索引约束
6、INCLUDING STORAGE:复制而来的列定义的STORAGE设置才会被复制。默认行为会排除STORAGE设置,导致新表中复制而来的列具有与类型相关的默认设置
7、INCLUDING STATISTICS:扩展统计会被复制到新表
8、INCLUDING ALL:是 INCLUDING COMMENTS INCLUDING CONSTRAINTS INCLUDING DEFAULTS INCLUDING IDENTITY INCLUDING INDEXES INCLUDING STATISTICS INCLUDING STORAGE.的简写形式。
一般我们复制时只用 INCLUDING COMMENTS INCLUDING CONSTRAINTS INCLUDING INDEXES就够了。
示例1:
create table tmp_a (like tmp);
示例2:
只使用INCLUDING DEFAULTS拷贝列定义
create table tmp_b (like tmp INCLUDING defaults);
示例3:
使用INCLUDING COMMENTS INCLUDING CONSTRAINTS INCLUDING INDEXES拷贝注释、约束
create table tmp_c (like tmp INCLUDING comments including constraints including indexes);
各种拷贝结果的DDL:
![]() 示例1 | ![]() 示例2 | ![]() 示例3 |
春江潮水连海平,海上明月共潮生。 --张若虚《春江花月夜》
边栏推荐
- MPX plug-in
- Is the soft test intermediate useful??
- [STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
- Deconstruction and assignment of variables
- Network foundation (1)
- The difference between monotonicity constraint and anti monotonicity constraint
- Laya common script commands
- When initializing 'float', what is the difference between converting to 'float' and adding 'f' as a suffix?
- TypeScript 接口继承
- Compile QT project script with qmake
猜你喜欢
![[pyqt] the cellwidget in tablewidget uses signal and slot mechanism](/img/0e/02265f7195ca0add4155694530822a.png)
[pyqt] the cellwidget in tablewidget uses signal and slot mechanism

MPX plug-in

【pyqt】tableWidget里的cellWidget使用信号与槽机制

Qtcreator sets multiple qmake

2021-04-23

Seata 1.3.0 four modes to solve distributed transactions (at, TCC, Saga, XA)

Interprocess communication (IPC)

Shardingsphere sub database and table examples (logical table, real table, binding table, broadcast table, single table)

2021-04-08

ADB utility commands (network package, log, tuning related)
随机推荐
[pytorch 07] hands on deep learning chapter_ Preliminaries/ndarray exercises hands-on version
Arduino receives and sends strings
BUUCTF---Reverse---reverse1
[untitled]
Ffmpeg record a video command from RTSP
[STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
Network engineer test questions and answers in May of the first half of 2022
ADB utility commands (network package, log, tuning related)
2022.7.5DAY597
The fifth training assignment
VR development optimization
What is an intermediate network engineer? What is the main test and what is the use?
2021 summary and 2022 outlook
The concept, implementation and analysis of binary search tree (BST)
從色情直播到直播電商
【C#】WinForm运行缩放(变糊)的解决方法
The sixth training assignment
Introduction to shell programming
Compile QT project script with qmake
Rolling puddle Uni_ App (VIII)


