Orcla 資料庫複習2,orcla資料庫複習

來源:互聯網
上載者:User

Orcla 資料庫複習2,orcla資料庫複習
 子查詢和表串連
 ①.查詢掙錢最多的人的名字
 SELECT ename,sal FROM emp
 WHERE sal=(SELECT MAX(sal) FROM emp);
 ②.查詢有哪些人的工資位於所有人的平均工資之上
 SELECT ename,sal FROM emp
 WHERE sal > (SELECT AVG(sal) FROM emp);
 ③.求部門中哪些人的薪水最高:
 SELECT ename,sal FROM emp
 JOIN (SELECT MAX(sal) max_sal,deptno FROM emp GROUP BY deptno) t
 ON emp.sal =t.max_sal AND emp.deptno = t.deptno;
④.求出員工的名字和他的經理人姓名
  SELECT  e1.ename, e2.ename FROM
  emp e1 JOIN emp e2
  ON e1.mgr = e2.empno;
 ⑤.查詢出每個人的薪水等級
  SELECT ename,grade FROM emp e JOIN salgrade s
  ON  (e.sal BETWEEN s.losal AND s.hisal);
 ⑥查詢出每個人的部門名稱和薪水等級
 SELECT ename,dname,grade FROM
 emp e JOIN dept d ON (e.deptno =d.deptno)
 JOIN salgrade s ON (e.sal BETWEEN s.losal AND s.hisal)
 ⑦(左外串連) 查詢出僱員的名字和他經理人的名字
 SELECT e1.ename, e2.ename FROM
 emp e1 LEFT JOIN emp e2
 ON e1.mgr = e2.empno;
⑧(右外串連) 查詢出所有僱員的部門名稱
 SELECT ename ,dname FROM
 emp e RIGHT JOIN dept d
 ON e.deptno = d.deptno;
 ⑨(全外串連) 查詢出所有僱員的部門名稱
 SELECT ename ,dname FROM
 emp e FULL JOIN dept d
 ON e.deptno = d.deptno;
 ⑩求部門平均薪水的等級
 SELECT deptno,avg_sal,grade FROM
 (SELECT deptno,AVG(sal) avg_sal FROM emp GROUP BY deptno) t
 JOIN salgrade s
 ON t.avg_sal BETWEEN s.losal AND s.hisal;
--求部門平均的薪水等級
  SELECT deptno,AVG(grade) FROM
 (SELECT deptno,ename,grade FROM emp JOIN salgrade s ON
  emp.sal BETWEEN s.losal AND s.hisal) t
  GROUP BY deptno;
--求僱員中哪些人是經理人
 SELECT  ename FROM emp
 WHERE  empno  in(SELECT DISTINCT mgr FROM emp);
--不準用組函數,求薪水的最高值
  SELECT sal FROM emp WHERE sal NOT IN
 (SELECT DISTINCT  e1.sal FROM emp e1  JOIN  emp e2
 ON e1.sal< e2.sal);
--平均薪水最高的部門的部門編號
SELECT deptno ,avg_sal FROM
( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno);
WHERE avg_sal =
(SELECT MAX(avg_sal) FROM
( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno));
--平均薪水最高的部門的部門名稱
SELECT dname FROM dept WHERE deptno =
(SELECT deptno  FROM
        ( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno)
 WHERE avg_sal =
(SELECT MAX(avg_sal) FROM
        ( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno)
  )
);

--求平均薪水的等級最低的部門的部門名稱
SELECT dept.dname,t1.deptno,grade,avg_sal FROM
(
SELECT deptno,grade,avg_sal FROM
(SELECT AVG(sal) avg_sal, deptno FROM emp GROUP BY deptno) t JOIN salgrade s
ON t.avg_sal BETWEEN s.losal AND s.hisal
) t1
JOIN dept ON (t1.deptno = dept.deptno)
WHERE t1.grade =
(SELECT MIN(grade) FROM
(SELECT deptno,grade,avg_sal FROM
(SELECT AVG(sal) avg_sal, deptno FROM emp GROUP BY deptno) t JOIN salgrade s
ON t.avg_sal BETWEEN s.losal AND s.hisal))

--求部門經理人平均薪水最低的部門名稱


--求比普通員工的最高薪水還要高的經理人名稱
  SELECT ename  FROM emp WHERE
  empno IN (SELECT DISTINCT mgr FROM emp WHERE mgr IS NOT NULL)
  AND sal >
(SELECT max(sal) FROM  emp WHERE empno NOT  IN
(SELECT DISTINCT mgr FROM emp WHERE mgr IS NOT NULL))

--求薪水最高的前5名僱員
SELECT ename,sal
FROM (
SELECT ename,sal FROM emp ORDER BY sal DESC
)
WHERE ROWNUM <=5;
--求薪水最高的第6到第10名僱員
SELECT ename,sal FROM(
SELECT ename,sal, ROWNUM r FROM(
SELECT ename,sal FROM emp ORDER BY sal DESC)
)

WHERE r>=6 AND r<=10;


注:查詢語句是自己看馬士兵的視頻敲出來的



2級資料庫

二級考試,你可以在其中任選一個作為你考試的主攻方向。其中,最實用的要屬Java,和Access。Java可以說是目前最火的軟體,如果你想繼續深造的話,這是最佳選擇,Access,是一款非常實用的軟體,無論你是將來從事哪一個行業,資料庫管理,都在資料彙編,整理,處理方面幫你的大忙。大大地提高你的辦事效率。至於其它的什麼VB,VF什麼的,也不是說沒有什麼用,只是這些東西,屬於已經淘汰的軟體,現在可以說已經沒有什麼實際的用處了,如果說學習那也只是為了過級而已,為了有一個二級證罷了。如果你要混認證的話考foxpro,最簡單。書的話,直接看教材就好,因為那是最權威的。
 
怎同時讀取2個資料庫的資料

兩個資料庫讀出好寫,在ASP裡面用下面的SQL語句即可:
select 庫1.name_left + 庫2.name_right as name from 庫1, 庫2

但是你說的name是否已經存在是從那個庫裡面判斷的?假設有個庫3,欄位為people,那麼上面的話應該是:
select 庫1.name_left + 庫2.name_right as name from 庫1, 庫2, 庫3 where name = 庫3.people
如果運行有記錄,表示存在於庫3
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.