java程式設計師菜鳥進階(二)oracle基礎詳解(二)oracle查詢語句和資料排序
本文所以練習都是基於oracle自帶提供的一個數據庫進行的。資料庫中包含員工表emp。部門資訊表dept。員工工資工總表
下面是三個表的表結構:
一:基本查詢語句
1.最簡單的查詢所有列語句
Select * from emp;
2.查詢指定列表的查詢語句
Select empno ,ename,sal from emp;
注意:oracle預設的字元型和日期型資料是左對齊。而數字資料是右對齊
3.帶有簡單算術運算子的簡單查詢:
Select empno ,ename,sal +500 from emp;
注意:oracle中簡單運算子的優先順序:
1)先乘除,後加減
2)同一優先順序次序是從左到右
3)如使用了括號。先運算括號內
4.在sql語句中使用列的別名
Select empno as "num" ,ename name ,(sal +500)*12 "annual salary" from emp;
從上面sql語句我們可以看出。只需在列名和別名之間放上 as或者空格就可以把列名改為別名。字串別名需要加上雙引號。
5.連線運算子
Select ename || "每年的工資為" || (sal +500)*12 "annual salary" from emp;
Oracle中的連線符是由兩個豎線(||),用於把一個或多個列或字串連線在一起。
6.去重運算子distinct
Select deptno from emp;
Select distinct deptno from emp;
從上面可以看出。查詢員工表中所有員工的部門號。在第一個查詢語句中。沒有用distinct去重。第二個用到distinct去重之後。所有部門號相同的資料都去掉了
二.限制性查詢和資料排序
1.where關鍵字。其後跟限制性條件。條件由列名、字串和一些比較預算附等組成。
條件格式:表示式 opera 表示式
這裡的opera可為:>,>=,<,<=,=,<>(或),!=
除了這些oracle還提供了between and、in和like限制條件
例句:Select * from emp where sal>=2000;
2.使用between and 比較
Select * from emp where sal between 2000 and 3000;
獲得工作在2000和3000之間的所有資料。
值得注意
1.between and 也可以用於時間的比較。此時時間要用單引號。
2.如果想查詢不在某一區間的資料。直接在between前面加not就可以
3.使用in比較符
查詢工作為saleman、clerk和manager的人
Select * from emp where job in
('SALESMAN','CLERK','MANAGER');
附:如果想查詢資料不在所給的元素中。可以直接在in前面加not
4.使用like比較符
Select * from emp where job like 'SA%';
上訴例子指的就是查詢工作名以SA開頭的所有員工資訊。
“%”表示0個或多個字元
“-" 表示一個且只能是一個字元
注意:這裡有一點要注意的是。Where後面的 查詢條件中的值中字串是區分大小寫的。筆者在剛才做實驗的時候。把SA寫成sa。一直不出結果。所以請大家注意這一點。
5.轉移字元:”\“
6.Order by子句
Select * from emp where job like 'SA%' order by sal;
由上面我們可以發現。我們查詢到的結果按工資從小到大排好了順序。Oracle查詢資料中如果用到order by進行排序的話。預設的排序為(ASC)升序。如果想要降序的話用DESC
注意:
1.如果查詢中不使用order by。結果次序不確定。即兩次查詢。次序可能不一樣
2.如果使用了order by 子句。其一定是sql語句中的最後一個子句
7.order by 子句中使用別名或表示式。
Select ename ,(500+sal)*12 annualsal from emp where job like 'SA%' order by annualsal;
Oracle進行排序時可以用別名作為排序列。也可以用表示式、
注:
1.oracle也可以用列號作為排序的規則。但是這種情況很少用。因為用列號排序不太明確
2.Oracle中排序也可以用多列作為排序標準,中間用逗號隔開。
Select ename ,(500+sal)*12 annualsal from emp where job like 'SA%' order by annualsal , ename;
------------------------------------------------------------------------------------------------------------