show-sales.com

          awed

           

          oralce學習筆記2

          08-4-17下午和晚上
          --having 對分組進行限制,
          --
          查詢按部門分組統(tǒng)計平均工資大于2000的部門
          select round(avg(sal),2),deptno from emp group by deptno having avg(sal) >2000

          --子查詢,在一個查詢中包含另一個查詢

          --查詢員工工資大于所有員工平均工資的員工
          select ename,sal from emp where sal > (select avg(sal) from emp)

          --查詢各部門中工資最高的員工
          select A.ename,A.sal,A.Deptno from emp A
            
          join
                (
          select max(sal) maxsal,deptno from emp group by deptno) B
            
          on (A.Deptno=B.deptno and A.sal=B.maxsal)

          --查詢各部門中工資最高的員工,和其工資等級
          select C.ename,C.sal,D.grade,C.Deptno from salgrade D 
          join
            (
          select A.ename,A.sal,A.Deptno from emp A
            
          join
                (
          select max(sal) maxsal,deptno from emp group by deptno) B
            
          on (A.Deptno=B.deptno and A.sal=B.maxsal)) C
          on (C.sal between D.LOSAL and D.HISAL)

          --查詢員工的名稱,工資及工資等級
          select ename,sal, grade from emp A, salgrade B where (A.Sal between B.losal and B.hisal)

          --查詢所有員工的名稱和其經理的名稱
          select A.empno,A.ename, B.ename as marname from emp A,emp B where A.mgr=B.empno

          --查詢員工的姓名和其所在部門的名稱
          select ename,dname from emp a,dept b where a.deptno=b.deptno
          select ename,dname from emp a join dept b on a.deptno=b.deptno

          --左連接,即當左邊表沒有與右邊表匹配的時候,顯示左表的全部數據
          select A.empno,A.ename, B.ename as marname from emp A
          left join emp B on A.mgr=B.empno

          --右連接,即當左邊表沒有與右邊表匹配的時候,顯示右表的全部數據
          select A.empno,A.ename, B.dname from emp A
          right join dept B on A.deptno=B.deptno

          --求所有員工的平均薪水等級
          select avg(C.grade) from
            (
          select A.Empno,A.Ename,A.Sal,A.Deptno,B.grade from emp A
            
          join salgrade B on A.Sal between B.losal and B.hisal) C

          --查詢所有員工中,為經理人的名稱
          select ename from emp where empno in(select distinct mgr from emp)


          --比普通員工薪水還要高的經理人
          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)--所有經理人的編號 
                   )      
                     
          --比較效率  
                   
                     
                     
          select * from emp where deptno=10 and ename like '%A%';
                    
          --第一條高于第二條,當第一個條件不合適的時候就不用去核對第二個條件,而第一個條件較小所以會快些
                      
                     
          select * from emp where ename like '%A%' and deptno=10
                     
          --創(chuàng)建表語句 create
          orcal常用的類型有

          非空約束:
          NOT NULL
          唯一約束:
          UNIQUE
          主鍵約束:
          PRIMARY KEY
          外建約束:
          REFERENCES 外鍵約束被參考字段必須為主鍵
          如:
          CREATE TABLE CLASS(ID NUMBER(8PRIMARY KEY,NAME VARCHAR2(20NOT NULL)
          CREATE TABLE STUDENT (
              ID 
          NUMBER(8PRIMARY KEY,
              CLASS 
          NUMBER(8NOT NULL REFERENCES CLASS(ID),--增加了一個外鍵約束,關鏈CLASS表的ID
              NAME VARCHAR2(20NOT NULL
          )
          也可以這樣寫
          CREATE TABLE STUDENT (
              ID 
          NUMBER(8NOT NULL,
              CLASS 
          NUMBER(8NOT NULL
              NAME 
          VARCHAR2(20NOT NULL
              
          CONSTRAINT S_ID_PK PRIMARY KEY(ID),
              
          CONSTRAINT S_C_RE FOREIGN KEY (CLASS) REFERENCES CLASS(ID)
          )

          明天需要弄清楚的事:
          如何在WEBLOGIC9上建立數據源

          在建表時跟在字段后的約束為字段級約束,建完字段后使用CONSTRAINT建立的約束為表
          級約束,可以給約束創(chuàng)建約束名。

          CONSTRAINT 增加表級約束

          如:增加約束,不能同時出現NAME,ADDRESS,AGE相同的數據
              
          CREATE TABLE TEST (
                  NAME 
          VARCHAR2(20NOT NULL,
                  ADDRESS 
          VARCHAR2(128),
                  AGE 
          NUMBER(2),
                  
          CONSTRAINT NAME_ADD_AGE_UNI QNIQUE (NAME,ADDRESS,AGE) 
              )

             

          posted on 2008-04-18 10:02 一鳴 閱讀(1127) 評論(0)  編輯  收藏 所屬分類: SQL


          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          導航

          統(tǒng)計

          公告


          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 扎鲁特旗| 弥勒县| 离岛区| 瑞金市| 昔阳县| 清新县| 沙田区| 武汉市| 雅江县| 永胜县| 潞西市| 外汇| 博客| 福贡县| 宜宾县| 潮安县| 龙南县| 绥芬河市| 射阳县| 奉化市| 满洲里市| 莎车县| 林周县| 沂源县| 特克斯县| 抚松县| 西安市| 绥德县| 宜丰县| 长岭县| 冕宁县| 体育| 德安县| 汶川县| 微博| 额尔古纳市| 武乡县| 东乌珠穆沁旗| 河源市| 内江市| 台北县|