1. 程式人生 > >mysql必知必會-簡單查詢-2

mysql必知必會-簡單查詢-2

簡單查詢

過濾資料

  • 使用where子句

資料庫一般很少需要檢索表中所有的行,通常只會根據特定的需求提取表資料的子集,而檢索表中所需的特定資料則需要指定搜尋條件(也稱為過濾條件)。

在select語句中,資料根據where子句中指定的搜尋條件進行過濾,where子句在表名(from子句)之後給出,基本結構如下:

select 欄位名 from 表名 where 欄位名=特殊值;

備註:在同時使用order by 和 where 子句時,應該讓order by 位於where之後,否則會產生錯誤

  • where子句操作符
操作符 說明
= 等於
<> 不等於
!= 不等於
< 小於
<= 小於等於
> 大於
>= 大於等於
between 在指定的兩個值之間
  • 檢索單個值
select prodouct_name  
from products
where prodouct_id = 1;
#檢索產品編號為1的產品名稱
select prodouct_name,prodouct_price  
from products
where prodouct_price > 10;
#檢索產品價格大於10的產品名稱
  • 不匹配檢查
select vend_id,prodouct_name
from products
where vend_id <> 1003;
#檢索vend_id不是1003的產品名稱

另一種等價搜尋方法

select vend_id,prodouct_name
from products
where vend_id != 1003;
#檢索vend_id不是1003的產品名稱
  • 範圍值檢查

為了檢查某個範圍的值,可以使用between操作符
基本格式:

select 欄位名 from 表名 where 欄位名 between 值1 and 值2;

select prodouct_name,product_price
from products
where product_price between 10 and 30;
#檢索價格處於10到30之間的所有產品
  • 空值檢查

select語句使用一個特殊的where子句來檢查某欄位是否具有null值

select 欄位名 from 表名 where 欄位名 is null;

資料過濾

  • 組合where子句

前面介紹的都是單一條件過濾,本部分將介紹如何使用and子句或者or子句的方式來實現多條件過濾

  • and操作符
select prodouct_name,prodouct_price  
from products
where prodouct_price > 10 and vend_id = 3;
#檢索vend_id=1003且價格大於10的產品名稱
  • or操作符
select prodouct_name,prodouct_price  
from products
where prodouct_price > 10 or vend_id = 3;
#檢索vend_id=1003或者價格大於10的產品名稱
  • 計算次序

and的優先順序要高於or

select prodouct_name,prodouct_price  
from products
where  vend_id = 2 or vend_id = 3 and  prodouct_price > 10;
#系統是預設先執行and 後執行or的 因此本次操作的條件邏輯會是vend_id等於2的任何產品 或者 vend_id等於3且大於10的產品
# vend_id = 2 or (vend_id = 3 and  prodouct_price > 10)

如果需要選擇的是vend_id = 2 or vend_id = 3的產品中 價格大於10的產品 則需要使用括號來改變執行順序

select prodouct_name,prodouct_price  
from products
where ( vend_id = 2 or vend_id = 3) and  prodouct_price > 10;
  • in操作符

圓括號在where子句中還有另一種用法,in操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配。in取合法值的由逗號分隔的清單,全都括在圓括號內

elect prodouct_name,prodouct_price  
from products
where vend_id in( 2,3) and  prodouct_price > 10;
#等價於上面的例子
  • not操作符

where子句中的not操作符有且只有一個功能,就是否定它之後所跟的任何條件

elect prodouct_name,prodouct_price  
from products
where  vend_id not in( 2,3) 
#檢索 vend_id 不是2或者3的所有產品名及價格