Oracle 中常用函数注意事项

1. nvl(字段,‘x’)字段值等于null就这个函数得到的结果就是'x',一般用于存在空值比较的情况下,比如字段a与字段b都是int型,其中一个等于null另一个为非空值,你使用a<>b是不成立的,使用此条件查询你将丢失这条本来不相等的数据,可以如此用法nvl(字段,-1)<>nvl(字段,-1),这样就可以得到想要查询的数据,当然查询数据的前提是此字段值不能有-1值才能用这种写法。

2.Oracle里面没有Top查询函数,查询行数时通常使用rowNum函数。

3.创建数据库:create database data;

创建数据表:create table t ();

向数据表中插入sql数据:insert into t(列名) values(.....);

删除数据表中的数据: delete from t where (条件约束);

修改数据表:alter table t (条件); eg: drop column "列名" 或者 add......

查询数据表记录: select * from t where .....(条件约束)

4.为查询的数据表或者查询列取别名是,不适用as的形式,直接在表或者列名之后跟别名就可以了, eg:select * from Table t;

5.decode(条件,值1,返回值1,值2,返回值2....值n,返回值n,缺省值)

eg:sum(decode (Type,‘正式',salary+bonus,0)) 正式收入

以下两条查询语句:select count(*) from 表 where 性别=’男‘ 和select count(*) from 表 where 性别=’女‘如果想要使两条数据显示在一起需要使用Union ,太麻烦了, 直接使用decod函数,表示如下: select decode(性别,男,1,0),decode(性别,女,1,0) from 表;

6.oracle中的intersect的用法,和 UNION 指令类似, INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而 INTERSECT 则比较像 AND ( 这个值要存在于第一句和第二句才会被选出)。 UNION 是联集,而 INTERSECT 是交集,

<span style="font-size:12px;">INTERSECT 的语法如下: [SQL语句 1] INTERSECT [SQL语句 2]</span>

请注意,在 INTERSECT 指令下,不同的值只会被列出一次。

<span style="font-size:12px;">SELECT Date FROM A INTERSECT SELECT Date FROM B   
结果 Date Jan-07-1999</span>

搜索7.round函数使用,如何使用 Oracle Round 函数 (四舍五入)
描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。
SELECT ROUND( number, [ decimal_places ] ) FROM DUAL
Sample :
select round(123.456, 0) from dual;          回传 123
select round(123.456, 1) from dual;          回传 123.5
select round(123.456, 2) from dual;          回传 123.46
select round(123.456, 3) from dual;          回传 123.456
select round(-123.456, 2) from dual;        回传 -123.46

8Oracle数据表中,每张表都会自动具有一个ROWID伪列,这个伪列由Oracle自动生成。用来唯一标志一条记录所在物理位置的一个ID号。数据一旦添加到数据库表中,ROWID就生成并且固定了,对数据库表操作的过程中不会被改变。但是在表存储位置发生变化或者是表空间变化时,由于产生物理位置变化时,ROWID的值才会发生改变。

Oracle默认使用的索引有以下:

单列索引:索引基于数据库表的单个列而创建,比如只在empno列上创建的索引,就是单列索引。

复合索引:索引基于数据库表的多个列所创建。比如索引基于empnoename列而创建,这种索引称为复合索引。

B树索引: Oracle默认使用的索引,索引按B树结构组织并存放索引数据,索引可以是单列索引或复合索引、唯一索引或非唯一索引。

位图索引:为索引列的每个取值创建一个位图(bit位,而非图片),对表中的每行使用1位(bit,取值为01)来表示该行是否包含该位图的索引列的取值。

函数索引:索引的取值不直接来自列,而是来自包含有列的函数或表达式,这就是函数索引。 

CREATE [UNIQUE] | [BITMAP] INDEX index_name
ON table_name([column1 [ASC|DESC],column2
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1]
[STORAGE (INITIAL n2)]
[NOLOGGING]
[NOLINE]
[NOSORT];<strong>
</strong>

9.约束的分类如下:

非空约束:又称NOTNULL约束,要求字段的值不能为NULL,一般是在字段级别使用NOTNULL列属性进行约束。

唯一约束:又称UNIQUE约束,指定列的值在整个表行中是唯一的,可以在表级别也可以在字段级别定义,在字段级别使用UNIQUE关键字进行声明。

检查约束:又称CHECK约束,可以在在字段级或者是在表级加入的检查约束,使其满足特定的要求,检查约束通过CHECK表达式来指定字段的检查条件,     比如值大于0或小于0等等。

主键约束:SQL92建议在建立一个表时定义一个主键:它其实就是:唯一约束和非空约束的组合。

外键约束:用于定义表间关联的约束,实现数据完整性,这种约束通常是指表与表之间通过主外键约束而建立关联关系,这是关系型数据库的精华。 

10.视图的分类:

Oracle中,视图根据使用的时机与作用可以分为4类:

标准视图:也就是常见的存储SQL查询到数据库方案中的普通视图,又称为关系视图。

内联视图:内联视图不是一个方案对象,在使用SQL语句编写查询时,临时构建的一个嵌入式的视图,因此又称为内嵌视图。

对象视图:基于Oracle中的对象类型创建的对象视图,可以通过对这些视图的查询并修改对象数据。

物化视图:与标准视图存储SQL语句不同的是,物化视图存储的是查询的结果,因此物化视图有时又称为快照,在Oracle8i以后被重命名为物化视图。

         由于物化视图存储查询的结果,因此可以大幅的提升查询的性能,减少远程查询的时间。 

视图创建的语法如下:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
物化视图的创建语法如下:

CREATE MATERIALIZED VIEW [view_name]
REFRESH [FAST|COMPLETE|FORCE]
[
ON [COMMIT|DEMAND] |
START WITH (START_TIME) NEXT (NEXT_TIME)
]
[BUILD IMMEDIATE|BUILD DEFERRED]
AS
{SQL STATEMENT}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值