oracle常用的查詢語句

查詢時,select語句不區分大小寫,但是查詢的內容區分大小寫。


set timing on;               //顯示操作的時間

select count(*) from 表名;               //顯示查的這張表有多少行

insert into 表名(字段名,字段名,....) select * from 表名;                    //自我複製記錄,這樣的話就可以瘋狂複製了。

select distinct 字段名,字段名,....from 表名;        // 查詢時,把重複的記錄過濾掉

select sal*12 from emp;                       //查一年的工資

select sal*12 '年工資', ename from emp;               //給字段名起別名


如何查找1982.1.1後入職的員工?


如何顯示工資在2000到3000之間的員工情況



如何使用 like 操作符:

%:表示任意0到多個字符   _:表示任意單個字符

?如何顯示首字符爲 S 的員工姓名和工資


如何顯示第三個字符爲 O 的所有員工姓名和工資



在where條件中使用 in

如何顯示empno 爲7844,345,234的僱員情況



使用 is null 的操作符

如何顯示沒有上級的僱員情況,也就是要查MGR爲空的那個人。


不要這樣寫,統統不行:

select * from emp where mgr = null;

select * from emp where mgr = ' ';

使用邏輯操作符號

查詢工資高於 500或是崗位爲MANAGER的僱員,同時還要滿足他們的姓名的首寫字母爲大寫 J 



使用 order by 子句,order by 就是按照什麼什麼來排序,默認從低到高 。

如何按照工資從低到高的順序顯示僱員的信息

select * from emp order by sal; = select * from emp order sal asc;


如果想從高到低來排序,則這樣寫: select * from emp order by sal desc;

按照部門號升序而僱員的工資降序排列:

select * from emp order by deptno , sal desc;


使用列的別名來排序


別名需要用雙引號來圈中。


在實際應用中經常需要執行復雜的數據統計,經常需要顯示多張表的數據

數據分組:max , min , avg  , sum  , count ;

顯示所有員工中最高工資和最低工資:

把最高工資的那個人,並把他的工資顯示出來:


顯示工資高於平均工資的員工信息,也就是要用到子查詢咯:



group by 和 having 子句

group by 用於對查詢的結果分組統計

having 子句用於限制分組顯示結果

顯示每個部門的平均工資和最高工資


顯示每個部門的每種崗位的最高工資和平均工資


顯示平均工資高於2000的部門號和它的平均工資:



對數組分組的總結:

1、分組函數只能出現在選擇列表,having,order by中。

2、如果 在select語句中同時出現包含有 group by,having,order by ,那麼他們的順序是  group by,having,order by 。

3、在選擇列中如果有列,表達式和分組函數 ,那麼這些列和表達式必須有一個出現在group by 子句中,否則就會出錯。

例如: select max(sal) , avg(sal) , deptno from emp group by deptno having avg(sal)<2000;這裏deptno就一定要出現在 group by 中!


多表查詢 
說明
多表查詢是指基於兩個和兩個以上的表或是視圖的查詢。在實際應用中,查詢單個表可能不能滿足你的需求,(如顯示sales部門位置和其員工的姓名),這種情況下需要使用到(dept表和emp表) 

問題:顯示僱員名,僱員工資及所在部門的名字【笛卡爾集】? 
規定:多表查詢的條件是至少不能少於表的個數-1 才能排除笛卡爾集 ,例如這裏 下圖的deptno 就是這兩張表的一個條件。


顯示各個員工的姓名,工資,及其工資的級別:


自連接

自連接指的是在同一張表的連接查詢


什麼是子查詢?

子查詢是指嵌套在其他sql語句中的select語句,也叫嵌套查詢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章