第三章
1.排序問題
預設排序規則:按照物理儲存順序。
指定排序規則: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;
不等於:
寫法一:!=
寫法二:^=
寫法三:<>
空值判斷:
例如:查詢員工表中所有不拿提成的員工
id、last_name、salary?
select id,last_name,salary
from s_emp
where commission_pct is null;
查詢員工表中所有拿提成的員工
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;
查詢所有工資不低於1100元的員工id、
last_name、salary?
select id,last_name,salary
from s_emp
where salary >= 1100;
3)條件並列
a)邏輯與 and
使用and連線的所有條件必須同時滿足
才會被查詢出來。
b)邏輯或 or
使用or連線的所有條件只需要滿足
其中乙個,就會被查詢出來。
練習:查詢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;
in 在給定的可選值中選乙個
語法:where 字段值 in(值1,值2,值3...);
練習:查詢id為1、3、5、7、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;
查詢41、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 '/';
排序查詢,模糊查詢
排序查詢 根據歌手名下的歌曲數量,對歌手進行降序排序 建立兩個模型 建立歌手模型 class songer models.model name models.charfield max length 50 models.charfield max length 20 img models.image...
SQL模糊查詢排序問題
drop table if exists t user create table t user id varchar 20 not null,name varchar 20 default null,password varchar 20 default null,primary key id en...
模糊查詢和排序查詢
1.表示任意一位字元 2.表示任意位數的任意字元 3.要實現模糊查詢需要使用到關鍵字 like 基本語法 3 select 1 from 資料 2 where 模糊查詢的字段 like 模糊查詢的關鍵字 注意 模糊查詢要在where字句中使用。查詢姓名是以a開頭的雇員資訊select from em...