《MySQL必知必会》学习笔记(二)、MySQL数据库中数据的检索与搜索

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38215395/article/details/79868819

本文主要介绍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 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:]等),以及重复元字符和定位符的使用等等。

猜你喜欢

转载自blog.csdn.net/weixin_38215395/article/details/79868819
今日推荐