天天看點

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

本文主要介紹MySQL資料庫中的資料檢索和搜尋方法。

文章結構如下:

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

上圖中,行列檢索和結果限制部分在文章(一)(https://blog.csdn.net/weixin_38215395/article/details/79854690+%20+%EF%BC%88%E4%B8%80%EF%BC%89)中已有提及。本文将重點介紹對檢索結果的排序與過濾。

一、對檢索結果排序

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 ;
           

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 > ;
``````
上述代碼傳回products表中prod_price值大于的行。




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

####2.2 操作符過濾
可以利用操作符與WHERE子句組合得到功能更強的搜尋條件。
常用的操作符有:`AND、OR、IN、NOT IN`等。AND和OR的用法與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= AND prod_price>”,而後執行“ven_id=”。
再如:




<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”。

IN

NOT IN

表示在或不在指定範圍内的意思。

2.3 通配符過濾

通配符就是用來比對值的一部分的特殊字元,如

%、_

,用在

WHERE

子句中,與

LIKE

關鍵字配合使用。其中,

%

可表示任意長度的任意字元。而

_

僅表示一個字元。但是,如果其他操作符能達到相同的目的,盡量不要使用通配符,因為慢慢慢。。。。。。

2.4 正規表達式過濾

正規表達式就是一個比對字元的式子,很多語言都支援正規表達式。但MySQL僅支援部分正規表達式。在MySQL中,用于資料過濾時,将

LIKE

關鍵字用

REGEXP

代替,并結合正規表達式語言中的字元使用。常見的字元有.(可代替任意一個字元)、|(或)、[](集合)等。還有特殊字元的比對(利用轉義字元),以及常見的字元類(如[:alnum:]等),以及重複元字元和定位符的使用等等。