1. 程式人生 > >java程式設計師菜鳥進階(二)oracle基礎詳解(二)oracle查詢語句和資料排序

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 andinlike限制條件

例句:Select * from emp where sal>=2000;

2.使用between and 比較

Select * from emp where sal between 2000 and 3000;


獲得工作在20003000之間的所有資料。

值得注意

1.between and 也可以用於時間的比較。此時時間要用單引號。

2.如果想查詢不在某一區間的資料。直接在between前面加not就可以

3.使用in比較符

查詢工作為salemanclerkmanager的人

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; 


------------------------------------------------------------------------------------------------------------