INSERT INTO SELECT语句与SELECT INTO FROM语句区别

INSERT INTO SELECT语句与SELECT INTO FROM语句区别1.INSERTINTOSELECT语句语句形式为:InsertintoTable2(field1,field2,…)selectvalue1,value2,…fromTable1或者:InsertintoTable2select*fromTable1注意:(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在(2)注意Table2的主

大家好,又见面了,我是你们的朋友全栈君。

1.INSERT INTO SELECT语句

语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1

或者:Insert into Table2 select * from Table1

注意:
(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在

(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

Insert into Table2(field1,field2,…) values (select value1,value2,… from Table1)

由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

 --1.创建测试表 
    create TABLE Table1 ( a varchar(10), b varchar(10), c varchar(10) ) create TABLE Table2 ( a varchar(10), c varchar(10), d int ) --2.创建测试数据 Insert into Table1 values('赵','asds','90') Insert into Table1 values('钱','asds','100') Insert into Table1 values('孙','asds','80') Insert into Table1 values('李','asds',null) select * from Table2 --3.INSERT INTO SELECT语句复制表数据部分列和常值 Insert into Table2(a, c, d) select a,c,5 from Table1 或:Insert into Table2 select * from Table1 --4.显示更新后的结果 select * from Table2 --5.删除测试表 drop TABLE Table1 drop TABLE Table2 

2.SELECT INTO FROM语句

语句形式为:SELECT vale1, value2 into Table2 from Table1

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下:

  --1.创建测试表 
    create TABLE Table1 ( a varchar(10), b varchar(10), c varchar(10) ) --2.创建测试数据 Insert into Table1 values('赵','asds','90') Insert into Table1 values('钱','asds','100') Insert into Table1 values('孙','asds','80') Insert into Table1 values('李','asds',null) --3.SELECT INTO FROM语句创建表Table2并复制数据 select a,c INTO Table2 from Table1 --4.显示更新后的结果 select * from Table2 --5.删除测试表 drop TABLE Table1 drop TABLE Table2 

注意:如果在sql/plus或者PL/SQL执行这条语句,会报”ORA-00905:缺失关键字”错误,原因是PL/Sql与T-SQL的区别。
T-SQL中该句正常,但PL/SQL中解释是:
select..into is part of PL/SQL language which means you have to use it inside a PL/SQL block. You can not use it in a SQL statement outside of PL/SQL.
即不能单独作为一条sql语句执行,一般在PL/SQL程序块(block)中使用。

如果想在PL/SQL中实现该功能,可使用Create table newTable as select * from …:
如: create table NewTable as select * from ATable;

NewTable 除了没有键,其他的和ATable一样

———SQL SELECT INTO语法介绍
SQL SELECT INTO 语句可用于创建表的备份复件。
SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SQL SELECT INTO 语法
您可以把所有的列插入新表:
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
或者只把希望的列插入新表:
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename
SQL SELECT INTO 实例 – 制作备份复件
下面的例子会制作 “Persons” 表的备份复件:
SELECT * INTO Persons_backup FROM Persons
IN 子句可用于向另一个数据库中拷贝表:
SELECT * INTO Persons IN ‘Backup.mdb’ FROM Persons
如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:
SELECT LastName,FirstName
INTO Persons_backup
FROM Persons
SQL SELECT INTO 实例 – 带有 WHERE 子句
我们也可以添加 WHERE 子句。
下面的例子通过从 “Persons” 表中提取居住在 “Beijing” 的人的信息,创建了一个带有两个列的名为 “Persons_backup” 的表:
SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City=’Beijing’
SQL SELECT INTO 实例 – 被连接的表
从一个以上的表中选取数据也是可以做到的。
下面的例子会创建一个名为 “Persons_Order_Backup” 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息:
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159615.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • setPositiveButton,setNegativeButton,setNeutralButton各代表什么意思

    setPositiveButton,setNegativeButton,setNeutralButton各代表什么意思本质上都是三个Button并没有很大的区别:Positive:积极的Negative:否定的Neutral:中性的setPositiveButton表示设置弹框后的确定按钮。setNegativeButton表示设置弹框后的取消按钮,设置的是出现在最右边,一般把最右的button功能设置为“取消”,问也就是调用dlg.dismiss()。setNeutralButton:这个是相当于一个忽略操作的按钮。(中立)…

    2022年6月18日
    40
  • polyfill什么意思_fill方法怎么使用

    polyfill什么意思_fill方法怎么使用     今天在做特征工程时,考虑给某列的缺失值,填充为该列的众数。按照之前填补均值和最大最小值的方法:importpandasaspddf.Mer_min_discount.fillna(df.Mer_min_discount.mode(),inplace=True)   结果发现缺失值怎么都填充不上,查阅资料后,恍然大悟,原来由于众数可能存在多个,所以pand…

    2022年8月12日
    5
  • wireshark抓包命令_wireshark ping抓包

    wireshark抓包命令_wireshark ping抓包wireshark抓包常用命令:一、针对IP过滤1)对源地址为192.168.0.1的包的过滤ip.src==192.168.0.12)对目的地址为192.168.0.1的包的过滤ip.dst==192.168.0.13)包括源和目的地址ip.addr==192.168.0.1二、针对协议的过滤1)捕获某些协议的数据包httportelne…

    2025年8月29日
    6
  • IDEA安装yarn

    IDEA安装yarn当我们拿到一个vue项目,导入到idea后发现有yarn.lock文件,则该前端项目需要通过yarn来进行启动。如下图:未安装前,如图下:安装步骤:1.各位看官注意,我们安装yarn,必须得把Nodejs的环境先配置好。以及npm的淘宝镜像安装好,也就是说启动vue的环境的是正常的。2.在Terminal面板下,通过cnpminstall-gyarn命令进行全局安装:3.执…

    2022年5月9日
    359
  • vim搜索及高亮取消

    vim搜索及高亮取消1.命令模式下,输入:/字符串比如搜索user,输入/user按下回车之后,可以看到vim已经把光标移动到该字符处和高亮了匹配的字符串2.查看下一个匹配,按下n(小写n)3.跳转到上一个匹配,按下N(shift+n)4.搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮?命令模式下,输入:nohlsearch也可以:setnohlsearch;当然,可以简写,noh或者setnoh。…

    2022年9月24日
    5
  • 中国软件外包IT公司最新排名

    中国软件外包IT公司最新排名http://cnitcomments.com/companylist/topoutsourcing.htm1.博朗软件Bleum(上海)2.中软国际(北京)3.东软集团Neusoft(沈阳)4.博彦科技BeyondSoft(北京)5.海辉软件HiSoft(大连)6.文思VanceInfo(北京)7.浙大网新Insigma(杭州)8…

    2022年6月9日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号