MySql(四)Select條件查詢

2021-09-24 04:47:30 字數 3396 閱讀 9408

select條件查詢的格式如下:

select

查詢列表

from    

表名where

篩選條件;

根據篩選條件可以分為以下幾類:

1.按照條件按表示式進行篩選

常用條件運算子如下:> 、<、=、!=、<>、<=、>=

2.按照邏輯表示式進行篩選

​     邏輯運算子的主要作用:用於連線條件表示式

& 、 || 、!    、and、or、not

3.模糊查詢

like、between and 、in、is null

①:%:代表任意多個字元

②:_:代表任意單個字元

舉個栗子:

/**查詢員工工資大於10000的員工資訊**/

select * from employees where salary > 1000;

/**查詢部門標號不等於90號的員工名和部門編號 **/

select name,department_id from employees where department_id <> 90;

/**查詢工資在1000-2000之間的員工名,工資 **/

select name,salary from employees where salary >= 1000 and salary <=2000;

/**查詢部門編號不再20-40之間或者工資高於15000員工資訊 **/

select * from employees where department_id < 20

like:

/**查詢員工名中包含a的員工資訊**/

select * from employeess where last_name like '%a%';

/**查詢員工名中第三個字元為n,第五個字元為m的員工資訊 **/

select * from employees where last_name like '__n_m%';

/**查詢員工名中第二個字元_的員工資訊**/

/**方法一:使用轉義字元"\"**/

select * from employees where last_name like '_\_%';

/**方法二:自定義轉義字元**/

select * from employees where last_name like '_$_%' escape '$';

between and 、in

/**查詢員工工資在1000-2000之間的員工資訊(包含臨界值)**/

select * from employees where salary between 1000 and 2000;

/**查詢員工工種編號為it_prog、ad_vp、ad_pres中的乙個員工名和工種編號**/

/**方法一:**/

select job_id,last_name from employees 

where job_id ='it_prog' or 

job_id ='ad_vp' or 

job_id ='ad_pres' ;

/**方法二:**/

select job_id,last_name from employeess

where job_id in ('it_prog','ad_vp','ad_pres');

in關鍵字的特點:

1.判斷某字段的值是否屬於in列表項中的某一項

2.in列表中的值都是統一型別或者相互相容(即可以相互轉換)

is null

/**查詢員工沒有獎金的員工名和獎金率**/

select last_name,commission_pct 

from employeess 

where commission_pct is null;

/**查詢員工有獎金的員工名和獎金率**/

select last_name,commission_pct 

from employeess 

where commission_pct is not null;

安全等於 <=>

/**查詢員工工資等於10000的員工資訊**/

select * from employees where salary <=> 1000;

/**查詢員工沒有獎金的員工名和獎金率**/

select last_name,commission_pct 

from employeess 

where commission_pct <=>  null;

正常數值的判斷null判斷可讀性

安全等於 <=>

可以判斷

可以判斷

低is null

不可以判斷

可以判斷

/**查詢員工號為124的員工名和部門號以及年薪**/

select 

last_name,

department_id,

slary*12(1+ifnull(comission_pct,0)) as 年薪

from employees

where department_id = 124;

/**查詢employeess表中都涉及到了哪些部門編號**/

select distinct department_id from employees ;

思考題:

/**語句1:**/

select * from employees;

/**語句2:**/

select * from emplooyees

where comission_pct like '%%' and last_name like'%%';

/**語句3:**/

select * from emplooyees

where comission_pct like '%%' or last_name like'%%';

問題1:語句1和語句2查詢結果是否相同?

> 不相同,如果comission_id為null(即沒有沒有任何字元)是查詢不出來的;

> 當comission_id不可能為null時,兩者的查詢結果是相同的

問題2:語句1和語句3查詢結果是否相同

> 相同,因為last_name不可能為null值,此時即使comission_id為null也會被查詢出來。

Mysql讓select也帶上條件進行查詢

在日常生活在我們會遇到這種問題 例如我們有乙個訂單表,你想把所有的訂單進行輸出,但是有的訂單是退款訂單,有的訂單是正常訂單,而且你要把同一家公司的正常訂單的金額彙總,如果使用where判斷訂單的狀態的話,在所有訂單裡面就無法輸出退款過的訂單了,那麼就輪到我們的case when then end出場...

Mysql之SQL語句 select聯表查詢

1.連表查詢 現有表1 student 列1 d 列2 name 和 表2 score 列1 id 列2 fraction select student.name,score.fraction from student,score where student.id 1 and score.id 1 ...

SpringbootDataJpa條件查詢和分頁

public queryresponseresult findallpage int page,int size,requestdata requestdata 自定義條件查詢 定義條件匹配器 examplematcher examplematcher examplematcher.matching...