本文参考"Beginning SQL: Differences Between SQL Server and Oracle-A Quick Intro for SQL Server Users",作者Les Kopari

 
本文比较适合刚接触Oracle的SQL Server开发人员. 
I.                   简单概念的介绍
1.       连接数据库
S:    use mydatabase
O:    connect username/password@DBAlias
       conn username/password@DBAlias
 
2.       在Oracle中使用Dual, Dual是Oracle一个特有的虚拟表, Oracle中很多系统的变量和函数都可以通过Dual中获得
S:    select getdate();
O:    select sysdate from dual;
 
3.       Select Into和Insert 语句的使用, 在SQL Server中的Select Into语句在Oracle中一般是Insert into…select…, 另外2个数据库都支持标准的SQL, 写法上略有区别
S:    select getdate() mycolumn into mytable;
       Insert mytable values(‘more text’);
O:    insert into mytable select getdate() mycolumn from dual
insert into mytable (mycolumn) values(sysdate);
 
4.       Update语句
S:    update mytable set mycolumn=myothertable.mycolumn  
from mytable,myothertable 
where mytable.mycolumn like 'MY%' and myothertable.myothercolumn='some text';
O:    update mytable set mycolumn=
(select a.mycolumn from myothertable a
where myothertable.myothercolumn='some text')
where mytable.mycolumn like 'MY%';
 
5.       Delete语句
S:    delete mytable where mycolumn like 'some%';
O:    delete from mytable where mycolumn like 'some%';
 
6.       使用开发管理的软件
S:    isql
osql: for queries developed in SQL Analyzer
SQL Server Management Studio Express     图形化管理工具
O:    sqlplus
       PL/SQL Developer 图形化开发管理工具
       TOAD                   图形化开发管理工具
 
注: 个人建议基本的简单的Select, Update, Delete使用标准的SQL语句,如SQL92或SQL99的定义
 
II.                一些细节问题: Joins, Subqueries, Deletes
1.       Outer Join 外连接
S:    select d.deptname, e.ename from dept d, emp e where d.empno *= e.enum;
O:    select d.deptname,e.ename from dept d, emp e where d.empno = e.enum (+);
 
2.       SubQueries in Place of Columns
S:    select distinct year,
q1 = (select Amount amt FROM sales where Quarter=1 AND year = s.year),
q2 = (SELECT Amount amt FROM sales where Quarter=2 AND year = s.year),
q3 = (SELECT Amount amt FROM sales where Quarter=3 AND year = s.year),
q4 = (SELECT Amount amt FROM sales where Quarter=4 AND year = s.year)
from sales s;
O:    SELECT year,
DECODE( quarter, 1, amount, 0 ) q1,
DECODE( quarter, 2, amount, 0 ) q2,
DECODE( quarter, 3, amount, 0 ) q3,
DECODE( quarter, 4, amount, 0 ) q4
FROM sales s;
 
3.       Delete with Second From Clause
S:    delete from products, product_deletes
where products.a = product_deletes.a
and products.b = product_deletes.b
and product_deletes.c = 'd';
O:    delete from products
where (a, b ) in
(select a, b from product_deletes where c = 'd' );

III.               某些概念上的区别

1. The Connect Concept
S:    Multiple databases
O:    Single Database, Multiple tablespaces, schemas, users
 
2. Other Conceptual Differences
SQL Server
Oracle
Database owner, DBO
Schema
Group/Role
Role
Non-unique index
Index
T-SQL stored procedure{
PL/SQL procedure; PL/SQL function
Trigger
BEFORE trigger After trigger
Column identity property
Sequence
 
Oracle中独有的概念, SQL Server2005中也开始支持了:
Clusters; Packages; Triggers for each row; Synonyms; Snapshots
 
3. Data Type Differences
SQL Server
Oracle
INTEGER
NUMBER(10)
SMALLINT
NUMBER(6)
TINYINT
NUMBER(3)
REAL
FLOAT
FLOAT
FLOAT
BIT
NUMBER(1)
VARCHAR(n)
VARCHAR2(n)
TEXT
CLOB
IMAGE
BLOB
BINARY(n)
RAW(n) or BLOB
VARBINARY
RAW(n) or BLOB
DATETIME
DATE
SMALL-DATETIME
DATE
MONEY
NUMBER(19,4)
NCHAR(n)
CHAR(n*2)
NVARCHAR(n)
VARCHAR(n*2)
SMALLMONEY
NUMBER(10,4)
TIMESTAMP
NUMBER
SYSNAME
VARCHAR2(30), VARCHAR2(128)
 
时间上:
S:    Datetime: 1/300th second
O:    Date: 1 second
Timestamp: 1/100 millionth second
 
4. 列别名
S:    select a=deptid, b=deptname,c=empno   from dept;
O:    select deptid a, deptname b, empno c from dept;
 
5. 子查询
S:    SELECT ename, deptname
FROM emp, dept
WHERE emp.enum = 10 AND
(SELECT security_code FROM employee_security
WHERE empno = emp.enum) =
(SELECT security_code FROM security_master
WHERE sec_level = dept.sec_level);
O:    SELECT empname, deptname
FROM emp, dept
WHERE emp.empno = 10
AND EXISTS
(SELECT security_code FROM employee_security es
WHERE es.empno = emp.empno AND es.security_code =
(SELECT security_code FROM security_master
WHERE sec_level = dept.sec_level));
 
IV.               强大的新特性
正则表达式的支持, SQLServer2005查找和替换可以用正则表达式
Regular Expressions: Operators & Functions
Operator: REGEXP_LIKE
Functions: REGEXP_INSTR; REGEXP_SUBSTR; REGEXP_REPLACE
 
Select zip from zipcode where regexp_like (zip, ‘[^[:digit:]]’);
 
SELECT REGEXP_INSTR(
'Joe Smith, 10045 Berry Lane, San Joseph, CA 91234-1234',
' [[:digit:]]{5}(-[[:digit:]]{4})?$')  
AS starts_at
FROM dual
 
V.                  总结和更深入的探讨
以上属于比较基本的探讨,更深入的内容可以参考下面的内容
1.    Oracle Migration Workbench Reference Guide for SQL Server and Sybase Adaptive Server Migrations, Release 9.2.0 for Microsoft Windows 98/2000/NT and Microsoft Windows XP, Part Number B10254-01
2.    Oracle Technology Network, OTN:
http://otn.oracle.com/software/index.html
3.    Writing Better SQL Using Regular Expressions, By Alice Rischert
http://otn.oracle.com/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html

转载于:https://www.cnblogs.com/ryb/archive/2007/08/13/853694.html

SQL Server开发者Oracle快速入门相关推荐

  1. python数据库管理软件_数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接 - Python社区...

    DataGrip :Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, Or ...

  2. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    日常开发中少不了各种可视化数据库管理工具.如果需要同时能连接多种数据库,大家肯定都会想到 DBeaver.Navicat Premium.本文介绍另一个十分好用且强大的工具:DataGrip. Dat ...

  3. MS SQL Server和Oracle对数据库事务处理的差异性

    背景 在吉日嘎拉的软件编程走火入魔之:数据库事务处理入门(适合初学者阅读)文章中关于MS SQL Server和Oracle对数据库事务处理的差异性引起一些争论,因此记录我对数据库事务处理的想法. 简 ...

  4. oracle数据库索引介绍,SQL Server和Oracle数据库索引介绍

    SQL Server和Oracle数据库索引介绍 SQL Server 和 Oracle 数据库索引介绍1 SQL Server 中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行 ...

  5. SQL Server 和 Oracle 以及 MySQL 的区别

    SQL Server 和 Oracle 以及 MySQL 的区别 历史说明区别 > Oracle: 中文译作甲骨文,成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A Rel ...

  6. SQL语法范例大全(SQL Server、Oracle 通解)

    [书名]SQL语法范例大全(SQL Server.Oracle 通解) [作者]希赛IT发展研究中心  组编 黄少华,陈翠娥  编著 [ISBN]978-7-121-07396-0 [出版社]电子工业 ...

  7. SQL Server 与 ORACLE 的区别

    sql server 与  oracle的区别:    DBMS 数据库管理系统 1.数据类型不同.   sql server 的数据类型:int ,smallint ,char,varchar,nc ...

  8. sql server转oracle需要注意的几点

    sql server转oracle需要注意的几点 1.  字符型的字段相加需要用"||",如果用"+"的话,会报"无效的数字"的错误. 2. ...

  9. C#连接4种类型数据库(Access、SQL Server、Oracle、MySQL)

    C#连接4种类型数据库(Access.SQL Server.Oracle.MySQL) 1.C#连接连接Access using System.Data; using System.Data.OleD ...

最新文章

  1. Ajax学习(6)---服务器端脚本和程序中用 JSON 进行响应和回复
  2. java从Object类型转换成double类型
  3. Gumbel-Softmax Trick和Gumbel分布 附VAE讲解
  4. Qt学习笔记之网络和连接
  5. php soap 用户名密码,PHP SOAP客户端帮助!
  6. .Net Core中使用ref和Spanamp;lt;Tamp;gt;提高程序性能
  7. I帧、B帧和P帧的特点和编码的基本流程
  8. 双十一高并发场景背后的数据库RDS技术揭秘
  9. 北京一女子乘公交车遇车祸 惨遭钢筋穿胸
  10. [转][C#]Environment 类
  11. 常见设计模式的思考1
  12. 吐血推荐珍藏的Chrome插件
  13. 15张图带你彻底明白spring循环依赖,再也不用怕了
  14. Java学习笔记9(面象对象9:多态)
  15. IDEA 2018.2.5最新版破解到2100年图解教程
  16. 盘古搜索22日开通 欲打造一流搜索引擎
  17. viper4Android md风格,ViPER4Android音效 XHIFX版
  18. 怎样把网上的短信发送到手机
  19. NeuroImage:对情绪表现的快速接近—回避反应反映了基于价值的决策:来自脑电图研究的神经证据
  20. javascript 字符串中查找指定字符串

热门文章

  1. linux下的科学软件下载,十分科学app-十分科学官网版下载v1.4.3-Linux公社
  2. 029_SpringBoot整合JPa
  3. 013_下载静态资源
  4. 075_html5全局属性
  5. 支付宝 php 返回false,支付宝php sdk验签rsaCheckV1不正确isSign一直返回false
  6. RedisTemplate中opsForValue和opsForList方法使用
  7. 串口屏与6050_MPU6050温度值的读取与转换及串口通信,请指导
  8. Android自带的emoji表情的使用
  9. 在显著性区域外画矩形框matlab,Matlab实验报告样板
  10. python日历下拉框_Python版的农历日历Calendar,功能简单