mysql的where表达式

在学习过mysql的where 条件后,做个总结。(不对之处欢迎指正)

操作数据库的时候,有时候只要操作一些有条件限制的数据,这时可以在SQL语句中添加WHERE子句来规定数据操作的条件。

建立数据表table1:

 

 

"="  "!=":等于,不等于,完全匹配条件。

例如:查找表中name为abc的数据,SELECT * FROM `table1` WHERE name = 'abc';运行结果如下。

 

 

">" "<" ">="  "<=" :大于,小于,大于或等于,小于或等于。

这些运算符是通过自然排序法比较的。

例如,查找uid中排在test3后的数据:SELECT * FROM `table1` WHERE uid > 'test3';(在这里数据库处理字符串时默认时不区分大小写的,所以Test3和test3是相同的),运行结果如下。

 

"BINARY":区分大小写。

1.例如:查找uid为test3的数据,如果SQL语句是这样:SELECT * FROM `table1` WHERE uid = 'test3';运行结果如下。

2.如果SQL语句加上BINARY:SELECT * FROM `table1` WHERE BINARY uid = 'test3';运行结果如下。

3.如果要限制多个字段并且都区分大小写,则在每个字段前都需加上BINARY。

 

四、"LIKE" 和 "%":搜索匹配和模式匹配符。前者表示”包含“,后者表示任意字符串,包括空字符和空格字符。这两个常搭配使用。

1.例如:查找uid中含有3的数据,SELECT * FROM `table1` WHERE uid LIKE '%3';运行结果如下。

%的位置可根据你所需要表示的任意字符串的位置而定,如本文的表中,在uid含有3的数据中,3都是在字符串的末尾,所以我们只要把%放在3前面即可,即'%3'。当然,如果在3的后面也加上%,即'%3%'也是可以的,因为%可表示空字符。SELECT * FROM `table1` WHERE uid LIKE '%3%';运行结果和上图是一样的。

再举个栗子,查找createTime为2017-08-19的数据,

SQL语句:SELECT * FROM `table1` WHERE createTime LIKE '2017-08-19%';运行结果如下。

2.当我们用了"LIKE"而没有加上"%"时,其限制效果就等同于"="了。

例如:SELECT * FROM `table1` WHERE name LIKE 'abc';运行结果如下。

3.当我们要查询字符串中含有百分号%的数据,例如查找nickName中含有"编程%"的数据,则需在%前加上\。

SQL语句:SELECT * FROM `table1` WHERE nickName LIKE '编程\%';运行结果如下。

4."NOT LIKE":与"LIKE"的操作结果相反,即不包含。

 

五、BETWEEN...AND...  : 介于某个范围之内。使用时需要注意字段的类型与设定的范围值的类型一致

1.例如,table1表中id是int型的,查询id介于2和3之间的数据,SELECT * FROM `table1` WHERE id BETWEEN 2 AND 3;运行结果如下。

2.例如,查询时间createTime介于'2017-08-20 00:00:00'和'2017-08-20 23:59:59'之间的数据

SELECT * FROM `table1` WHERE createTime BETWEEN '2017-08-20 00:00:00' AND '2017-08-20 23:59:59';

3.与">="、"<="的不同点。上述语句的作用等同于:SELECT * FROM `table1` WHERE createTime >= '2017-08-20 00:00:00' AND createTime <= '2017-08-20 23:59:59';或者是:SELECT * FROM `table1` WHERE createTime >= '2017-08-20' AND createTime < '2017-08-21';

从上述两个SQL语句我们可以发现,使用">="、"<="不同点在于,字段的类型和设定的范围值的类型可以不同,2017-08-20 23:59:59的类型是datetime,而2017-08-20的类型是date。

4."NOT BETWEEN...AND...":与BETWEEN...AND... 的操作结果相反。

 

六、"IN" : 在指定项内。格式如:IN(value1,value2,...)

1.例如,查找name为mno和hij的数据,为了后面更好地说明IN的作用,所以还加了ab和ab%:

SELECT * FROM `table1` WHERE `name` IN ('mno','hij','ab','ab%');运行结果如下。

由上可以看出IN的操作时完全匹配,而不是包含某个字符串。

2."NOT IN":不在指定项内,与IN的操作结果相反。

 

 

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值