1.排序問題spa
默認排序規則:按照物理存儲順序。
指定排序規則:order by關鍵字
位置:出如今select語句的最後邊。
語法:select ...
from ...
order by 字段 排序規則;
字段用來定義要根據哪一個字段進行排序。
排序規則:
1)升序排列 從小到大 ASC
2)降序排列 從大到小 DESC
例如:
查詢全部員工的id、salary
要求按照工資的降序排列?
select id,salary
from s_emp
order by salary desc;
指定多個排序規則:
select ...
from ....
order by 字段1 排序規則1,
字段2 排序規則2,
字段3 排序規則3.....;
例如:
查詢全部員工的id、salary
按照工資的降序和id的升序進行排列?
select id,salary
from s_emp
order by salary desc,id asc;
commission_pct 存在空值
空值的處理:
排序過程當中,空值視爲無限大。
在升序排列中,空值應該排在最後。
在降序排列中,空值應該排在最前。排序
2.限定性查詢/條件查詢
在查詢時要根據指定條件
篩除掉一部分不須要的數據。
關鍵字:where
位置:from子句後面
語法:select ...
from ...
where 判斷條件;
1)等值判斷和不等值判斷
字段值等於/不等於某個特定的值。
例如:
查詢id爲1的員工id、last_name、salary?
select id,last_name,salary
from s_emp
where id = 1;
查詢id不爲1的員工id、last_name、salary?
select id,last_name,salary
from s_emp
where id != 1;it
不等於:
寫法一:!=
寫法二:^=
寫法三:<>
空值判斷:
例如:
查詢員工表中全部不拿提成的員工
id、last_name、salary?
select id,last_name,salary
from s_emp
where commission_pct is null;io
查詢員工表中全部拿提成的員工
id、last_name、salary?
select id,last_name,salary
from s_emp
where commission_pct is not null;
2)範圍判斷
大於 >
小於 <
大於等於 >=
小於等於 <=
練習:
查詢全部工資高於1100元的員工id、
last_name、salary?
select id,last_name,salary
from s_emp
where salary > 1100;ast
查詢全部工資不低於1100元的員工id、
last_name、salary?
select id,last_name,salary
from s_emp
where salary >= 1100;
3)條件並列
a)邏輯與 and
使用and鏈接的全部條件必須同時知足
纔會被查詢出來。
b)邏輯或 or
使用or鏈接的全部條件只須要知足
其中一個,就會被查詢出來。select
練習:
查詢id在10之內而且工資高於1100元的
員工id、last_name、salary?
select id,last_name,salary
from s_emp
where id <= 10 and salary > 1100;語法
查詢41和42號部門全部員工的
id、last_name、dept_id?
select id,last_name,dept_id
from s_emp
where dept_id = 41 or dept_id = 42;數據
and的優先級大於or的優先級。查詢
查詢全部工資高於1100元而且任職在
41或42號部門的員工信息?
select id,last_name,dept_id
from s_emp
where salary > 1100
and (dept_id = 41 or dept_id = 42);
4)邏輯比較符
between 在給定的最小值和最大值範圍之間
語法:between 較小值 and 較大值
表明大於等於較小值和
小於等於較大值的結果會被查詢出來。
注意:必定要先寫較小值,再寫較大值。
select id,last_name
from s_emp
where salary>=1100 and salary<=1200;
等同於
where salary between 1100 and 1200;co
in 在給定的可選值中選一個
語法:where 字段值 in(值1,值2,值3...);
練習:
查詢id爲一、三、五、七、9的員工信息?
select id,salary,dept_id
from s_emp
where id = 1 or id = 3 or id =5
or id=7 or id=9;
select id,salary,dept_id
from s_emp
where id in(1,3,5,7,9);
查詢工資不在1100-1200範圍內的員工信息?
select id,last_name,salary
from s_emp
where salary not between 1100 and 1200;
等同於:
where salary>1200 and salary <1100;
查詢4一、42號部門之外的全部員工信息?
select id,last_name,dept_id
from s_emp
where dept_id!=41 and dept_id!=42;
select id,last_name,dept_id
from s_emp
where dept_id not in(41,42);
3.模糊查詢/關鍵字查詢
語法:where 字段值 like 模糊值;
通配符:
1)% 百分號表明任意數量任意字符
能夠沒有 能夠有一個 能夠有多個
2)_ 下劃線表明一個任意字符 --佔位符
有且只有一個任意字符
例如:
查詢全部last_name中包含'N'的員工信息?
select id,last_name
from s_emp
where last_name like '%N%';
查詢全部last_name第二位是'e'的員工信息?
select id,last_name
from s_emp
where last_name like '_e%';
例如:
先向s_emp表中插入一條數據:
insert into s_emp(id,last_name)
values(999,'_briup');
commit;
查詢員工表中last_name以'_'下劃線開頭的用戶信息?
select id,last_name
from s_emp
where last_name like '_%';
字符轉義:
1)在要轉義的字符前面加上一個標識字符
標識字符能夠是任意字符。
2)使用escape關鍵字聲明哪個字符是標識字符 select id,last_name from s_emp where last_name like 'a_%' escape 'a'; select id,last_name from s_emp where last_name like '/_%' escape '/';