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....