Oracle 中常用函式注意事項

2021-06-27 02:31:15 字數 4378 閱讀 1550

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 是交集,

intersect 的語法如下: [sql語句 1] intersect [sql語句 2]
請注意,在 intersect 指令下,不同的值只會被列出一次。

select date from a intersect select date from b   

結果 date jan-07-1999

如何使用 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

8. 在

oracle

資料表中,每張表都會自動具有乙個

rowid

偽列,這個偽列由

oracle

自動生成。用來唯一標誌一條記錄所在物理位置的乙個

id號。資料一旦新增到資料庫表中,

rowid

就生成並且固定了,對資料庫表操作的過程中不會被改變。但是在表儲存位置發生變化或者是表空間變化時,由於產生物理位置變化時,

rowid

的值才會發生改變。

oracle預設使用的索引有以下:

單列索引:索引基於資料庫表的單個列而建立,比如只在

empno

列上建立的索引,就是單列索引。

復合索引:索引基於資料庫表的多個列所建立。比如索引基於

empno

和ename

列而建立,這種索引稱為復合索引。 b

樹索引:

oracle

預設使用的索引,索引按

b樹結構組織並存放索引資料,索引可以是單列索引或復合索引、唯一索引或非唯一索引。

位圖索引:為索引列的每個取值建立乙個位圖(

bit位,而非),對錶中的每行使用1位(

bit,取值為0或

1)來表示該行是否包含該位圖的索引列的取值。

函式索引:索引的取值不直接來自列,而是來自包含有列的函式或表示式,這就是函式索引。

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];

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

oracle注意事項

建立序列 create sequence role seq1 start with 1 increment by 1 minvalue 1 maxvalue 1000 nocycle nocache drop刪除序列 drop sequence role seq1 primary主鍵 create ...

hyperf 常用方法函式 注意事項

request繼承abstractcontroller得到 request this request file request file file file request file key path目錄必須存在 path public aliyun time mt rand 1 10000 fil...

ORACLE開發注意事項

1 自測應嚴格 2 若欄位col1由源表若干字段依據公式計算而來,col2由col1計算而來,則計算col1的結果不應先保留小數字,否則會造成col2的計算有誤差,應只在最後的結果中保留小數字。3 取源表增量部分資料時,要取全,把所有受影響的 參與計算的資料都取出來。3 關聯提取,主鍵來自一張表ta...