📜  PostgreSQL – 复制表(1)

📅  最后修改于: 2023-12-03 14:45:35.273000             🧑  作者: Mango

PostgreSQL – 复制表

在 Postgres 中,我们可以使用 CREATE TABLE 语句复制已经存在的表。这是非常方便的,尤其是当我们需要在一个数据库中创建类似但也有一些不同的表时。

语法

以下是复制表的语法:

CREATE TABLE new_table AS
SELECT * FROM old_table
WHERE condition;

其中 new_table 是新表的名称,old_table 是要复制的现有表的名称。

例子

假设我们有一个名为 students 的表:

CREATE TABLE students(
    id SERIAL PRIMARY KEY,
    name CHARACTER VARYING(50) NOT NULL,
    age INTEGER NOT NULL,
    gender CHARACTER VARYING(10) NOT NULL
);

INSERT INTO students(name, age, gender) VALUES
    ('John Doe', 25, 'Male'),
    ('Jane Doe', 24, 'Female');

我们可以使用以下语法复制 students 表中所有行到新表 students_copy 中:

CREATE TABLE students_copy AS
SELECT * FROM students;

现在,如果我们查询 students_copy 表,我们将看到与 students 表完全相同的行:

SELECT * FROM students_copy;

 id |   name   | age | gender 
----+----------+-----+--------
  1 | John Doe |  25 | Male
  2 | Jane Doe |  24 | Female
(2 rows)

请注意,您可以为新表指定表空间和其他表选项(例如分区、索引等)以及条件来选择要复制的行。