MySQL必知必会-6过滤数据
来源:互联网 发布:窗口编程 编辑:程序博客网 时间:2024/05/21 04:24
使用where子句来指定搜索条件,搜索条件也称为过滤条件。
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price = 2.5;
WHERE子句的位置,在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后。
WHERE子句的操作符
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 在指定的两个值之间
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_name = 'fuses';
单引号用来限定字符串,如果将值与串类型进行比较,则需要限定引号,用来与数值列进行比较的值不用引号。
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price < 10;
为了检查某个范围的值,可使用BETWEEN操作符,所需低端值和高端值,包括指定的开始值和结束值,必须用AND关键字。
SELECT
prod_name,
prod_price
FROM
products
WHERE
prod_price BETWEEN 5
AND 10;
检索价格在5和10之间的所有产品
空值检查
一个列不包含值,称为包含空值NULL。
NULL无值,它与字段包含0,空字符串或仅仅包含空格不同
检查空值使用WHERE子句IS NULL子句
SELECT
prod_name
FROM
products
WHERE
prod_price IS NULL;
OR
SELECT
cust_id
FROM
customers
WHERE
cust_email IS NULL;
数据库在匹配过滤特定的值,如果该匹配的列包含NULL值,该行将不被匹配,如果希望返回NULL值的行还需在加上IS NULL这个条件。
SELECT
*
FROM
customers
WHERE
cust_email LIKE '%@%' //模糊搜索cust_email带有@值的行
OR cust_email IS NULL //如果没有该句,cust_email为NULL的行将不会返回
;
组合WHERE子句,MySQL允许给出多个WHERE子句,这些子句可以两种方式使用:AND和OR
SELECT
prod_id,
prod_price,
prod_name
FROM
products
WHERE
vend_id = 1003
AND prod_price <= 10;
检索供应商1003并且价格小于等于10的所有产品的名称和价格
AND指示满足所给出的所有条件。
OR指示满足给出至少一个条件(任何一个条件)。
SELECT
prod_name,
prod_price
FROM
products
WHERE
vend_id = 1002
OR vend_id = 1003;
检索供应商1002或供应商1003的所有产品的名称和价格。
允许AND和OR操作符结合进行复杂和高级过滤,但是必须记住一个重要的事情,AND的优先级比OR高,如果同时出现AND和OR,会优先处理AND的条件,所以为了避免混淆,建议使用()来确保匹配顺序。
SELECT
prod_name,
prod_price
FROM
products
WHERE
vend_id = 1002
OR vend_id = 1003
AND prod_price >= 10;
由于AND的优先级大于OR,所以检索为
供应商1003的产品,价格大于或等于10的产品名和产品价格
或者
供应商1002的所有产品的产品名和产品价格
SELECT
prod_name,
prod_price
FROM
products
WHERE
(vend_id = 1002 OR vend_id = 1003)
AND prod_price >= 10
供应商1002或者供应商1003,价格大于等于10的产品的产品名和产品价格
IN操作符
WEERE子句的另外一种用法,IN操作用来指定条件范围,范围中的每个条件都可以进行匹配,合法值由逗号分隔开来。
SELECT
prod_name,
prod_price
FROM
products
WHERE
vend_id IN (1002, 1003)
ORDER BY
prod_name;
IN操作符功能与OR相当
IN操作符一般比OR操作符执行的更快,并且IN的最大优点是可以包含其他SELECT 语句,使得能够更动态建立WHERE子句。
NOT操作符
WHERE子句中的NOT操作符就是否定它之后所跟的任何条件。
SELECT
prod_name,
prod_price
FROM
products
WHERE
vend_id NOT IN (1002, 1003)
ORDER BY
prod_name;
匹配供应商1002和1003之外的产品名和产品价格。
MySQL仅支持使用NOT对IN,BETWEEN和EXISTS子句取反
0 0
- MySQL必知必会-6过滤数据
- [MYSQL-6] 过滤数据
- Mysql必知必会(笔记)【高级数据过滤、通配符进行过滤】
- mysql必知必会 - 过滤数据(单字段过滤)
- mysql必知必会 - 过滤数据(多字段过滤)
- 《MySQL必知必会学习笔记》过滤数据
- MYSQL必知必会读书笔记 第六章 过滤数据
- MYSQL必知必会读书笔记 第七章 数据过滤
- MySQL过滤数据
- mysql的过滤数据
- mysql---过滤数据
- MySQL过滤数据.md
- MySQL的数据过滤
- MySQL通配符过滤数据
- [MYSQL -7]数据过滤
- MySQL数据过滤和通配符过滤.md
- mysql过滤数据(一)
- mysql过滤数据(二)
- Linux基础命令详解
- jAVA8 十大新特性
- 初读《人月神话》
- 1015. Reversible Primes
- 深入讲解Python中的迭代器和生成器
- MySQL必知必会-6过滤数据
- 常用sql函数及高效性能比较
- Android 设计模式
- 详解synchronzied和lock
- 安卓开发-TextView的字体循坏展示
- 网络高手DOS命令
- 安装与环境配置(JDBC学习)
- 1016. Phone Bills
- 学习笔记3(对js中字符串方法的补充)