《用实例学习SQL》第二篇: 单表查询(2)

相关表
常见的查询谓词
比较:=,>, <, >=, <=, !=(<>)
确定范围:(not) between A and B – 其中包含A,B。
确定集合:(not) in
字符匹配:(not) like
空值:is (not) null
连接谓词: and, or, not

(1)、比较谓词简单,除了‘=’外,其他的都只能使用在数值之间
(2)、确定范围:

select * 
from Student
where Sage between 20 and 23;

(含有20和23的元组也在结果元组内)
(3)、确定集合:

select *
from Student
where Sdept in ('cs', 'ma', 'is');

表示Sdept的值是‘cs’, ‘ma’, 'is’都是结果元组
其中,in 的参数还可以是一个属性列,如:

select *
from Student
where Sdept in (select distinct Sno from Sc);

这是一个嵌套查询,在后面会讲,当然,这里in后面的参数只能是一列的值。

(4)、字符匹配:在字符匹配中*%用于匹配任意多个字符,_*匹配一个字符。
格式:(not)like ‘<匹配串>’ [escape ‘<换码字符>’]

select *
from Student
where Sname like '欧阳%'
# 当Sname的值是以'欧阳'开头时‘欧阳峰, 欧阳娜娜’都是匹配的,该元组都是结果元组
(where Sname like '欧阳_')#这个匹配以欧阳开头的三个字名字,如‘欧阳夏’等

至于后面的escape关键字,当我们要匹配的字符串中有%或_时,不转义

select *
from course
where Cname like 'DB\_Design' escape '\';
# 那这个就匹配‘DB_Design’

(5)、空值判断:
一个值是不是空值只能是 ‘is (not) null’来判断,不能由‘=’来判断。
(空值实际上是一个不确定的值,也就是什么值都可能,也什么值都不是,所以不能通过‘=’来判断)

select *
from Sc
where Grade is null;

(6)、连接谓词用来连接多个谓词子句,有‘and’ ‘or’ ‘not’
其中‘and’的优先级高于‘or’,但是括号可以改变优先级。

select *
from Student
where Sdept = 'CS' and Sage < 20; 
# 只有两个谓词子句都满足时才是结果元组
(where Sdept = 'CS' or Sage < 20; )
# 只有一个谓词子句满足就是结果元组。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值