这篇文章主要介绍了关系型数据库存在用法的的相关资料,帮助大家更好的理解和使用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专业版’)
)
以上就是关系型数据库存在用法小结的详细内容,更多关于关系型数据库存在用法的资料请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。