mysql必知必會-簡單查詢-2
阿新 • • 發佈:2018-11-27
簡單查詢
過濾資料
- 使用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的所有產品名及價格