日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

6、oracle数据库下查询操作

發布時間:2023/12/3 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6、oracle数据库下查询操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ORACLE下查詢操作

針對數據庫操作最多的就是數據查詢,這里分享一個我常用的方法,看到需求后,先確定查詢范圍,就是需要查詢哪些表;之后確定查詢條件;最后寫出查詢的字段。

ORACLE中之前說過有兩個偽列ROWID和ROWNUM,用來標識唯一的一條記錄。

1.基本查詢

對數據查詢最簡單的也就是單表查詢了,查詢使用的語法是:

SELECT [COLS] FROM [TABLE] [WHERE][CONDITION]

平常查詢時,一定會有條件,也就是使用到where關鍵字,之后接條件,這里的條件可以看之前的一篇文章【查詢基礎】。

這里針對單表查詢,介紹一下分頁的邏輯,oracle中沒有mysql中的關鍵字limit,所以oracle中數據分頁查詢需要借助ROWNUM,具體如下:

-- 通用的分頁SQL

SELECT * FROM
(SELECT b.*,ROWNUM r FROM
(SELECT * FROM emp) b WHERE ROWNUM <=(pageSize*pageIndex)) t
WHERE t.r > (pageSize*(pageIndex-1))

-- 具體分頁SQL實例
SELECT * FROM
(SELECT b.*,ROWNUM r FROM
(SELECT * FROM emp) b WHERE ROWNUM <=12) t
WHERE t.r > (8)

2.連接查詢

以下均以兩張表連接查詢為例

2.1 內連接

查詢兩張表符合條件的記錄的交集

select * from emp,dept where emp.deptno=dept.deptno;

select * from emp inner join dept on emp.deptno=dept.deptno;
select e.ename,d.dname from emp e INNER JOIN d USING(deptno);

2.2 左外連接

將符合條件的左表中的所有數據查詢出來,關聯著右表中的數據,有則關聯顯示數據,無則顯示null,兩種寫法

select e.name,d.name from emp e?left join dept d?on條件

或者是

select e.ename,d.name from emp e,dept d
where d.deptno = e.deptno(+)
order by d.dname;

不可以在使用外連接的情況下使用in關鍵字

2.3 右外連接

將符合條件的右表中的所有數據查詢出來,關聯著左表中的數據,有則關聯顯示數據,無則顯示null,兩種寫法

select e.name,d.name from dept d right join emp e on條件;

或者是

select e.ename,d.name from emp e,dept d
where d.deptno(+) = e.deptno
order by d.dname;

2.4 自連接

就是給自己取個別名,然后當作兩個表連接,自連接中可以使用外連接。

3.子查詢

3.1 基礎子查詢

子查詢可以簡單的理解為一個查詢的結果,作為另一個查詢的條件,注意在子查詢中不能使用order by關鍵字,排序必須在父查詢中進行。如果子查詢返回的結果是多行,而其父查詢中使用的是比較運算符,將會出現錯誤。當內部select語句給外部的select語句返回一行或多行,在父查詢中可以使用in,any,all等關鍵字。如下例子:

select deptno,sal from emp

where (deptno,sal) in (select deptno,min(sal) from emp group by deptno);

3.2 關聯子查詢

關聯子查詢指的是子查詢引用與父查詢相關的一列或多列,子查詢需借助父查詢,父查詢也需借助子查詢。此關聯子查詢可用exists關鍵字來實現如下例子:

-- 直接寫關聯子查詢
select empno,ename,sal,deptno from emp outers
where sal >
(select avg(sal) from emp inners where inners.deptno=outers.deptno);
-- 使用exists操作符實現子查詢

select empno,ename,sal,deptno from emp outers
where exists
(select avg(sal) from emp inners where inners.deptno=outers.deptno);

3.3 子查詢應用

一般子查詢經常用在from關鍵字和where關鍵字之后,如下兩個例子:

-- 在where之后用

select * from emp where sal>(select avg(sal) from emp)

-- 在from之后用

select ename,dname from
(select * from emp e,dept d where e.deptno=d.deptno)

總結

以上是生活随笔為你收集整理的6、oracle数据库下查询操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。