这篇文章主要介绍了关系型数据库存在用法的的相关资料,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
简介
存在用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值真实的或错误。
存在指定一个子查询,检测行的存在。语法:存在子查询。参数子查询是一个受限的挑选语句(不允许有计算子句和到…里面关键字)。结果类型为布尔型,如果子查询包含行,则返回没错。
示例
一张活动配置主表活动_主要通过行为代码来唯一标明一场活动,活动举办地点适配表活动_区域,通过行为代码与主表进行关联,活动奖品表活动_sku,通过行为代码与主表进行关联。
活动主表
创建表"活动_主要"(
` id bigint(20)NOT NULL AUTO _ INCREMENT,
` act _ code varchar(255)不为空注释活动代码,
` act _ name varchar(255)不为空注释活动名称,
主键(` id `),
唯一键` uniq_code` (`act_code `)
)ENGINE=InnoDB AUTO _ INCREMENT=1 DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci COMMENT=活动主表
活动在哪些网站举办的适配表
创建表`活动区域`(
` id bigint(20)NOT NULL AUTO _ INCREMENT,
` act _ code varchar(255)不为空注释活动代码,
` area varchar(255)不为空注释参与此活动的网站,
主键(` id `)
)ENGINE=InnoDB AUTO _ INCREMENT=1 DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci COMMENT=活动适配的网站列表
活动奖品表
创建表` activity_sku `(
` id bigint(20)NOT NULL AUTO _ INCREMENT,
` act _ code varchar(255)不为空注释活动代码,
“SKU”varchar(255)不为空注释活动赠送的商品,
主键(` id `)
)ENGINE=InnoDB AUTO _ INCREMENT=1 DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci COMMENT=活动赠品表
比较使用存在和在…里的查询
这个例子比较了两个语义类似的查询。第一个查询使用在…里而第二个查询使用存在。注意两个查询返回相同的信息。
# 查询体重秤
select * from activity _ main where act _ code in(
从活动_sku中选择act_code,其中sku=翎野君的体脂称
)
# 查询体重秤
select * from activity _ main a where exists(
从活动_sku b中选择1,其中 a.act_code=b.act_code,b.sku=翎野君的体脂称
)
# 模糊查询贝科英国婴儿推车
select * from activity _ main where act _ code in(
从活动_sku中选择act_code,其中库存单位类似于" %B-BEKO% "
)
# 模糊查询贝科英国婴儿推车
select * from activity _ main a where exists(
从活动_sku b中选择1,其中a.act_code=b.act_code,B . SKU喜欢“% B-BEKO %”
)
# 查询在博客园举办的活动
select * from activity _ main where act _ code in(
select act _ code from activity _ area where area=博客园
)
# 查询在博客园举办的活动
select * from activity _ main a where exists(
从活动_领域b中选择1,其中 a.act_code=b.act_code,b.area=博客园
)
# 在博客园举办活动且活动奖品为华为手机的活动信息
select * from activity _ main where act _ code in(
select act _ code from activity _ area where area=博客园和行为代码在(
从活动_sku中选择act_code,其中sku=华为P30Pro
))
# 内层的存在语句只在当前在哪里语句中生效,最终是否返回,要根据最外层的存在判断,如果是真(真)就返回到结果集,为假(假)丢弃。
select * from activity _ main a where exists(
从活动_领域b中选择1,其中 a.act_code=b.act_code,b.area=博客园并且存在
(从活动_sku c中选择1,其中a.act_code=c.act_code,c.sku=华为p30专业版’)
)
以上就是关系型数据库存在用法小结的详细内容,更多关于关系型数据库存在用法的资料请关注我们其它相关文章!