PostgreSQL 復(fù)制表的 5 種方式詳解
PostgreSQL 提供了多種不同的復(fù)制表的方法,它們的差異在于是否需要復(fù)制表結(jié)構(gòu)或者數(shù)據(jù)。
CREATE TABLE AS SELECT 語句
CREATE TABLE AS SELECT 語句可以用于復(fù)制表結(jié)構(gòu)和數(shù)據(jù),但是不會復(fù)制索引。
我們可以使用以下語句基于 employee 復(fù)制一個新表 emp2,包括表中的數(shù)據(jù):
CREATE TABLE emp2 AS SELECT * FROM employee;
如果只想要復(fù)制表結(jié)構(gòu),不復(fù)制數(shù)據(jù),可以增加 WITH NO DATA 子句:
CREATE TABLE emp2 AS SELECT * FROM employee WITH NO DATA;
或者也可以使用一個不返回任何結(jié)果的查詢語句,例如:
CREATE TABLE emp2 AS SELECT * FROM employee WHERE FALSE;
這種復(fù)制方法不會創(chuàng)建任何索引或者約束,例如主鍵、外鍵以及 NOT NULL 約束等。
CREATE TABLE LIKE 語句
CREATE TABLE LIKE 語句也可以用于復(fù)制表結(jié)構(gòu):
CREATE TABLE emp3 (LIKE employee);
語法中的括號是必不可少的,而且這種方法不會復(fù)制數(shù)據(jù),但是會復(fù)制字段的 NOT NULL 約束。
CREATE TABLE AS TABLE 語句
CREATE TABLE AS TABLE 語句可以復(fù)制表結(jié)構(gòu)和數(shù)據(jù),例如:
CREATE TABLE emp4 AS TABLE employee WITH NO DATA;
這種語法不會復(fù)制索引、外鍵以及非空約束等。
如果不需要復(fù)制數(shù)據(jù),可以使用 WITH NO DATA 子句:
CREATE TABLE emp4 AS TABLE employee WITH NO DATA;
SELECT INTO 語句
SELECT INTO 語句可以復(fù)制表結(jié)構(gòu)和數(shù)據(jù),但是不包含索引等。例如:
SELECT * INTO emp5 FROM employee;
PostgreSQL 推薦使用 CREATE TABLE AS 替代 SELECT INTO 語句實現(xiàn)類似效果,因為前者適用性更廣,功能更全。
CREATE TABLE INHERITS 語句
PostgreSQL 支持 CREATE TABLE 語句的 INHERIT 子句,用于繼承表結(jié)構(gòu)。這種復(fù)制表的方法和其他方法有所區(qū)別,任何針對父表的修改通常也會自動修改子表。
另外,這種方法還可以為子表定義額外的字段。例如:
CREATE TABLE emp5 (
notes text NOT NULL
)
INHERITS ( employee );其中,notes 是我們額外定義的字段,其他字段繼承 employee。
使用 psql \d 命令查看 emp5 的結(jié)構(gòu)如下:
\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到此這篇關(guān)于PostgreSQL 復(fù)制表的 5 種方式的文章就介紹到這了,更多相關(guān)PostgreSQL 復(fù)制表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL?流復(fù)制配置環(huán)境搭建過程
PostgreSQL 流復(fù)制是 9.0 提供的一種新的 WAL 傳遞方法,使用流復(fù)制時,每當 Primary 節(jié)點 WAL 產(chǎn)生,就會馬上傳遞到 Standby 節(jié)點,流復(fù)制提供異步和同步兩種模式,同步模式可以保障數(shù)據(jù) 0 丟失,這篇文章主要介紹了PostgreSQL?流復(fù)制搭建,需要的朋友可以參考下2023-09-09
PostgreSQL實戰(zhàn)之啟動恢復(fù)讀取checkpoint記錄失敗的條件詳解
這篇文章主要給大家介紹了關(guān)于PostgreSQL實戰(zhàn)之啟動恢復(fù)讀取checkpoint記錄失敗的條件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧2018-08-08
PostgreSQL誤刪數(shù)據(jù)庫該怎么辦詳解
這篇文章主要介紹了PostgreSQL中誤刪數(shù)據(jù)庫的恢復(fù)方法,包括備份恢復(fù)、歸檔日志恢復(fù)和操作系統(tǒng)層面的快照恢復(fù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-03-03
PostgreSQL樹形結(jié)構(gòu)的遞歸查詢示例
這篇文章主要給大家介紹了關(guān)于PostgreSQL樹形結(jié)構(gòu)的遞歸查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用PostgreSQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-05-05
PostgreSQL常用字符串函數(shù)與示例說明小結(jié)
文章介紹了PostgreSQL中常用字符串函數(shù)的使用方法,包括空值處理、字符串位置查詢、長度計算、大小寫轉(zhuǎn)換、去除空格、連接、替換、匹配、拆分和截取等操作,感興趣的朋友跟隨小編一起看看吧2024-11-11
Navicat設(shè)置PostgreSQL數(shù)據(jù)庫的表主鍵ID自增的方法
這篇文章主要介紹了Navicat設(shè)置PostgreSQL數(shù)據(jù)庫的表主鍵ID自增的方法,文章通過圖文結(jié)合的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-06-06
postgresql數(shù)據(jù)添加兩個字段聯(lián)合唯一的操作
這篇文章主要介紹了postgresql數(shù)據(jù)添加兩個字段聯(lián)合唯一的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

