第二章:排序、限制查詢行
一、order by子句
1.order by排序規則
(1)asc,升序排列,默認取值
(2)desc,降序排列
(3)order by是select命令的最后一個子句
select last_name,salary,dept_id
from s_emp
order by salary;
select last_name,salary,dept_id
from s_emp
order by salary asc;
select last_name,salary,dept_id
from s_emp
order by salary desc;
2.order by中null值處理
(1)升序中,放最后
(2)降序中,放最前
select last_name,title,commission_pct
from s_emp
order by commission_pct;
3.order by后可跟內容
(1)列名
(2)列的別名
(3)數字:select列表項的位置
select last_name name,salary
from s_emp
order by name;
select last_name,salary*12
from s_emp
order by 2;
4.order by后跟多個列
(1)先按第一個列排序,內容相同的,再按照第二個列排...
(2)asc、desc只修飾一個列
select last_name,dept_id,salary
from s_emp
order by dept_id,salary desc;
等價
select last_name,dept_id,salary
from s_emp
order by dept_id asc,salary desc;
二、where子句
1.限制取出記錄數
(1)where比較中的字符串常量嚴格區別大小寫
select last_name,salary,dept_id
from s_emp
where dept_id=42;
SELECT LAST_NAME,SALARY,DEPT_ID
FROM S_EMP
WHERE DEPT_ID=42;
select last_name,salary,dept_id
from s_emp
where last_name='smith';
2.where中的操作符
(1)between...and...:閉區間;先跟小值,再跟大值
select last_name,salary
from s_emp
where salary between 940 and 1100;
select last_name,salary
from s_emp
where salary between 1100 and 940;
(2)in:從給定的列表范圍內匹配值
select last_name,salary,dept_id
from s_emp
where dept_id in(41,43,45);
(3)like:模糊查詢
通配符:
%代表0或多個字符
_代表單一字符
select last_name,salary
from s_emp
where last_name like 'M%';
escape自定義轉義字符,可以讓統配符失去特殊意義,變成普通字符
查出名字以_a開始的?
select last_name,salary
from s_emp
where last_name like '\_a%' escape '\';
(4)is null:空值判斷
空值不能用等號進行比較
*select last_name,salary,title,commission_pct
from s_emp
where commission_pct is null;
(5)多條件查詢
and:多個條件必須同時滿足
or:多個條件選一個
and的優先級比or高
select last_name,salary,dept_id
from s_emp
where salary>=1000
and dept_id=44
or dept_id=42;
等價
select last_name,salary,dept_id
from s_emp
where (salary>=1000
and dept_id=44)
or dept_id=42;