读书笔记--SQL必知必会04--过滤数据

来源:互联网 发布:arma预测C 源码 编辑:程序博客网 时间:2024/06/06 11:39

4.1 使用WHERE子句

在SELECT语句中,数据根据WHERE子句中指定搜索条件进行过滤。
搜索条件(search criteria)也称为(filter condition)。
WHERE子句在表名之后使用。同时使用ORDER BY和WHERE子句时,ORDER BY位于WHERE之后。

MariaDB [sqlbzbh]> SElECT prod_name, prod_price FROM Products WHERE prod_price=3.49;+---------------------+------------+| prod_name           | prod_price |+---------------------+------------+| Fish bean bag toy   |       3.49 || Bird bean bag toy   |       3.49 || Rabbit bean bag toy |       3.49 |+---------------------+------------+3 rows in set (0.00 sec)MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> SElECT prod_name, prod_price FROM Products WHERE prod_price = 3.49 ORDER BY prod_name;+---------------------+------------+| prod_name           | prod_price |+---------------------+------------+| Bird bean bag toy   |       3.49 || Fish bean bag toy   |       3.49 || Rabbit bean bag toy |       3.49 |+---------------------+------------+3 rows in set (0.00 sec)MariaDB [sqlbzbh]> 

4.2 WHERE子句操作符

等于: = 不等于:!= 或者 <>。 并非所有DBMS都同时支持这两种不等于操作符。大于:> 小于:<大于等于:>= 小于等于:<=不大于:!> 不小于:!<在指定的两个值之间:BETWEEN为NULL值:IS NULL

4.2.1 检查单个值

MariaDB [sqlbzbh]> SElECT prod_name, prod_price FROM Products WHERE prod_price < 10;+---------------------+------------+| prod_name           | prod_price |+---------------------+------------+| Fish bean bag toy   |       3.49 || Bird bean bag toy   |       3.49 || Rabbit bean bag toy |       3.49 || 8 inch teddy bear   |       5.99 || 12 inch teddy bear  |       8.99 || Raggedy Ann         |       4.99 || King doll           |       9.49 || Queen doll          |       9.49 |+---------------------+------------+8 rows in set (0.00 sec)MariaDB [sqlbzbh]> 

4.2.2 不匹配检查
如果将值与字符串类型的列进行比较,就需要使用单引号来限定字符串。
用来与数值列进行比较的值不用引号。

MariaDB [sqlbzbh]> SElECT vend_id, prod_name FROM Products WHERE vend_id <> 'DLL01';+---------+--------------------+| vend_id | prod_name          |+---------+--------------------+| BRS01   | 8 inch teddy bear  || BRS01   | 12 inch teddy bear || BRS01   | 18 inch teddy bear || FNG01   | King doll          || FNG01   | Queen doll         |+---------+--------------------+5 rows in set (0.00 sec)MariaDB [sqlbzbh]> 

4.2.3 范围值检查
使用BETWEEN操作符检查某个范围的值时,必须指定范围的开始值和结束值,而且这两个值必须用AND关键字分隔。

MariaDB [sqlbzbh]> SElECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10;+--------------------+------------+| prod_name          | prod_price |+--------------------+------------+| 8 inch teddy bear  |       5.99 || 12 inch teddy bear |       8.99 || King doll          |       9.49 || Queen doll         |       9.49 |+--------------------+------------+4 rows in set (0.00 sec)MariaDB [sqlbzbh]> 

4.2.4 空值检查
在一个列不包含值时,称为包含空值NULL,表示无值(no value)。
注意:在进行匹配过滤和非匹配过滤时,不会返回含NULL值的行。

MariaDB [sqlbzbh]> SELECT prod_name FROM Products WHERE prod_price IS NULL;Empty set (0.00 sec)MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> SELECT cust_name FROM Customers WHERE cust_email IS NULL;+---------------+| cust_name     |+---------------+| Kids Place    || The Toy Store |+---------------+2 rows in set (0.00 sec)MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> SELECT cust_email FROM Customers;+-----------------------+| cust_email            |+-----------------------+| sales@villagetoys.com || NULL                  || jjones@fun4all.com    || dstephens@fun4all.com || NULL                  |+-----------------------+5 rows in set (0.00 sec)MariaDB [sqlbzbh]> SELECT cust_email FROM Customers WHERE cust_email != 'sales@villagetoys.com';+-----------------------+| cust_email            |+-----------------------+| jjones@fun4all.com    || dstephens@fun4all.com |+-----------------------+2 rows in set (0.00 sec)MariaDB [sqlbzbh]> 
原创粉丝点击