📜  复制、复制或备份表的 SQL 查询

📅  最后修改于: 2022-05-13 01:54:47.207000             🧑  作者: Mango

复制、复制或备份表的 SQL 查询

在关系型数据库中,我们经常使用MYSQL、Oracle、PostgreSQL等不同的数据库软件来处理不同的表并执行各种操作。作为参考或在需要时可以重复使用。同样,很多时候我们需要再次复制同一张表并创建其自身的副本。

当我们执行各种修改操作时,我们可以使用备份表跟踪数据的变化。因此,在本文中,我们将讨论如何在 SQL 中复制和创建备份表。

样本输入:考虑一个模式“学生信息”,它由参加我们 DSA 课程的极客的数据组成,如下所示:

          Student Information
IDAgeStudent NameSex
122HarryMale
223VishalMale
320SnehalFemale
425RamMale
524HinaFemale

Syntax:
CREATE TABLE Table_Name AS SELECT * FROM Source_Table_Name;

Table_Name: The name of the backup table.
AS: Aliasing

在MYSQL中,我们可以使用下面的命令来查看备份前后数据库中创建的表的数量。但是,该命令在 PostgreSQL 和其他版本的 SQL 中不受支持。

SHOW TABLES;

示例1:我们可以复制备份表中的所有列。



备份表1查询

输出 :

备份表 1 的输出

示例 2:复制所有列不是强制性的。我们也可以取几列。

Syntax:
CREATE TABLE Table_Name AS SELECT col_1, col_2, ... FROM Source_Table_Name;

Table_Name: The name of the backup table.
AS: Aliasing
col: Required columns from source table

备份表2查询

输出 :

备份表 2 的输出

到目前为止,我们已经看到了如何创建源表的克隆。在上面的备份表中,数据也是随表一起拷贝的。但是,我们也可以在不复制数据的情况下创建备份表。因此,要创建一个不复制任何数据的表,我们可以使用需要返回 FALSE 值的 WHERE 子句的帮助。例如,我们可以使用WHERE 2<2 或 WHERE 1=2

Syntax:
CREATE TABLE Table_Name AS SELECT * FROM Source_Table_Name
WHERE (RETURN FALSE);

Table_Name: The name of the backup table.
AS: Aliasing
FALSE: Any expression which returns FALSE. For example 4>5

示例 1:复制的所有列都没有任何数据。

查询备份表

输出 :

备份表输出

示例 2:复制所有列不是强制性的。我们也可以取几列。

Syntax:
CREATE TABLE Table_Name AS SELECT col1,col2,.... Source_Table_Name
WHERE (RETURN FALSE);

Table_Name: The name of the backup table.
AS: Aliasing
col: Required columns from source table
FALSE: Any expression which returns FALSE. For example 4>5

查询备份表

输出 :

备份表输出