oracle能否3次算术,oracle

本文详细对比了Oracle和MSSQL在数据操作、操作符、函数以及数据库对象(如同义词、序列)等方面的差异。讨论了两者在连接操作符、比较操作符、算术和逻辑操作符上的区别,并列举了转换函数、系统日期获取、分组函数的使用。此外,还深入探讨了Oracle中的抽象数据类型、可变数组、嵌套表、对象表和对象视图等高级特性,展示了如何创建和操作这些对象。
摘要由CSDN通过智能技术生成

insert into newtable(col1) select col1 from

old_table

b.新表不存在前提下,可以用

oracle

可以用Create tabe new

_table_name as select * from old_table

ms sql 可以用 Select *

into new_table from old_table

三 操作符

1.連接操作符

Oracle是

‘||’; Ms sql是‘+’

2. Oracle的比较操作符中不等于除了'<>'之外,还有一个

'!='

3. 算术操作符,都是+-*/;逻辑操作符都是and,not,or(相同點)

4. oracle集合操作符除了union,union all之外还加入intersect,minus

Intersect是仅返回两个查询都有行,minus返回第一个查询有第

二个查询没有的行

四 函數

1.轉換函數

Oracle 中有to_char(),to_date(),to_number()

Ms sql 中有cast,convert

2.系统日期:

Oracle: sysdate

Ms sql:

getdate()

Select sysdate from dual

一定要from子句

Select

getdate() 不一定要from子句

3.Decode函数相当if else,或者ms 中的case语句

语法是decode(value,if1,then1,if2,then2....)

如decode(col1,'1','true','0','fase')

4.常规函数

Nvl 语法是NVL(EXP1,EXP2) 表示如果ex1为空则返回ex2

Nvl2 语法是nvl(exp1,exp2,exp3)表示如果ex1为空,则返回ex3,否则返回ex2

Nullif 语法是nullif(ex1,ex2) 如果这两个表达式相等则返回空

coalesce语法是coalesce(ex1,ex2,....exn)返回第一个非空表达式

5.分組函數

Oracle 中的分組函數Rollup,cube

Rollup返回的结果集包含分组行和小计行,cube产生交叉报表

如:

Select a,b,sum(c) from tabname

group by rollup(a,b)

Select a,b,sum(c) from tabname

group by cube(a,b)

Ms sql中的分組函數 compute

和 compute by

Compute子句为行聚集函数生成汇总值,该汇总值做为一个附加的行显示

在结果集中。没有GROUP BY 子句的情况下,也可以使用关键字COMPUTE.

此关键字使用MAX,MIN,SUM,COUNT,AVG等函数生成汇总值,而compute by

则在控制中断时给出该汇总值,compute by

必须包括在order by 子句中。

還有很多函數,諸如日期函數,字符串函數等等,就不一一作比較了。

Oracle中還有很多比較好的分析函數,也不列舉了。

五.Oracle中的数据库对象

同义词

作用:简化SQL语句;隐藏对象的名称和所有者,提供对象的公共访问等。

语法:CREATE PUBLIC SYNONYM

seqname FOR OBJECT

序列

用来生成唯一、边续的整数,它通常用来自动生成主键或唯一值的键。

創建序列: create sequence seqname

[increment by 1] start with 1 maxvalue 10

minvalue 1 cycle cache

访问序列:

Select

seqname.nextval from dual 将返回序列的初始值

Select

seqname.currval from dual 返回序列的当前值

簇(cluster):

簇是共享相同数据块的一组表,因为这些表具有相同的列,并且经常一起使用。

当两个或多个表的存储在物理上十分接近时,可以通过簇来提高使用这些表的

SQL联接语句的性能。簇是存储表的方法

应该先创建簇,然后再创建簇中的表,

六.Oracle中的对象类型

1. 抽象数据类型

此类型是包含一个或多个子类型的数据类型,并且这些数据类型并不局限

于标准的oracle数据类型

如:create

or replace

type t_mm as object(col

number(3),

col2 varchar2(20))/

此时可以在创建表时使用该类型,如下

Create table test (aa varchar2(5),bb t_mm, cc number(10))

插入记录:

Insert

into test values('cccc', t_mm(1,'col'))

类型声明:

用户定义的数据类型也可以声明为 final,not

final,instantiable,

not instantiabe

Not final表示允许类型派生子类型。默认是final

create or replace

type t_mm as object(col

number(3),

col2 varchar2(20)) Not final

not instantiabe表示类型没有构造函数。

2. 可变数组

可变数组有助于在单个行中存储和重复记录的属性。

数据与表中的其它数据是存储在一起的,有限数目的行,不能被索引

创建可变数组的 语法是:

create type array1 as varray(5)

of varchar2(5)

向可变数组中插入记录

Insert into

test1 values ('2ee', array1('1','2','3','4','5')

)

Select *

from test1 结果集如下

2ee

'1','2','3','4','5'

Select col2

from test1 结果集如下

'1','2','3','4','5'

Select *

from table(select t.col2 from test1 where

col1='2ee'); 结果集

3. 嵌套表

它是包含在表中的表,对每行数据项数目没有限制,一个表在

另一表中是作为一列,主表中的每一行的嵌套表可以包含若干行。

创建嵌套表

先创建一个类型

Create type ord_ty as object(itemcode varchar2(5),qty _ord

number(5),

Qty_held number(5));

创建另一个抽象数据类型,即嵌套表数据类型

Create type ord_nt as table of ord_ty

创建嵌套表

Create table order_mas (orderno varchar2(5),odate date,

vencode varchar2(5), dets ord_nt) nested table dets store as

ord_nt_tab;

向嵌套表中插入数据:

Insert into order_mas values(‘001’,to_date('18-07-08','DD-MM-YY'),

'V009',ord_nt( ord_ty('i001',10,5),ord_ty('i002',34,2));

更新嵌套表的值:

Update table(select e.dets from order_mas e

where e.orderno='001') p

Set value(p)

=ord_ty('i090',8,9) where p.itemcode='i001';

删除嵌套表的值:

Delete from table(select e.dets from order_mas e

where e.orderno='001') p

where p.itemcode='i001';

4. 对象表

在对象表中每一行都是一个行对象,对象表与关系表不同:

对象表中的每一行都有一个OID值,即对象标识符值。该值是在创建行时

分配的。可以使用create table

命令来创建对象表。

在创建对象类型时,Oracle 中是不允许为属性定义约束条件,但是

可以在创建对象表时为对象类型的属性指定约束条件。

Create table vend_master of vend_ty(vencode constraint vc_pk

primary key);

创建对象表与关系表语法不同

表的使用方法不同 插入数据可以使用抽象数据类型的构造函数,如果对象

表所基于抽象数据类型又基于另一抽象数据类型,则必须多个构造函数的嵌

套调用。

Insert into vend_master values (vend_ty());

5. 对象视图

借助对象视图可以将面向对象的结构(如抽象数据类型)应用于现有已经

投入使用的表,而不需重建整个应用程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值