`

oracle 与 SQL Server 利用select 建表和update的区别

阅读更多

 

Oracle:

 

建表可以使用:

 

create table emp1
as
select * from emp where deptno = 20;


这种方式。

 

利用select update,则要复杂些

 

 

写道
我们可以这么写
Update emp
Set(sal,comm) = (select sal,comm. From emp1 where emp.empno = emp1.empno)
Where exists (select 1 from emp1 where emp1.empno = emp.empno)

请你尤其注意这里的where子句,你可以尝试不写where子句来执行以下这句话,你将会使得emp中的很多值变成空。

这是因为在oracle的update语句中如果不写where子句,oracle将会默认的把所有的值全部更新,即使你这里使用了子查询并且某在值并不能在子查询里找到,你就会想当然的以为,oracle或许将会跳过这些值吧,你错了,oracle将会把该行的值更新为空。

我们还还可以这么写:

update (select a.sal asal,b.sal bsal,a.comm acomm,b.comm bcomm from emp a,emp1 b where a.empno = b.empno)
set asal = bsal,
acomm = bcomm;

这里的表是一个类视图。
当然你执行时可能会遇到如下错误:

ERROR 位于第 2 行:
ORA-01779: 无法修改与非键值保存表对应的列
这是因为新建的表emp1还没有主键的缘故

下面增加一个主键
alter table emp1
add constraint pk_emp1 primary key (empno);

执行之后

在执行前面的语句就能成功。

这里我们总结一下:

在oracle中不存在update from结构,所以遇到需要从另外一个表来更新本表的值的问题的时候,有两种解决的办法:

一种是使用子查询,使用子查询时一定要注意where条件(一般后面接exists子句),除非两个表是一一对应的,否则where条件必不可少,遗漏掉where条件时可能会导致插入大量空值。

另外一种是类视图的更新方法,这也是oracle所独有的。先把对应的数据全部抽取出来,然后更新表一样更新数据,这里需要注意的是,必须保证表的数据唯一型。

 

SQL Server:

 

建表可以这么写:

 

select * into table2  from table1

 

 

利用select update,则使用update...from语句:

 

update select_test_tb 
set name=stt1.name 
from select_test_tb stt, select_test_tb1 stt1 
where stt.id=stt1.id

 

分享到:
评论

相关推荐

    Oracle和SqlServer语法区别

    Oracle和SqlServer语法区别 Oracle和SqlServer是两种流行的关系型数据库管理系统,它们之间存在着一些语法区别。了解这些区别对于开发者来说非常重要,因为它可以帮助他们更好地迁移到新的数据库管理系统。下面将...

    ORACLE和SQL Server的语法区别

    本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,重点在于Transact-SQL(T-SQL)与PL/SQL之间的区别,并提供了一些迁移策略。对于希望将现有的Oracle数据库系统迁移至SQL Server平台的用户来说,这些知识尤...

    Oracle和SQL_Server的语法区别

    - 对于 SELECT、INSERT、UPDATE 和 DELETE 语句,首先要确保它们在 Oracle 中的语法有效,然后根据 SQL Server 的语法进行适当修改。 2. **外部联接的转换**: - Oracle 使用的外部联接语法与 SQL-92 标准有所...

    Sql Server与Oracle的区别

    【Sql Server与Oracle的区别】 在数据库管理领域,Sql Server(由微软公司开发)和Oracle(由甲骨文公司提供)都是广泛使用的数据库管理系统。虽然两者都支持SQL语言,但它们在语法、功能和设计上存在一些显著差异...

    异种数据库函数和标准SQL语法比较Oracle与SqlServer.rar

    两者都支持标准的SQL语法,如SELECT、INSERT、UPDATE和DELETE等基本操作,但在特定函数和语法细节上有所区别。 1. **日期和时间处理**: - Oracle提供`SYSDATE`函数获取当前日期,而SQL Server使用`GETDATE()`。 ...

    insert/update同时执行(mysql,oracle,sqlserver)

    判断是否存在,存在就update,不存在insert,不是用存储过程解决的。

    oracle和SQL的语法区别

    Oracle 和 SQL Server 的 SELECT、INSERT、UPDATE 和 DELETE 语句基本结构相似,但在具体语法细节上有所不同。例如,Oracle 支持特定的优化器提示,而 SQL Server 则不支持。在迁移时,应确保语句的语法有效,并...

    oracle和sql server

    ### Oracle与SQL Server对比分析 #### 一、概述 在数据库管理系统(DBMS)领域中,Oracle和SQL Server是两个非常知名且广泛使用的解决方案。Oracle是由甲骨文公司开发的企业级数据库系统,以其强大的功能和高度的...

    Oracle与SQL Server基于角色访问控制对比分析.pdf

    Oracle与SQL Server是当前最流行的两个关系数据库管理系统,担负着大量的企业数据存储和管理任务。其中,安全性是数据库管理系统的生命线,访问控制技术是保证数据库安全的有效方法之一。基于角色的访问控制是数据库...

    Oracle SQLServer数据库 学习笔记

    1. **基础语法**:SQL查询语句(SELECT、INSERT、UPDATE、DELETE)、表的创建与管理。 2. **索引与优化**:如何创建和使用索引来提高查询速度,以及查询优化策略。 3. **事务处理**:理解ACID属性,掌握事务的开始、...

    sqlserver利用linkserver链接oracle操作手册

    #### 1.1 SQL Server与Oracle版本确认 首先,确保SQL Server版本(本例中为MSSQLServer2008)与Oracle版本(本例中为Oracle11g或其客户端)兼容。这一步是搭建跨数据库连接的基础。 #### 1.2 TNS配置 针对Oracle端...

    shell连接oracle数据库执行SQL工具脚本-支持select+inset+update

    shell连接oracle数据库工具脚本:支持select/insert/update/delete 部署位置:/root/sysmonitor db:数据库文件夹 dbconfig.properties:数据库配置文件, dbConnectTest.sh:连接测试文件 dbExecurteSQL.sh:...

    C#代码生成器支持oracle和sqlserver

    本项目“C#代码生成器支持Oracle和SQL Server”是专为这两大数据库系统设计的,旨在帮助开发者快速构建与数据库交互的应用程序。 1. **C#编程语言**:C#是一种面向对象的编程语言,由微软公司开发,广泛应用于...

    通用SQL教程oracle,mysql,sqlserver

    MySQL的SQL语法与Oracle和SQL Server大体相似,但在某些特定功能上有所区别,例如视图的创建、触发器的使用以及存储过程的编写。MySQL以其高性能、易用性和高可用性而著称。 SQL Server是由微软公司开发的一款商业...

    Mysql,Oracle,Sqlserver数据库驱动包

    总的来说,MySQL、Oracle和SQL Server的驱动包都是为了方便开发者与数据库进行通信,实现数据的存取和处理。选择哪种驱动取决于项目需求、性能需求以及对特定数据库系统的熟悉程度。了解和掌握这些驱动的使用方法,...

    郝斌 scott 资源 sql server oracle scott

    【标题】"郝斌 scott 资源 sql server oracle scott" 指的是一个关于数据库学习的资源集合,由知名讲师郝斌提供,涵盖了SQL Server和Oracle两个主流的关系型数据库系统,其中特别关注了"SCOTT"这个经典的数据库示例...

    .NET数据库通用接口SQLSERVER和ORACLE

    本项目".NET数据库通用接口SQLSERVER和ORACLE"就是这样一个解决方案,它旨在为.NET开发者提供一个跨数据库的通用接口,使得在C#编程中可以方便地处理SQL Server和Oracle数据库。 首先,我们要理解.NET Framework...

    SQL Server2005 DBLINK链接Oracle 9i详解

    本文档详细介绍了如何在 SQL Server 2005 中通过 DBLINK 功能实现与 Oracle 9i 数据库之间的链接。通过这种方式,可以在 SQL Server 2005 中查询、更新甚至是执行 Oracle 9i 中的数据。此文档包含具体的步骤说明,并...

Global site tag (gtag.js) - Google Analytics