欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL语句:复杂查询

程序员文章站 2022-03-10 17:55:38
在where语句中,and和or同时存在的时候,通常and运算符的优先级大于or运算符。 condition1 or condition2 and condition3 实际上是 con...

在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 ‘[计怎]%’

在[]通配符 列出的字符前 加符号“^”,表示否定的意思