where子句限定字表段,对行数据的筛
和选
简单的增删该查
并不涉及数据的过滤
-
insert into 表名
-
delete from 表名 where id = 1;
-
update 表名 set 字段=1 where …
-
select * from 表名
-
where通过表中对字段的约束从而过滤数据库表中指定的行,where是对行的过滤,不能对分组数据进行过滤。
-
分组数据过滤用having
-
where只能过滤表中单个字段,当配合AND和OR可以对多个字段进行过滤
-
对一个字段过滤如下
1、where子句操作符
在SELECT,操作语句中,数据根据where子句中,指定的
搜索条件
(即对表字段的约束),对数据进行筛
和选
。
1、where 子句等式操作符
2、between and 范围检查
SELECT
prod_name, prod_price
FROM
products
WHERE
prod_price BETWEEN 5 AND 10
3、NULL值检查
在创建表时,表设计人员可以指定其中的列是否可以不包含值,在一个列中不包含值时,称其为空值NULL
在某些情况下,剔除空值,可以避免Java处理中的空指针异常
,或者查询空值做一些特定的判断。1:剔除空值(方法一)
SELECT
prod_name
FROM
products
WHERE
prod_price IS NOT NULL
2:将取出的空值替换(防止空指针异常)
SELECT
IFNULL(prod_price, ‘’) as prod_name
FROM
products
WHERE
prodID = 1;
4、where子句AND
操作符和OR
操作符
where只能对一个列值(表中的一个字段)进行过滤,可以配合使用
AND
和OR
,添加多列的过滤条件。
where 允许包含任意数目的AND
和OR
操作符,允许两者结合进行复杂的高级过滤。
where子句中,AND
的优先级高于OR
,优先处理AND
然后在处理OR
,这个规则可以通过加括号改变。
5、IN、NOT操作符
IN
操作符,可以用来指定where后面字段的条件范围
NOT
操作符,where子句中的NOT操作符只有一个功能,那就是否定它之后所跟的任何条件。
SELECT
prod_name
FROM
products
WHERE
prod_price IN (10,20,30);
6、LIKE
操作符,配合%
,_
通配符
%
表时任何字符出现任意次;
_
表时任意字符出现一次;
SELECT
prod_name
FROM
products
WHERE
prod_name like ‘%得力%’;
通配符搜索的处理一般要花费更长的时间
在确实要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处,因为这样会比较慢。
7、where字句后的正则表达式
的过滤
正则表达式是用来匹配文本的的特殊的串
如果你想从一个文本中提取电话号码,可以使用正则表达式。
正则表达式和通配符的区别通配符匹配包含特定的字符(例:包含nike的字符串)
正则表达式匹配,包含某种规则的数据(例:验证手机号码格式)
1、基本字符的匹配
SELECT
prod_name
FROM
products
WHERE
prod_name REGEXP ‘1000’
检索prod_name中包含1000的所有行,比LIKE效率低
SELECT
prod_name
FROM
products
WHERE
prod_name REGEXP ‘.000’
**.**
表是匹配任意一个字符,因此任意一个字符+000,都会被匹配出来。
Mysql中正则表达式比配不区分大小写,若要区分大小写格式如下:
REGEXP BINARY '.000'
2、正则表达式中的OR匹配用
|
分开
SELECT
prod_name
FROM
products
WHERE
prod_name REGEXP ‘1000|2000|3000’
将匹配prod_name中包含1000,2000,3000的行
3、[]
SELECT
prod_name
FROM
products
WHERE
prod_name REGEXP ‘[123] Ton’
包含1或2或3,REGEXP '[^123]':表示除这些字符以外的任何东西
集合可以用来定义要匹配的
一个
或多个
字符,集合用[ ]
来表示。
REGEXP '[0123456789]',匹配0到9中的一个字符,-:可以用来表示范围。
[1-3]:匹配1到3中的1任意字符,[6-9]:匹配6到9中任意字符。[a-z]匹配任意字母字符
匹配特殊字符必须用\\
为前导,\\-
表时-
,\\.
,才表示正真的一个.
。
1、
*: 0个或多个匹配
2、+: 1个或多个匹配
3、?: 0个或1个匹配
4、{n}: 指定数目的匹配
5、{n,}: 不少于指定数目的匹配
6、{n,m}:匹配数目的范围