数据库,where,数据过滤。

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只能对一个列值(表中的一个字段)进行过滤,可以配合使用ANDOR,添加多列的过滤条件。
where 允许包含任意数目的ANDOR操作符,允许两者结合进行复杂的高级过滤。
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}:匹配数目的范围

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值