6.使用where子句查询表中满足条件的记录

我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。                   self-transcendence

第6章 使用where子句查询表中满足条件的记录

6.1 比较查询

Where可以使用比较运算符。

比较运算符分为三类:算数比较运算符、between...andin

6.1.1 算数比较运算符

=>=<=><!=<>(不等于)、!>(不大于)、!<(不小于)

使用比较运算符,符号两边的数据类型要一致

6.1.2 between...and运算符查询指定条件范围的记录

例:where age between 30 and 50     查年龄30-50的人

如果要查30-50之外的人,就用where age not between 30 and 50

6.1.3 in运算符

例:where dept in(‘计算机系’,‘数学系’)

Dept字段中等于计算机系或数学系的。

或者where dept=‘计算机系’ or  dept=‘数学系’

6.1.4 字符串比较

目前不知道有什么用,等回头再看看

6.1.5 日期时间的比较

日期值和时间比较,日期和时间必须是数据库服务器可以接受的字符串格式。

例:where birth > ’19860101 ’,数据库的格式是  --日 时::

比较日期值和时间要用单引号

6.2 逻辑查询

逻辑运算符:and ornot,优先级顺序not > and > or

Sql server中可以使用&代替and,使用|代替or,使用~代替not

例:where dept=‘计算机’or  dept=‘数学系’) and  salary > 3000

6.3 空值查询

Null表示空值,is nullis not null 判断空值

例:where  persion  is  not  null

6.4 使用like操作符实现模糊查询

模糊查询关键字like,通配符%_使用,_出现一次代表一个字符,%代表0个或多个,like后面的匹配字符必须要使用单引号,

例:where  stuName  like ‘张%or  stuName  like ‘李_

Mysqllike不区分大小写

Sql server还支持[ ][^ ]通配符,[ ]表示查询某一个范围内的所有单个字符,[^ ]表示那些不在某一个范围内的字符,例:匹配abcdlike [abcd];匹配abcd以外,like [^abcd]

6.4.1 使用转义字符

数据本身有时会含有%_,这时候我们要保证%只是符号,不是通配符,就要使用escape

例:where deptId like %a_%escape a

这个例子中a被标注为转义字符,及a后面的通配符就变成了普通的字符

6.5 使用regexp关键字进行模式匹配
mysql中使用regexp关键字,只要是匹配的字符串中含有模板中的子串,就返回true

Regexp有一些关键字:

^:用来匹配字符串的开始

$:用来匹配字符串的结尾

[]:括起来的字符都可以匹配,[abc]那么只要有abc其中任一都可以

-:表示匹配字符的范围,[a-z]那么a-z任一都可以

+:表示用于匹配的字符在被匹配的字符中至少出现一次或多次

*:标识用于匹配的字符在被匹配的字符中出现0次或多次

():括起来的是整体,(abc)则abc要整体出现

{m}:表示{}前面的字符要出现m次,例:{abc}{2}则表示字符串要含有abcabc

猜你喜欢

转载自blog.csdn.net/selftranscendence/article/details/79969980