1、Order by 子句的使用
select column....
from ....
order by ...
1) Order by子句在整個
select語句中的位置:
始終位於最后
2) order by后可以跟什么:
列名,列的別名,表達式,
列出現在select關鍵字后的
順序(列號);
3) order by后可以跟多列,
表示先按第一列排序,
如第一列有相同值再按
第二列進行排序,如前二列
均有相同值,則按第三列進行排序...
4) ASC表升序,可以省略.
DESC表降序。
5)空值永遠是最大的。
升序排序的時候,空值放在最后
降序排序的時候,空值放在最前面的
note: 出現在order by子句之后的列,不一定出現在select子句中。
2、Where子句的使用
語法:
select col_name,...
from tb_name
where col_name 比較操作表達式
邏輯操作符
col_name 比較操作表達式
1) 作用:對SQL語句返回的數據集進行篩選;
2) 位置:緊跟在from子句后
3) 內容:由一至多個限定條件組成,限定條件由表達式, 比較符, 字面值組成。
4) 所有字符串和日期要用單引號括起來,數值不需要單引號。
日期在Oracle里有特定的格式,’DD-MON-YY’(具體看日期的顯示格式),
否則作為一個字符串。
5) 幾種常見的操作符:
1》邏輯比較操作符
= > < >= <= != <> ^=
需求:查找工資大於1000的所有員工的last_name和工資。
需求:查找不在45號部門工作的所有員工的id,last_name和dept_id,並且按照dept_id 升序進行排序
select id,last_name,dept_id
from s_emp
where dept_id<>45
order by dept_id;
2》sql比較操作符
between and:在什么范圍之內
in(list):在一個列表中
like:模糊查詢,即值不是精確的值的時候使用
通配符,即可以代替任何內容的符號
%:通配0到多個字符
_: 當且僅當通配一個字符
轉義字符:
默認為\,可以指定 指定的時候用escape 符號指明即可,轉義字符只能轉義后面的一個字符
between 1 and 4: 包括起止值。限定內容為1到4。
in (1,2,4): 限定內容為1,2,4。
is null:對null值操作特定義的操作符,不能使用=
3》邏輯操作符
當條件有多個的時候使用
and:且邏輯
or:或邏輯
注意:and邏輯比or邏輯要高
not:非邏輯
4)
需求:
1.查找員工id在[5,20]之間的所有員工的id和last_name
select id,last_name
from s_emp
where id between 5 and 20;
or
select id,last_name
from s_emp
where id >=5 and id<=20;
2.查找員工id不在[5,20]之間的所有員工的id和last_name
select id,last_name
from s_emp
where id not between 5 and 20;
or
select id,last_name
from s_emp
where id <5 or id > 20;
3.查找在43或者44號部門的員工的id和last_name;
select id,last_name
from s_emp
where dept_id in(43,44);
or
select id,last_name
from s_emp
where dept_id = 43 or dept_id = 44;
需求:查看員工名字以C字母開頭的員工的id,工資。
練習:查看員工名字長度不小於5,且第四個字母為n字母的員工id和工資
需求:查看員工名字中包換一個_的員工id和工資
需求:查看員工提成為為空的員工的id和名字
select id,last_name,commission_pct
from s_emp
where commission_pct is null;
3.邏輯操作符
當條件有多個的時候使用
and:且邏輯
or:或邏輯
注意:and邏輯比or邏輯要高
not:非邏輯
需求:查看員工部門id為41且職位名稱為Stock Clerk(存庫管理員)的員工id和名字
select id,last_name,dept_id,title
from s_emp
where dept_id = 41
and
title = 'Stock Clerk';
練習:查看員工部門為41 或者 44號部門 且工資大於1000的員工id和名字
select id,last_name,dept_id,title
from s_emp
where salary > 1000
and
(dept_id = 41
or
dept_id = 44);
查看員工部門為41且工資大於1000 或者 44號部門的員工id和名字
select id,last_name,dept_id,title
from s_emp
where salary > 1000
and
dept_id = 41
or
dept_id = 44;