ORACLE 查詢系列用法

2021-09-29 10:04:31 字數 4091 閱讀 5445

1.資料庫的定義

按照資料結構來組織,儲存和管理資料的倉庫

2. dml 資料管理語言

dml分為dql和dml.dql為資料庫查詢語言.

3.查詢表結構

desc 表名;(在命令視窗)

(1)注釋 –

--注釋
(2)查詢語句

select 欄位名 from 表名;

select 欄位名1

,欄位名2...

from 表名;

select

*from 表名;

(模糊匹配)

select

*from emp;

(3)豐富功能

1.distinct 關鍵字,表示去重

select

distinct 欄位名 from 表名;

(對欄位名去重)

;注意:必須是select後面字段結果集多條資料都相同的才可以去重;

2.偽列

偽列不是表中真實存在的列

select3*

3from emp;

3.字串,原樣輸出和起別名

在sql中字串的表示為』』,且" "表示原位輸出,同時起別名為在相應字段後面空一格加別名.

select ename "姓名"

from emp;

--給ename 起別名叫做姓名

4.||表示字串的拼接

select

'zis'

||ename from emp;

5.關於null值的處理

(1)null和數字運算還是null,null值和字串運算還是原串.

***因此對於null值參與運算主要使用函式nvl(引數1,引數2)***表示如果引數1值不為null,為引數1,是null為引數2.

select ename,sal,comm,sal+nvl(comm,0)

from emp;

6.dual 虛表 (供測試用的)

select sysdate from dual;
(4)條件查詢

select 字段 from 表名 where 條件;

其中判斷條件的符號有如下三類

第一類:,=,!=,<>,<=,>=,between and

第二類:and,or,not

第三類:關於null的判斷,is null 或者 is not null

select

*from emp where deptno=20;

select

*from emp where

not deotno=

20;

(1) all()函式和some(),any()函式

all()函式表示都高的

select

*from emp where sal>

all(

900,

1000

,1100);

工資比900

,1000

,1100都大的.

some(),any()函式,比任何乙個都高的

select

*from emp where sal>

some

(900

,1000

,1100);

工資比900

,1000

,1100任何乙個大的就可以.

(2)集合函式

union

union all

intersect

minus

區別如下:

(3)模糊匹配like

用%來代表任意個字元,用_來代表乙個字元.

用escape(『字元』)來定義轉義字元

select

*from emp where ename =

'%a%%'

escape

('a');

代表名字中含有%號的名字,a代表轉義字元.將百分號轉義了.

(4)sql中函式

1.單行函式

一條記錄返回乙個結果.

sysdate:返回當前時間

select sysdate from dual;

--返回當前時間

add_months(月份數,日期物件),可以進行月份相加

select hiredate,add_months(hiredate,3)

from emp;

-對入職月份加三

months_between(日期1,日期2),返回日期1和日期2的月份

select hiredate months_between(sysdate,hiredate)

from emp;

last_day(),當前月最後一天

select last_day(sysdate)

from dual;

next_day(sysdate,『星期三』),以目前時間為基準,下個星期三是幾號?

select next_day(sysdate,

'星期三'

)from dual;

to_date(資料,格式),字串的格式轉為日期格式select to_date(『2019-9-5 16:19:25』,『yyyy-mm-dd hh24:mi:ss』) from dual

to_char(資料,格式),日期轉為字串

select
decode(字段(判定),值1,結果1,值2,結果2…,預設結果)

select deptno ,dname,loc,decode(deptno,10,

'十',20,

'二十'

,'四十'

) 中文部門 from dept;

--對於部門編號是10的預設為十,部門編號是20的預設是二十,其他預設為四十

in(值1,值2,值3…)對括號中多個值進行等值匹配時候,使用.

select ename from emp where sal in

(1000

,2000

,1500

);查詢工資為1000

/1500

/2000的員工姓名

**子查詢(乙個sql中巢狀另乙個sql)**這裡介紹exists(結果集)用法:select 資料 from 資料來源 where exists(結果集)

從from中拿出一條資料去where中進行判斷,如果 exists中有資料,當前這一條保留,如果沒有值,當前這條資料不保留.

select

*from emp e where

exists

(select deptno from dept d whrew dname in

('sa'

,'acc'

)and e.deptno=d.deptno)

;

2.多行函式/聚合函式

Oracle子查詢的用法

在執行資料庫操作 包括查詢 新增 修改 刪除等操作 的過程中,如果某個操作需要依賴另乙個select語句的查詢結果,那麼就可以把select語句嵌入到該操作語句中,這樣就形成了乙個子查詢。實際上,在關係型資料庫中,各表之間的資料關係非常密切,它們相互關聯,相互依存,這樣就可以根據資料之間的關係使用相...

ORACLE子查詢的多種用法

一 用於查詢 第乙個是最普通的子查詢,子查詢 內查詢 在主查詢之前一次執行完成。子查詢的結果被主查詢 外查詢 使用。子查詢一般是返回單行,要是返回多行,就要用到使用多行比較操作符 in,all,any 二 使用子查詢建立表 這就是把子查詢查詢出來的資料,建立成乙個表,表中的列的資料型別 約束和原來的...

Oracle分頁查詢及ROWMUN的用法

oracle的rownum是一種偽列,它會根據返回記錄生成乙個序列化的數字。rownum經常與 和 搭配使用,和!雖然也能和rownum一起檢視,但是在某些條件下會失效。其他如 between.and 也能編譯成功,但是不會返回任何查詢結果。rownum常用來獲取查詢的部分結果,如獲取前10條記錄或...