資料庫一般包含大量的資料,但是我們大部分情況下並不需要檢索所有的資料,只要檢索部分資料就行了。只檢索所需要資料需要指定搜尋條件,搜尋條件也稱為過濾條件。
part 1 使用where 子句
在select子句中,資料根據where子句中指定的搜尋條件進行過濾。where子句在表名(from子句)之後給出,如下所示:
select users.user_name, users.user_age from users where users.user_name = "黃一東";
這個例子採用了簡單的相等測試,檢查乙個列是否具有指定的值,但sql允許做的事情不僅僅是相等測試 。
在同時使用order by 和 where子句時候,應該讓order by位於where之後,否則將會產生錯誤
part 2 where子句操作符
part 2.1 檢查單個值
直接上例子
select users.user_name, users.user_age from users where users.user_age <= 200
order
by users.user_age;
注意這裡的小於等於,關於where的操作符和平常程式語言其實差不多的。
part 2.2 不匹配檢查
select users.user_name, users.user_age from users where users.user_age != 40
order
by users.user_age desc;
mysql 中 where表示式的不匹配 可以用<> 和 != 都行 。
tip:如果將 值 和 串型別的列 進行比較的時候我們 需要用 引號將 值 括起來 。
part 2.3 範圍值檢查
為了檢查某個範圍的值,可使用between操作符。其語法和其他的where操作符稍有不同,因為他需要兩個值,即開始值和結束值。
select users.user_name, users.user_age from users where users.user_age between 19
and50
從例子中我們可以看出,在使用between的時候,必須指定兩個值——所需範圍的低端值和高階值。這兩個值必須用and關鍵字分隔。 mysql會匹配範圍中的所有值,包括開始值和結束值。
part 2.4 空值檢查
建立表的時候,表的設計人員可以指定其中的列是否可以不包含值。在乙個列不包含值的時候,稱其為包含空值null 。
null 無值,他與字段包含0,空字串或僅僅包含空格不同
select語句有乙個特殊的where子句,可用來檢查具有null值的列。這個where子句就是 is null 子句 如下:
select prod_name from products where prod_price is
null;
part 3 組合where子句
我們很可能對資料庫進行多層篩選。
mysql允許給出多個where子句。這些子句可以兩種方式使用:以and方式或者or方式使用。
part 3.1 and操作符
為了通過不只乙個列進行過濾,可以使用and操作符給where子句附加條件。下面的**給出了乙個例子:
select users.user_name, users.user_age from users where users.user_age between 19
and50
and users.user_id < 8;
可以看出,我們在where子句中 多新增了乙個and關鍵字 來鏈結兩個過濾條件 。就是這麼簡單~
part 3.2 or操作符
or操作符和and操作符不同,它指示mysql檢索匹配任一條件的行 。
如下:
select users.user_name, users.user_age from users where users.user_age between 19
and60
or users.user_id < 10;
part 3.3 計算次序
where可以包含任意數目的and和or操作符。並且允許兩者進行結合,但是這會產生乙個有趣的問題。
就是說當類似於where id = 2002 or id = 1003 and price >= 10
的情況,我們該如何確定 id = 1003 是應用於前面的 or 還是 後面的 and呢?
sql語言對這種情況,在處理or操作前,優先處理and。就是說 and在計算次序中優先順序更高,有時會產生我們不想要的結果 。
這個問題的解決方法是使用圓括號明確地分組相應的操作符 。
select users.user_name, users.user_age from users where (users.user_age != 1
and users.user_id != 0) or users.user_id < 10
;
注意,從結構上講,這條語句就比上面那條多了個括號,任何時候使用具有and和or操作符的語句的時候都應該帶上括號明確分組操作!
part 3.4 in操作符
圓括號在where子句中還有另一種用法。 in操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配。in取合法值由逗號分隔的清單,全部在圓括號中。
select users.user_name , users.user_age from users where users.user_age in(19,63);
可以看出 in 操作符 和 or的 功能是相似地! 那為什麼要使用in操作符呢?如下:
1.在使用長的合法選項清單中 in 操作符語法更清楚且直觀 。
2.在使用in時,計算的次序更容易管理。
3.in操作符一般比or更快
4.in操作符最大的有點就是能包含其他select語句,使得能夠更動態的建立where子句。
part 3.5 not操作符
where子句中的not操作符有且只有乙個功能,那就是否定他之後所跟的任何條件。
not where子句中用來否定後面條件的關鍵字!
如下:
select users.user_name , users.user_age from users where users.user_age not
in(19,63);
在和in操作符聯合使用時候,not操作符使得找出與列表中不同的資料更簡單! MySQL資料庫 過濾資料
資料庫一般包含大量的資料,但是我們大部分情況下並不需要檢索所有的資料,只要檢索部分資料就行了。1.使用where 子句 在select子句中,資料根據where子句中指定的搜尋條件進行過濾。where子句在表名 from子句 之後給出,如下所示 select users.user name,user...
MySQL資料庫 萬用字元過濾
萬用字元 wildcard 用來匹配值的一部分的特殊字元。搜尋模式 search pattern 由字面值 萬用字元或兩者組合構成的搜尋條件。最常使用的萬用字元是百分號 在搜尋串中,表示任何字元出現任意次數。例如,為了找出所有以詞dll起頭的產品名,可使用以下select語句 萬用字元可在搜尋模式中...
Mysql資料庫學習(4) 過濾資料
通常情況下,採用列檢索出來的資料範圍很大,並非都是我們所需要使用的資料。為了盡快的尋找出所需資料,我們可以使用wher語句進一步縮小資料範圍,從而得到我們真正想要的資料。關於where語句的具體使用方法如下 1.單純的where語句 select cust id,cust name from cus...