--having 對分組進行限制, --查詢按部門分組統(tǒng)計平均工資大于2000的部門 selectround(avg(sal),2),deptno from emp groupby deptno havingavg(sal) >2000 --子查詢,在一個查詢中包含另一個查詢 --查詢員工工資大于所有員工平均工資的員工 select ename,sal from emp where sal > (selectavg(sal) from emp) --查詢各部門中工資最高的員工 select A.ename,A.sal,A.Deptno from emp A join (selectmax(sal) maxsal,deptno from emp groupby 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 (selectmax(sal) maxsal,deptno from emp groupby 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 leftjoin emp B on A.mgr=B.empno --右連接,即當左邊表沒有與右邊表匹配的時候,顯示右表的全部數據 select A.empno,A.ename, B.dname from emp A rightjoin dept B on A.deptno=B.deptno --求所有員工的平均薪水等級 selectavg(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(selectdistinct mgr from emp) --比普通員工薪水還要高的經理人 select ename from emp where empno in (selectdistinct mgr from emp where mgr isnotnull) and sal > (selectmax(sal) from emp where empno notin (selectdistinct mgr from emp where mgr isnotnull)--所有經理人的編號 ) --比較效率 select*from emp where deptno=10and ename like'%A%'; --第一條高于第二條,當第一個條件不合適的時候就不用去核對第二個條件,而第一個條件較小所以會快些 select*from emp where ename like'%A%'and deptno=10
--創(chuàng)建表語句 create orcal常用的類型有 非空約束:NOTNULL 唯一約束:UNIQUE 主鍵約束:PRIMARYKEY 外建約束:REFERENCES 外鍵約束被參考字段必須為主鍵 如: CREATETABLE CLASS(ID NUMBER(8) PRIMARYKEY,NAME VARCHAR2(20) NOTNULL) CREATETABLE STUDENT ( ID NUMBER(8) PRIMARYKEY, CLASS NUMBER(8) NOTNULLREFERENCES CLASS(ID),--增加了一個外鍵約束,關鏈CLASS表的ID NAME VARCHAR2(20) NOTNULL ) 也可以這樣寫 CREATETABLE STUDENT ( ID NUMBER(8) NOTNULL, CLASS NUMBER(8) NOTNULL, NAME VARCHAR2(20) NOTNULL, CONSTRAINT S_ID_PK PRIMARYKEY(ID), CONSTRAINT S_C_RE FOREIGNKEY (CLASS) REFERENCES CLASS(ID) ) 明天需要弄清楚的事: 如何在WEBLOGIC9上建立數據源 在建表時跟在字段后的約束為字段級約束,建完字段后使用CONSTRAINT建立的約束為表 級約束,可以給約束創(chuàng)建約束名。 CONSTRAINT 增加表級約束 如:增加約束,不能同時出現NAME,ADDRESS,AGE相同的數據 CREATETABLE TEST ( NAME VARCHAR2(20) NOTNULL, 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