我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。 self-transcendence
第6章 使用where子句查询表中满足条件的记录
6.1 比较查询
Where可以使用比较运算符。
比较运算符分为三类:算数比较运算符、between...and、in
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 、or、 not,优先级顺序not > and > or
Sql server中可以使用&代替and,使用|代替or,使用~代替not
例:where (dept=‘计算机’or dept=‘数学系’) and salary > 3000
6.3 空值查询
Null表示空值,is null或is not null 判断空值
例:where persion is not null
6.4 使用like操作符实现模糊查询
模糊查询关键字like,通配符%和_使用,_出现一次代表一个字符,%代表0个或多个,like后面的匹配字符必须要使用单引号,
例:where stuName like ‘张%’ or stuName like ‘李_’
Mysql的like不区分大小写
Sql server还支持[ ][^ ]通配符,[ ]表示查询某一个范围内的所有单个字符,[^ ]表示那些不在某一个范围内的字符,例:匹配abcd,like [abcd];匹配abcd以外,like [^abcd]
6.4.1 使用转义字符
数据本身有时会含有%_,这时候我们要保证%只是符号,不是通配符,就要使用escape
例:where deptId like ‘%a_%’ escape ‘a’
这个例子中a被标注为转义字符,及a后面的通配符就变成了普通的字符
6.5 使用regexp关键字进行模式匹配
mysql中使用regexp关键字,只要是匹配的字符串中含有模板中的子串,就返回true
Regexp有一些关键字:
^:用来匹配字符串的开始
$:用来匹配字符串的结尾
[]:括起来的字符都可以匹配,[abc]那么只要有a、b、c其中任一都可以
-:表示匹配字符的范围,[a-z]那么a-z任一都可以
+:表示用于匹配的字符在被匹配的字符中至少出现一次或多次
*:标识用于匹配的字符在被匹配的字符中出现0次或多次
():括起来的是整体,(abc)则abc要整体出现
{m}:表示{}前面的字符要出现m次,例:{abc}{2}则表示字符串要含有abcabc