1. 程式人生 > 資料庫 >MYSQL語法篇之"WHERE"子句

MYSQL語法篇之"WHERE"子句

MYSQL語法篇之"WHERE"子句

本章來介紹MYSQL裡面查詢功能強大的WHERE子句。

  1. WHERE子句的特點

  2. WHERE子句的注意事項

  3. WHERE子句的使用


  1. WHERE子句的特點:

過濾記錄

其實這一句話的解釋有兩個方面:

(1)過濾記錄=看不到不想看的資料

(2)過濾記錄=看到想看的資料

表面上看這兩句話是一個意思,但是這裡面卻包含了WHERE子句的語法理解:

舉例:

select * from table_name where column_name=value;

這一個語句中你會發現where子句後面跟著的內容是column_name=value,那麼查詢出來的是column=value的所有資訊。where子句的官方定義是過濾記錄,但是我們在使用where子句的時候輸入的內容確是想查詢的記錄。

這就是where記錄的兩個方面的理解的不同。

  1. WHERE子句的注意事項:

這是一個關鍵點,是WHERE子句學習的關鍵地方。

where子句當中只能加入欄位名和運算子,不能加入聚合函式。如果想加入聚合函式,需要使用到子查詢的只是

上面這兩段話重點要去理解這麼一些知識點:

(1)欄位名

(2)運算子

(3)聚合函式

(聚合函式在SQL語句當中是一個高階的知識,我會放在後面的筆記當中進行詳細的說明與總結,把常用的一些聚合函式挑出來細說。)

在前面的總結當中已經給大家說了什麼是欄位名,如果有小夥伴還不清楚的話可以去檢視前面的隨筆。後面我們重點去了解什麼是運算子。

  1. 什麼是運算子?

運算子其實就是我們小學數學當中認識的一些簡單的符號。用來判斷資料的,計算機也能通過運算子來過濾資料。

常見的運算子:

1、等於:=

2、不等於:<> 或者 !=

3、大於:>

4、小於:<

5、小於等於:<=

6、大於等於:>=

上面六種就是資料庫當中查詢表裡內容時常用的六種運算子,每一種運算子在資料庫當中可以組合使用,但是要注意:

資料庫當中組合使用運算子的時候不能與子查詢組合使用

什麼意思呢?舉一個例項:

題:查詢所有學生分數>60的學生人數。

分析題目:

主語:人數---查詢人數。

條件:分數大於60。

寫出語句:

select count(*) from table_name where 分數>60;

這裡要注意的是,我上面寫的加粗的話:

錯誤的語法是:

select count(*) from table_name where 分數>分數=(select 分數 form table_name where 分數=60);

這一句用了子查詢,但是因為存在運算子>和=號所以計算機在查詢時候會先執行where子句當中的子查詢得出結果再在where子句裡面從左到右執行得出結果作為外迴圈select的過濾條件。

所以這句語句得不出結果。

思考:那麼為什麼說運算子可以組合使用?

事實上只要不加入子查詢,運算子基本上就可以組合使用。

如:從學生表中查詢所有學生的資訊並使他們的成績加五分

語法:

select *,score=score+5 from student;

select * from student where score=score+5;

上面兩個語句的語法都是正確的,但是得到的結果不正確。

第一種語法,會出現四個欄位名,score+5會作為一個新的欄位名出現在結果表中,score+5的結果為原表中的score的值+5。

第二種語法,出現的結果是Empty,where子句後面的內容會被作為條件再在表中查詢出滿足條件的資訊。(這裡值得注意的是:score=score+5是已經被執行出結果以後的過濾條件。如果語句無法執行會報錯)