MySQL(四)---过滤数据(WHERE)子句

过滤数据(WHERE)子句

过滤数据

SELECT * FROM 表名 WHERE 条件

例:

SELECT * FROM products WHERE prod_price='14.99'

WHERE子句的位置 在同时使用ORDERBY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误!

例:

SELECT * FROM products WHERE prod_price='14.99' ORDER BY prod_price

WHERE子句操作符

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 在指定的两个值之间

单值查询

注意! MySQL在执行匹配时默认不区分大小写,如fuses与Fuses匹配。

SELECT * FROM 表名 WHERE prod_name=‘fuses’;

不匹配查询

SELECT * FROM 表名 WHERE 列名 <> '值'; 
或者	SELECT * FROM 表名 WHERE 列名 != '值'; 

如:输出不是fuses的结果

SELECT * FROM products WHERE prod_name <> 'fuses' 
或者	SELECT * FROM products WHERE prod_name != 'fuses';

何时使用引号 如果仔细观察上述WHERE子句中使用的条件, 会看到有的值括在单引号内(如前面使用的’fuses’)而有的值未括起来。单引号用来限定字符串。如果将值与串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号。

范围查询

SELECT * FROM 表名 WHERE 列名 BETWEEN 条件A AND 条件B ;

例:查询价格在1~11之间的记录

SELECT * FROM products WHERE prod_price BETWEEN 1 and 11 

空值查询

注意:NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。

SELECT * FROM 表名 WHERE 列名 IS NULL ;

并列查询(AND操作符)

SELECT * FROM 表名 WHERE 条件1 AND 条件2;

例:供应商1003,价格<30的产品信息

SELECT * FROM products WHERE prod_price <30 AND vend_id =1003;

任一查询(OR操作符)

SELECT * FROM 表名 WHERE 条件1 OR 条件2;

例:供应商是1003或者价格<30的产品信息

SELECT * FROM products WHERE prod_price <30 OR vend_id =1003;

AND OR 优先级

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。

在WHERE子句中使用圆括号,消除奇异。

范围查询(IN操作符)

IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。

下列两行代码等价

SELECT * FROM 表名 WHERE 列名 IN (条件1,条件2);
SELECT * FROM 表名 WHERE 列名 = 条件1 OR 列名 = 条件2;

IN操作符一般比OR操作符清单执行更快。

不匹配查询(NOT IN操作符)

NOT IN操作符在WHERE子句中用来否定后跟条件的关键字。

下列两行代码等价

SELECT * FROM 表名 WHERE 列名 NOT IN (条件1,条件2);
SELECT * FROM 表名 WHERE 列名 != 条件1 AND 列名 != 条件2;

例:查询所有供应商不是1002,1003 的产品。

SELECT * FROM products WHERE vend_id NOT IN (1002,1003);
SELECT * FROM products WHERE vend_id !=1002 AND vend_id!=1003;

MySQL中的NOT MySQL支持使用NOT对IN、BETWEEN和EXISTS子句取反。

用通配符进行过滤(LIKE操作符)

通配符(wildcard) 用来匹配值的一部分的特殊字符。

搜索模式(search pattern) 由字面值、通配符或两者组合构成的搜索条件。

MySQL的通配符很有用,但这种功能是有代价的,通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。不要过度使用通配符,如果其他操作符能达到相同的目的,应该使用其他操作符。确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。

百分号(%)通配符

最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数。

SELECT * FROM 表名 WHERE 列名 LIKE '条件%'

例如,为了找出所有以词jet起头的顾客姓名,可使用以下SELECT 语句:

SELECT * FROM customers WHERE cust_name LIKE 'jet%'

jet结尾

SELECT * FROM customers WHERE cust_name LIKE '%jet'

包含jet

SELECT * FROM customers WHERE cust_name LIKE '%jet%'

注意:虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE prod_name LIKE '%'也不能匹配用值NULL作为产品名的行。只能用下面语句匹配NULL

SELECT * FROM 表名 WHERE 列名 IS NULL; 

下划线(_)通配符

下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符,_总是匹配一个字符,不能多也不能少。

SELECT * FROM 表名 WHERE 列名 LIKE '条件%'

例:查询供应商ID(4位数)是100开头的,100_

SELECT * FROM products WHERE vend_id LIKE '100_';

正则表达式

SELECT * FROM 表名 WHERE 列名 REGEXP '正则表达式'
发布了9 篇原创文章 · 获赞 0 · 访问量 295
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览