SQL提供了不同的语句,以便选择Oracle、MySQL、PostgreSQL等各种数据库服务器中的现有表、变量、临时表。在本教程中,我们将研究如何使用 Select Into
不同情况下的SQL语句。
语法
Select Into语句语法与Select语法相同。我们只需要一个 INTO
之间 SELECT
和 FROM
. 我们也可以使用 WHERE
语句以筛选行。
SELECT columns INTO newtable [IN externaldb] FROM oldtable WHERE condition;
-
columns
指定要复制的旧表中的列。我们也可以使用*
按顺序指定所有列。 -
newtable
是我们要创建或复制的新表。 -
externaldb
是可选的。如果要从另一个或外部数据库复制,则可以使用。 -
oldtable
是我们要从中复制的表。 -
condition
如果要筛选或指定要复制的数据,可以使用。这与常规用法是一样的。
将所有列复制到新表中
我们将从一个简单的通用示例开始。我们将从名为 customer
转换为表名 allcustomers
.
SELECT * INTO allcustomers FROM customers;
将指定列复制到新表中
我们还可以指定要添加到新表中的列。在本例中,我们将复制名为 id
, name
从表 customer
放入名为 allcustomers
SELECT id,name INTO allcustomers FROM customers;
创建表的备份副本
另一个有用的场景 Select Into
语句正在通过复制另一个表来创建一个表的备份。我们将创建名为 customers
名字是 cusotmersbackup
SELECT * INTO customersbackup FROM customers;
从另一个数据库复制表
的默认行为 Select Into
语句复制当前数据库中的表。如果我们需要将表复制到新的数据库中,我们需要使用 In
声明。在本例中,我们将复制名为 customers
进入新数据库 newdb
使用表名 newcustomers
.
SELECT * INTO newcustomers IN 'newdb' FROM customers;
仅将指定的行复制到新表中
如前所述,我们只能复制指定或筛选的行 Select Into
. 我们将使用 WHERE
带有我们要应用的条件的条款。在本例中,我们将使用 Country
Turkey
从表 customers
进入新表 allcustomers
.
SELECT * INTO allcustomers FROM customers WHERE Country='Turkey';
从多个(多个)表复制到新表中
我们可以用 JOIN
与 SELECT INTO
. 这将使我们能够从多个表复制到新表中。在本例中,我们将从表中复制 customers
和 deals
进入之内 customer_deal
带的表格 LEFT JOIN
在 customerid
SELECT customers.name,deals.dealid INTO customer_deal FROM customers LEFT JOIN deal ON customers.customerid = deals.customerid;
创建新的空表
另一个有用的用例是使用给定的表结构和列创建新的空表。我们将使用标准语法和过滤器 5=1
它总是false,并且不从源表复制任何数据。在本例中,我们将创建一个新表 allcustomer
从表 customers
.
SELECT * INTO allcustomers FROM customers WHERE 5=1;
相关文章: 如何在Bash中提示输入