MySQL之where條件查詢

2021-09-22 04:35:42 字數 4290 閱讀 8981

單錶查詢是mysql查詢中的一種常見的查詢方式,而where語句塊則在單錶查詢語句中起到指定查詢過濾條件的功能。

語法為

select *|字段列表|表示式 from table_name [where 條件] [order by 字段列表]

說明

" * ":相當於按照表中字段順序羅列表中的所有字段

字段列表:當查詢結果只是表中部分欄位時,可將要顯示的字段羅列出來,字段之間以逗號間隔

表示式:可以是算術運算子也可以是資料庫中的函式

table_name:表名

where:指定查詢過濾條件

order by:對查詢結果進行排序

為了更好地了解where條件在mysql查詢過程中的作用,我們以插入的乙個表作為例子進行操作:

create table student

( id char(36

) primary key,

name varchar(8

) not null,

age int(3

)default0,

mobile char(11

),address varchar

(150))

insert into student

values (

'9b4435ec-372c-456a-b287-e3c5aa23dff4'

,'張三',24

,'12345678901'

,'北京海淀');

insert into student

values (

'a273ea66-0a42-48d2-a17b-388a2feea244'

,'李%四',10

,'98765432130'

,null)

;insert into student

values (

'eb0a220a-60ae-47b6-9e6d-a901da9fe355'

,'張李三',11

,'18338945560'

,'安徽六安');

insert into student

values (

'6ab71673-9502-44ba-8db0-7f625f17a67d'

,'王_五',28

,'98765432130'

,'北京朝陽區');

insert into student

values (

'0055d61c-eb51-4696-b2da-506e81c3f566'

,'王_五%%',11

,'13856901237'

,'吉林省長春市寬平區'

);

前面我們已經知道where的功能是指定查詢過濾條件的,而like是用於進行模糊查詢的。這其中:

1、%:匹配0次或多次

select * from student where name like '張%'

;#查詢姓張的全部學生資訊

select * from student where name like '%李%'

;#查詢姓名中含有「李」字的全部學生資訊

結果

2、_:只匹配1次

select * from student where name like '張_'

;#查詢兩個字的張姓學生資訊

結果

3、escape:取消%或_字元的萬用字元特性

#查詢姓名中含有%字元的學生資訊

select * from student where name like '%#%%' escape '#'

#查詢姓名中含有%字元的學生資訊

select * from student where name like '%$_%' escape '$'

#查詢姓名以%

%結尾的學生資訊

select * from student where name like '%#%#%' escape '#'

;

結果

注意:escape後面單引號中只能是單個字元;

escape後面可以是字母、#、$、,、\等字元;

1、邏輯條件and和or

#查詢張姓且位址中含有北京的學生資訊

select * from student where name like '張%' and address like '%北京%'

;#查詢張姓或位址中含有北京的學生資訊

select * from student where name like '張%' or address like '%北京%'

;

結果

2、between 下限 and 上限

等同於「(column_name>=下限) and (column_name<=上限)」

#查詢年齡在10

~28之間的學生資訊

select * from student where age between 10 and 28

;#上面sql語句等效於該sql語句

select * from student where age >=

10 and age<=

28;

結果

注意:「between 下限 and 上限」一定是小值在前大值在後,否則查不出資料;

「between 下限 and 上限」查詢資料報括邊界值;

3、關係條件

=、!=、、>=等

select * from student where age<

28;#查詢年齡小於28歲的學生資訊

結果

等同於「 column_name = value1 or column_name = value2 or column_name = value3… or column_name = valuen 」

select * from student where age in(10

,17,24

);#上面sql語句等效於下面語句

select * from student where age =

10 or age=

17 or age =

24;

結果

5、null

包括is null 和 is not null

select * from student where address is null;#查詢位址為空的學生

資訊

結果

注意:is null不能寫成 = null,同樣,is not null不能寫成!=null

多where條件查詢

create tabletb 工廠 varchar 10 庫地 int,型別 varchar 10 屬性 varchar 10 sku varchar 10 批次 varchar 10 名稱 varchar 10 入庫時間 datetime 數量 int,重量 int 備註 varchar 10 i...

where條件拼接查詢

最近在做乙個動態拼接where條件的查詢,大概想到了以下幾種方法 1 內拼接查詢條件,sql也是寫在 內的。2 內拼接查詢條件,sql寫在儲存過程內,將 where條件作為乙個字串傳入儲存過程。這種需要在 內過濾sql注入的問題 3 查詢條件的拼接放到儲存過程內,在儲存過程內對查詢條件值進行引數化。...

MySQL左聯多表查詢where條件寫法示例

複製 如下 select from test a left程式設計客棧 join test b on a.id b.id where awww.cppcns.com.level 20 and a.month 04 a b.level 20 and b.month 03 select a.b.from...