SQL Select Into语句

时间:2020-02-23 14:32:32  来源:igfitidea点击:

SQL Select Into

对于数据迁移,SQL SELECT INTO运算符是非常有用的运算符。
SELECT INTO用于以下两个目的。

  • SELECT INTO将数据从一个表的所有列复制到新表。

  • SELECT INTO仅将数据从一个表的选定列复制到新表。

我们将在以下各节中尝试详细了解这两种用法。

新表中的所有列

我们将尝试了解使用SQL SELECT INTO将所有列从一个表复制到新表的语法。
选择成语法

SELECT * INTO new_table FROM old_table_name WHERE condition;

在上面的语法中,所有列数据均基于WHERE子句检索,并使用提供的名称创建新表。

让我们考虑以下客户表,以了解用于根据条件复制所有列数据的SELECT INTO命令。

CustomerIdCustomerNameCustomerAgeCustomerGender
1John31M
2Amit25M
3Annie35F
4Tom38M

方案:从"客户"表中创建一个新表,其中"客户"为男性。

SELECT * INTO MaleCustomer FROM Customer WHERE CustomerGender = 'M';

输出:

CustomerIdCustomerNameCustomerAgeCustomerGender
1John31M
2Amit25M
4Tom38M

我们还可以使用旧表中的IN子句将新表中所有列的数据复制到其他数据库中。

在SQL之后选择到所有列

语法:

SELECT * INTO new_table IN external_db FROM old_table_name WHERE condition

让我们尝试使用下面提到的示例来理解上述语法。

方案:从客户表中的客户性别为男性的备份数据库中创建一个表。

SELECT * INTO MaleCustomer IN 'backup.mdb' FROM Customer WHERE CustomerGender = 'M';

新生成的表如下所示,并将在backup.mdb模式中生成。

CustomerIdCustomerNameCustomerAgeCustomerGender
1John31M
2Amit25M
4Tom38M

新表中的选择性列

我们将尝试了解使用SQL SELECT INTO将选择性列从一个表复制到新表的语法。

语法:

SELECT column_name(s) INTO new_table FROM old_table_name WHERE condition;

在上面的语法中,基于WHERE子句检索选择性列数据,并使用提供的名称创建新表。

方案:从"客户"表中创建一个新表,其中仅包含客户名称和年龄(客户性别为男性)。

SELECT CustomerName, CustomerAge INTO TestCustomer FROM Customer WHERE CustomerGender = 'M';

输出:3行受影响

CustomerNameCustomerAge
John31
Amit25
Tom38

SQL选择进入所选列

在SQL之后选择进入选定的列

我们还可以通过提供不返回任何值的where条件来创建一个与旧表具有相同架构的空表。

SELECT * INTO NewCustomer FROM Customer WHERE 1=0;

上面的查询将产生一个名称为NewCustomer的表,该表具有与Customer表相同的架构。

MySQL选择进入

MySQL不支持Select Into子句。
因此,我们可以使用下面的查询通过从另一个表中选择数据来创建表。

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

注意:在上面的查询中,AS是可选的。