DBA基礎課程:oracle基礎查詢語句和數據排序
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢dba基礎課程: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');

附:如果想查找數據不在所給的元素中?梢灾苯釉趇n前面加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;
