1. 程式人生 > >《MySQL必知必會》學習筆記(二)、MySQL資料庫中資料的檢索與搜尋

《MySQL必知必會》學習筆記(二)、MySQL資料庫中資料的檢索與搜尋

一、對檢索結果排序

1.1 簡單排序

在MySQL中使用ORDER BY子句對檢索出的資料進行排序,而且預設為遞增排序。若想以遞減方式排序,需要在排列資料後面加上DESC關鍵字。利用《MySQL必知必會》中的資料表,實驗如下:

SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price;

上述程式碼表示:以products表中prod_price列的值從小到大排序,並將prod_id,prod_price和prod_price顯示出來。

SELECT prod_id,prod_price,prod_name
FROM
products ORDER BY prod_price DESC;

上述程式碼表示:以products表中prod_price列的值從大到小排序,並將prod_id,prod_price和prod_price顯示出來。

1.2 按多個列排序

如下面的程式碼:

SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,prod_name;

表示:先以products表中prod_price的值進行遞增排序,然後再在排序的結果中以prod_name遞增排序,最後顯示。

1.3 返回列中的最值

結合上一篇文章中介紹的LIMIT關鍵字,可實現最值的顯示。
思路很簡單,就是先進行排序,然後返回第一個資料即可。如下面的程式碼得到了products表中prod_price值最小的一行資料。

SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price 
LIMIT 1;

2、資料過濾

2.1 WHERE語句

當檢索資料時,我們往往需要滿足某一特定條件的資料,如等於或大於某個值等。這時,可以利用WHERE子句實現。WHERE子句可以實現等於(=)、不等於(<>或!=)、小於(<)、大於(>)、小於等於(<=)、大於等於(>=)以及介於a、b之間(BETWEEN a AND b)和空值(IS NULL)的判斷。
舉一個簡單的例子,其他操作符的用法都相似。

```
SELECT prod_id,prod_price,prod_name
FROM products
WHERE prod_price > 5;
``````
上述程式碼返回products表中prod_price值大於5的行。




<div class="se-preview-section-delimiter"></div>

####2.2 操作符過濾
可以利用操作符與WHERE子句組合得到功能更強的搜尋條件。
常用的操作符有:`ANDORINNOT IN`等。ANDOR的用法與C/C++語言中類似,需要注意的一點是,`AND`的優先順序比`OR`要高。
如下面的語句:





<div class="se-preview-section-delimiter"></div>

SELECT prod_id,prod_price,prod_name
FROM products
WHERE ven_id = 1002 OR ven_id = 1003 AND prod_price > 5;

對於最後一行程式,現執行“ven_id=1003 AND prod_price>5”,而後執行“ven_id=1002”。
再如:




<div class="se-preview-section-delimiter"></div>

SELECT prod_id,prod_price,prod_name
FROM products
WHERE (ven_id = 1002 OR ven_id = 1003) AND prod_price > 5;
“`
這時,先執行“(ven_id = 1002 OR ven_id = 1003)”再執行“prod_price > 5”。

INNOT IN表示在或不在指定範圍內的意思。

2.3 萬用字元過濾

萬用字元就是用來匹配值的一部分的特殊字元,如%、_,用在WHERE子句中,與LIKE關鍵字配合使用。其中,%可表示任意長度的任意字元。而_僅表示一個字元。但是,如果其他操作符能達到相同的目的,儘量不要使用萬用字元,因為慢慢慢。。。。。。

2.4 正則表示式過濾

正則表示式就是一個匹配字元的式子,很多語言都支援正則表示式。但MySQL僅支援部分正則表示式。在MySQL中,用於資料過濾時,將LIKE關鍵字用REGEXP代替,並結合正則表示式語言中的字元使用。常見的字元有.(可代替任意一個字元)、|(或)、[](集合)等。還有特殊字元的匹配(利用轉義字元),以及常見的字元類(如[:alnum:]等),以及重複元字元和定位符的使用等等。