select into的用法

本文介绍了两种SQL数据迁移的方法:使用SELECT INTO和INSERT INTO SELECT FROM。前者会在目标表不存在的情况下创建并填充数据,后者则适用于目标表已存在的场景,并且允许在插入过程中加入常量值。

select into的用法:

select * into destTbl from srcTbl(只能用于sqlserver)
insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl(
两者通用)

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的:

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量,如例中的:5

例如:

insert into recu_a001(id,a001001,a001007,a001011,a001021,a001077,a001780) select id,a001001,a001007,a001011,a001021,a001077,a001780 from a001

这是往oracle中插入数据的。

 

本文出自 “乔磊的博客 学习 进步” 博客,请务必保留此出处http://sucre.blog.51cto.com/1084905/416786

转载于:https://my.oschina.net/sucre/blog/296186

### SQL SELECT INTO 语句的具体用法和示例 #### ### 定义与功能 SQL `SELECT INTO` 是一种用于从现有表中选择数据并将这些数据插入到新表中的命令。此操作不仅会复制选定的数据,还会自动创建目标表结构[^2]。 其基本语法如下: ```sql SELECT column1, column2, ... INTO new_table FROM existing_table WHERE condition; ``` - **column1, column2,...**: 这些是要从源表 (`existing_table`) 中选择的列名。 - **new_table**: 此处指定了即将被创建的新表的名字。 - **existing_table**: 指定从中获取数据的原始表格名称。 - **condition**: (可选项)用来限定哪些行会被选中并转移到新表里去。 #### ### 示例说明 ##### #### 创建备份表 假设有一个名为 `Persons` 的表存储着个人的信息,现在想要基于某些特定条件创建这个表的一个副本即备份表 `Persons_backup` 。可以按照下面的方式来实现: ```sql SELECT LastName, Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'; ``` 这段脚本的作用是从 `Persons` 表里面挑选出所有住在 "Beijing" 的人的姓氏(`LastName`) 和名字(`Firstname`) ,然后把这些信息存放到一个新的叫做 `Persons_backup` 的表当中[^5]。 注意这里只选择了两列放入到了新的表中,这意味着即使原表中有更多的字段存在也不会影响此次操作的结果,只有明确指出的这两项会被保留下来。 另外值得注意的是,如果希望连同其他属性比如地址之类的也一起拷贝过去的话就需要把相应的列加入到查询列表之中去了。 ##### #### 复制整个表及其内容 有时候可能需要完整的复制一张现有的表包括所有的列而不只是部分列的情况之下就可以省略掉具体列举各个字段这一环节而采用星号(*)代表全部列的形式来进行这样的任务执行过程: ```sql SELECT * INTO Employees_copy FROM Employees; ``` 这条指令将会生成一个全新的叫作 `Employees_copy` 的员工资料记录版本并且其中包含了原来那个 `Employees` 表里的每一个单元格的内容没有任何遗漏之处[^3]。 同样地,也可以加上过滤器以确保仅仅转移满足给定标准的那一部分内容过来而已并非无差别全盘接收一切东西进去。 #### ### 特殊情况下的应用案例 当涉及到跨数据库之间的对象迁移或者是重新命名当前正在使用的某个实体实例等情况发生之时,那么此时便可以用到稍微复杂一点形式的表达式了比如说像这样子的样子呈现出来吧! 假如说我们现在有两个独立分开的不同Schema或者说Database分别命名为OldDB跟NewDB之间存在着联系关系,并且我们打算把前者里面的CustomerOrderDetails这张订单明细清单迁移到后者那里去成为一份永久性的资产组成部分之一员的话,那我们可以这样做: ```sql SELECT * INTO NewDB.dbo.CustomerOrdersArchive FROM OldDB.dbo.CustomerOrderDetails; ``` 如此这般之后就成功实现了我们的既定目的啦!当然前提是必须拥有足够的权限才能够顺利完成这项工作的哦😊[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值