1. 程式人生 > >6.使用where子句查詢表中滿足條件的記錄

6.使用where子句查詢表中滿足條件的記錄

我這些學習筆記,記錄的都是我自己認為的知識點,可能以後再看的時候還要翻書,但是可以用來定位到準確的書中示例的位置,減少翻書重找的時間,利於自身知識體系的搭建。                   self-transcendence

第6章 使用where子句查詢表中滿足條件的記錄

6.1 比較查詢

Where可以使用比較運算子。

比較運算子分為三類:算數比較運算子、between...andin

6.1.1 算數比較運算子

=>=<=><!=<>(不等於)、!>(不大於)、!<(不小於)

使用比較運算子,符號兩邊的資料型別要一致

6.1.2 between...and運算子查詢指定條件範圍的記錄

例:where age between 30 and 50     查年齡30-50的人

如果要查30-50之外的人,就用where age not between 30 and 50

6.1.3 in運算子

例:where dept in(‘計算機系’,‘數學系’)

Dept欄位中等於計算機系或數學系的。

或者where dept=‘計算機系’ or  dept=‘數學系’

6.1.4 字串比較

目前不知道有什麼用,等回頭再看看

6.1.5 日期時間的比較

日期值和時間比較,日期和時間必須是資料庫伺服器可以接受的字串格式。

例:where birth > ’19860101 ’,資料庫的格式是  --日 時::

比較日期值和時間要用單引號

6.2 邏輯查詢

邏輯運算子:and ornot,優先順序順序not > and > or

Sql server中可以使用&代替and,使用|代替or,使用~代替not

例:where dept=‘計算機’or  dept=‘數學系’) and  salary > 3000

6.3 空值查詢

Null表示空值,is nullis not null 判斷空值

例:where  persion  is  not  null

6.4 使用like操作符實現模糊查詢

模糊查詢關鍵字like,萬用字元%_使用,_出現一次代表一個字元,%代表0個或多個,like後面的匹配字元必須要使用單引號,

例:where  stuName  like ‘張%or  stuName  like ‘李_

Mysqllike不區分大小寫

Sql server還支援[ ][^ ]萬用字元,[ ]表示查詢某一個範圍內的所有單個字元,[^ ]表示那些不在某一個範圍內的字元,例:匹配abcdlike [abcd];匹配abcd以外,like [^abcd]

6.4.1 使用轉義字元

資料本身有時會含有%_,這時候我們要保證%只是符號,不是萬用字元,就要使用escape

例:where deptId like %a_%escape a

這個例子中a被標註為轉義字元,及a後面的萬用字元就變成了普通的字元

6.5 使用regexp關鍵字進行模式匹配
mysql中使用regexp關鍵字,只要是匹配的字串中含有模板中的子串,就返回true

Regexp有一些關鍵字:

^:用來匹配字串的開始

$:用來匹配字串的結尾

[]:括起來的字元都可以匹配,[abc]那麼只要有abc其中任一都可以

-:表示匹配字元的範圍,[a-z]那麼a-z任一都可以

+:表示用於匹配的字元在被匹配的字元中至少出現一次或多次

*:標識用於匹配的字元在被匹配的字元中出現0次或多次

():括起來的是整體,(abc)則abc要整體出現

{m}:表示{}前面的字元要出現m次,例:{abc}{2}則表示字串要含有abcabc