天天看點

sql語句中select語句檢索的過濾

限制結果:

1.distinct關鍵字 隻傳回不同的行,放在列名前,作用于查詢的所有的列

select distinc 列名 from 表名

2.top 傳回前多少行的資料

select top 5 列名 from 表名 傳回前5的行

3.limit 5 offset 5 limit:傳回多少行 offset 從第幾行開始,預設是0開始,offset 1 是第二行

select 列名 from 表名 limit 3 offset 5 傳回 從第5行開始的資料,傳回3行

order by 排序:

desc:降序 隻對前面列有作用

asc:升序

select 字段1 ,字段1,字段3 from 表名 order by 字段1 按字段1排序

select 字段1 ,字段1,字段3 from 表名 order by 字段1,字段2 先按字段1排序,再按字段2排序

過濾資料: where

在同時使用where和order 時,應該讓order by 位于where之後,否則會産生錯誤

where的易混淆操作符:

1.判斷null: is null

select 字段名 form 表名 where 字段名 is null

2. 不等于: != 與 <> 通常可以互換

select 字段名 form 表名 where 字段名<> ‘字段值’

select 字段名 form 表名 where 字段名!= ‘字段值’

3.between 範圍值 低值和高值用and關鍵字分割

select 字段名 form 表名 where between 5 and 10

分割線----------------------進階過濾---------------------------------------------------------------------

//連接配接多個where

1.and

select 字段名1,字段名2 from 表名 where 字段名1=‘值’ and where 字段名2 <‘值’

2. or

select 字段名1,字段名2 from 表名 where 字段名1=‘值’ or where 字段名2 <‘值’

一般一行的資料滿足條件1之後,就不會再再執行第二個條件

3.and和or

select 字段名1,字段名2,字段3 from 表名 (where 字段名1=‘值’ or where 字段名2 <‘值’) and 字段名3>=‘值’

由于and的優先級更高,是以必須用圓括号将or的兩個條件明确分組,優先執行

//通配符過濾 需要結合like操作符使用 不同mysql可能會出現區分比對的值的大小寫

通配符隻能搜尋字元串的字段

like訓示dbms,後面的搜尋模式是利用通配符,不是簡單的比對比較

1.% 任何字元出現任意次數

select 字段名 from 表名 where 字段名 like ‘值%’ :

檢索 以值開頭的之後的任意字元,在where之後的字段中搜尋

2._ 與%使用方式一樣,但是隻能比對一個, 連續兩個__代表2個字元

字元:一個英文、阿拉伯數字、标點符号都是一個字元 一個漢子占用2個字元

SELECT * FROM test WHERE NAME LIKE ‘___c’; 搜尋name字段中c之前 2個字元

SELECT * FROM test WHERE NAME LIKE ‘__c’; 搜尋name字段中c之前1個字元

3.[]