在where语句中,and和or同时存在的时候,通常and运算符的优先级大于or运算符。
condition1 or condition2 and condition3
实际上是
condition1 or (condition2 and condition3)
in运算符允许根据一行记录中是否有一列包含在一系列的值中选择改行
id | name | course | age | sex |
---|---|---|---|---|
1 | 李晓明 | 机械工程 | 20 | 男 |
2 | 李晓明 | 计算机 | 20 | 男 |
3 | 李晓明 | 计算机 | 20 | 男 |
4 | 李晓明 | 生物 | 20 | 男 |
select name, course, age, sex from student where course in ('计算机', '生物', '机械工程') order by course
in运算符相对应还有not in运算符。
与in运算符相比,or功能是一样的。
但是选择多个条件时,in运算符很方便,在括号内罗列,效率也比or高。
使用in运算符时,后面可以是另外一条select语句,既是子查询。
select name, course, age, sex from student where not name = '计算机' order by name
查询结果就是
id | name | course | age | sex |
---|---|---|---|---|
1 | 李晓明 | 机械工程 | 20 | 男 |
1 | 李晓明 | 生物 | 20 | 男 |
使用like进行模糊查询
开头使用 / 结尾匹配
% 通配符
course | name | count |
---|---|---|
计算机理念 | 李晓明 | 20 |
计算机理念 | 李晓明 | 20 |
怎么学好计算机 | 李晓明 | 20 |
怎么学好计算机 | 李晓明 | 20 |
要查询以 计算机开头 的课程
select name, name, count from course where course like '计算机%'
就会查询出第一列和第二列的数据 – 计算机理念
如果需要查询 计算机结尾, 实现方式是 like ‘%计算机’
如果查询计算机开头,理念结尾,实现是 like ‘计算机%理念’
“”通配符只表示任意一个字符的匹配,如果是两个字符的匹配,就要写成“__”
因此,计算机理念就要写成 like ‘计算机_ _’
“[]”通配符满足出现在[]中的字符,字符串就满足查询条件
like ‘abc[def]’ 表示 abcd, abce, abcf
查询所有以“机” 或者 “怎”为开头的课程
course like ‘[计怎]%’
在[]通配符 列出的字符前 加符号“^”,表示否定的意思