查询满足条件的元组-WHRER子句(运算符、BETWEEN 、LIKE、IN、NULL)

一、WHERE子句(筛选出使选择表达式为真的元组)

1、SELECT-FROM子句可以实现数据的查询(会查询出所有元组),加上WHERE子句之后可以实现数据的筛选(会查询出满足条件的元组)

SELECT 【ALL|DISTINCT】<目标列表达式1>【,<目标列表达式2>,...】

FROM <表名或视图名1>【,<表名或视图名2>,...】

【WHERE <元组选择条件表达式>】

【GROUP BY <属性列名1>【,<属性列2>,...】【HAVING <组选择条件表达式>】】

【ORDER BY <目标列名1>【ASC|DESC】【,<目标列名2>【ASC|DESC】,...】】

2、元组选择表达式的构成

(1)运算符

(2)谓词:BETWEEN、LIKE、IN、IS NULL

(3)属性列或常量

二、运算符

包含有算术运算符、比较运算符、逻辑运算符

(1)例1:查询选修课编号为'003'的学生学号和成绩

关系代数表达式:

\Pi sNo,grade(\sigma (cNo)= '003'(sC))

SQL语句:

select sNo,grade
from sC
where cNo='003';

(2)例2:查询“数计学院”“女”同学的学生学号和姓名

SQL语句:

select sNo,sN
from s
where sD='数计学院' and sex='女';

三、谓词

1、BETWEEN

(1)用于判断某个值是否属于一个指定的区间

格式:E 【NOT】BETWEEN E1 AND E2

注意:E、E1、E2都是表达式,且E1<E2

(2)举例:查询出生时间在2001-01-01到2003-12-31之间的学生的姓名和出生时间

select sN,sB
from s
where sB between '2001-01-01' and '2003-12-31'

2、LIKE

(1)用于部分匹配查询,即有一部分是可以通过通配符进行匹配的

(2)格式:

<属性列名> 【NOT】 LIKE 字符串表达式(要用引号引用起来

(3)字符串表达式中的通配符:

字符"_":表示任意一个单字符

字符"%":表示长度可为0的任意长度的字符串

(4)注意:LIKE匹配的是字符串属性的属性值

(5)举例:查询姓“猪”的所有学生的学号和姓名

select sNo,sN
from s
where sN like '猪%'

(6)字符串表达式中有通配符的,要使用ESCAPE定义一个转义符‘\’

举例:查询课程名后缀为"_实验"的课程信息

select *
from c
where cN like '%\_实验'escape'\'

如果不加转义符的话,_起着通配符的作用

3、IN

(1)作用:用于判断一个值是否属于一个集合

(2)格式:E 【NOT】 IN (V1,V2,...,Vn)

(3)语义:只要E的值与集合中任何一个值相等,则谓词为真

(4)举例:查询非数计学院和非材料学院的学生的学号、姓名和所在院

select sNo,sN,sD
from s
where sD not in('数计学院','材料学院')

4、NULL(NULL只能表示元组的某个属性值时空缺的,不能作为操作数进行运算,可用来判断控空值)

(1)作用:用于判断属性值是否为空,当元组的某个属性未被赋值时,系统会将NULL放在这个属性的属性值的位置上,表示该属性值是空缺的

(2)格式:

<属性列名> IS 【NOT】NULL

(3)举例:查询所有缺少选课成绩的学生的学号和相应的课程号

select sNo,cNo
from sC
where grade is null

四、运算优先级

五、当对多个表进行查询时,可用谓词和运算符来构造更为复杂的逻辑表达式

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值