oracle問題 形如 select ename from emp a where not exists select 1 from emp where mgr a empno

時間 2025-05-29 12:25:04

1樓:

你問的這些問題都比較基礎哦~~~

我主要跟你說說效能吧:

1、oracle採用自下而上的順序解析where子句,根據這個原理,表之間的亂搜連線必須寫在其他where條件之梁陪檔前,那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾。

2、為何你where子句後面用exists不用in呢?具體子查詢中的where子句mgr=匹配的資料量有多大?改用in還是exists你可以看看下面這個語句:

有兩個簡單例子,以說明 「exists」和「in」的效率問題。

1) select * from t1 where exists(select 1 from t2 where ;

t1資料量小而t2資料量非常大時,t1<>t2 時,2) 的查詢效率高。

最後建議你看看oracle資料庫基礎的一些知識橡亂,應該對你有幫助,遇到搞不定的問題再發知道。希望能幫到你~~~

2樓:網友

1.數字是可以隨便寫的。

2.不可以、因為如果省略的話就成了子姿旁查詢裡面的mgr和empno做等跡者橡值比較了,這個和原有的意思是不一樣的。

3.在查詢的時候嫌叢,每條記錄都會進行一次子查詢,

oracle中exists問題。select * from a where a.id =1 and

3樓:blackmamba曼巴

是的,exists就是對比,對比a,b表時,要一致時才存在相同的數值,這樣exists才為true,b表中必須有對應的id,沒有,就不一致了。

select ename from emp where ename like'%a___'; 這條sql語句中'%a___'是什麼意思?

4樓:笨曉孩芳

這條語句查出的結果都是 倒數第四個是a,a前面可以有任何字元。

5樓:

%是模糊查詢,表示倒數第四位是字元a,%表示前邊的字串任意,下劃線表示a的後邊有多少位的字串。

你這個結果查詢出來的結果,都是a字元在倒數第四位的行。

6樓:網友

%a___表示ename最後4位中有a,換句話說ename中,a前面有任意字元(%匹配),a後面不超過3個字元(3個_匹配)。

7樓:網友

在emp表中找出所有名字的倒數第二個字母是a的ename

其中a的前面的%是表示前面有任意個字元。

後面 _表示有某乙個字元。

oracle資料庫 select ename ,sal from emp where empno

8樓:塵雨洛煙

因為用的是in謂詞,它的作用就是從選定的mgr中進行選擇。

9樓:網友

因為你的資料中,沒有empno的值是「mgr」的行!

10樓:網友

語法有問題,括號裡用單引號,只有乙個值最好用等於。

oracle 11g預設資料庫裡面,有張emp表,其中有欄位ename、deptno、sal分別對應僱員名、部門編號和月薪

11樓:陳舉超

select deptno,max(sal) from emp group by deptno;

這條語句可以得出每個部門的最高工資,可以在這條語句的基礎上和emp表關聯,得出月薪最高的僱員;

例如:select ,,from emp a,(select deptno,max(sal) m_sal from emp group by deptno) b where and ;

除此以外可以是通過分析函式獲得部門最高月薪員工。

例如:select ename,deptno,sal,rank() over(partition by deptno order by sal desc) from emp;

select *from emp where months_between(sysdate,hiredate)/12>25 這句話什麼意思啊

12樓:沃德斯塔和皮皮塔

hiredate與當前時間差距超過25年,月份/12表示一年。

sysdate為當前日期。

months_between(sysdate,hiredate)計算當前日期 - hiredate 的月份。

months_between(sysdate,hiredate)/12計算當前日期 - hiredate 的年數。

months_between(sysdate,hiredate)/12>25 計算當前日期 - hiredate 超過25年。

13樓:匿名使用者

選擇從**months_between電磁脈衝。

select deptno from dept where deptno in (select deptno from emp);這個執行語句怎麼分析,如何執行?

14樓:網友

先執行括號裡面的把所有員工的部門號deptno查詢出來,然後在部門表dept查詢這些剛才查詢出來的部門號,這個select語句沒什麼意義,其實沒人會這樣寫的。

15樓:網友

先執行外面的語句,執行到where時判斷當前行中deptno是否在子查詢。

select deptno from emp)中,這屬於迴圈巢狀,舉個例子,如果dept表有10條資料,emp表有5條,這個查詢的資料量至少是10*5

16樓:隨o天

該語句的主句部分select deptno from dept的意思是:在部門表dept中查詢部門編號,但有條件的。where條件的意思是必須有僱員的部門。

有沒有僱員要查詢emp表才能知道,所以條件子句寫成:deptno in (select deptno from emp) 這個是帶子查詢的條件。

其中:in 是關係運算子,後面()內是滿足條件的值的列表。通過select deptno from emp語句從emp表中找出了有僱員的所有部門編號。

17樓:網友

1.首先sql語句從右往左執行。所以先執行select deptno from emp。查詢僱員表所有部門編號。

代表在。的範圍。

3.再執行select deptno from dept。查詢部門表中所有部門編號。

4.總括:查詢部門表中的部門編號且在僱員表中的部門編號的範圍內。

oracle游標輸出逗號問題,oracle 游標輸出逗號問題

substr record,1,length record 1 這樣去去掉最後乙個逗號了!如果非要判斷最後一行的話,我一般都是在sql語句裡取個count 就是這個sql一共可以取出多少條資料 然後在迴圈的時候用乙個變數累加,當變數等於sql取出的count的時候,就是最後一條資料!可以換一種思路,...

oracle資料儲存問題,oracle資料庫設定儲存點問題

lz你好。是這樣的。你向表中插入資料的時候。新的記錄的資料其實還在記憶體中。是要等你commit提交之後觸發了系統的chkp checkpoint 程序。然後資料寫程序dbwt才把你在記憶體中的資料寫盤形成永久記錄。可以查詢到資料並不代表資料已經寫盤。只是記憶體中有這資料而已。而你直接把sql pl...

oracle求和問題

select sum a.je as jehj,a.bh as bh,to char a.fkrq q,yyyymm as fkrq from xsb a where to char a.fkrq q,yyyymm to char add months sysdate,2 yyyymm and a....