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命令。
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
1 | John | 31 | M |
2 | Amit | 25 | M |
3 | Annie | 35 | F |
4 | Tom | 38 | M |
方案:从"客户"表中创建一个新表,其中"客户"为男性。
SELECT * INTO MaleCustomer FROM Customer WHERE CustomerGender = 'M';
输出:
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
1 | John | 31 | M |
2 | Amit | 25 | M |
4 | Tom | 38 | M |
我们还可以使用旧表中的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模式中生成。
CustomerId | CustomerName | CustomerAge | CustomerGender |
---|---|---|---|
1 | John | 31 | M |
2 | Amit | 25 | M |
4 | Tom | 38 | M |
新表中的选择性列
我们将尝试了解使用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行受影响
CustomerName | CustomerAge |
---|---|
John | 31 |
Amit | 25 |
Tom | 38 |
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是可选的。