首页 >

MySql数据查询的逻辑蕴含条件问题

数据库|mysql教程MySql数据查询的逻辑蕴含条件问题
MySql,数据查询,逻辑,蕴含,条件,问题,SQL,言中,
数据库-mysql教程
简单广告网网站源码,vscode配置代码颜色,ubuntu新增分区,tomcat节点死掉,sqlite查询数据倒序,支付宝前端是用什么框架做的,花里面有爬虫怎么治,php如何调用类,seo站外贸费用,网站栏目代码,手机视频播放器网页代码,图片按指定位置缩小单页模板lzw
SQL语言中没有蕴含逻辑运算。但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p-q ≡┐p∨q. 我们通过一个具体的题目来分析:(具体的表和数据详见文章: Mysql数据库中的EXISTS和NOT EXISTS ) 题目:查询至少选修了学生200215122选修的全部课程的
织梦源码搭建网站,ubuntu跟新apt,tomcat是什么数据库,爬虫有啥意思,php视频怎么转换为flv,seo终极思维lzw
html手机自适应源码下载,vscode紫色暗红主题,ubuntu字符模式,tomcat 9配置优化,mt4连接SQLite3,德国爬虫,php 断点续传 上传,谷歌seo是真的吗,模板包下载网站,css div 后台模板lzw
SQL语言中没有蕴含逻辑运算。但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p->q ≡┐p∨q.

我们通过一个具体的题目来分析:(具体的表和数据详见文章:Mysql数据库中的EXISTS和NOT EXISTS)

题目:查询至少选修了学生200215122选修的全部课程的学生号码。

本查询可以用逻辑蕴含来表达:查询学号为x的学生,对所有的课程y,只要200215122学生选修了课程y,则x也选修了y。

形式化表示如下:

用p表示谓词“学生200215122选修了课程y”;用q表示谓词“学生x选修了课程y”.

则上述查询为:(?y)p->q

该查询可以转换为如下等价形式:

(?y)p->q ≡ ┐(?y(┐(p->q)))≡ ┐(?y(┐(┐p∨q)))≡ ┐?y(p∧┐q)

它所表达的语义是这样的:不存在这样的课程y,学生200215122选修了y,而学生x没有选。

对应的SQL语句:

SELECT DISTINCT SnoFROM SC SCXWHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SCY.Sno='200215122' AND NOT EXISTS 	(SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno));

首先对SCX中的第一条记录(200215121),SCY的第一条Sno=’200215122’的记录进行判断,结果有数据返回,NOT EXISTS的值为假;

然后对SCY的下一条Sno=’2002151221’的记录进行判断,直到遍历完所有的SCY的Sno=’200215122’,NOT EXISTS的值始终为假,则中间层的WHERE的值为假,最外层的NOT EXISTS的值为真,所以第一条数据符合查询条件,存放到结果表中;

然后对SCX中的下一条记录进行查询,直到遍历玩SCX表中所有数据。

结果输出:


MySql数据查询的逻辑蕴含条件问题
  • mysql 对历史订单的处理 |mysql 如何遍历数组中
  • mysql 对历史订单的处理 |mysql 如何遍历数组中 | mysql 对历史订单的处理 |mysql 如何遍历数组中 ...

    MySql数据查询的逻辑蕴含条件问题
  • mongoengine教程(3)数据查询
  • mongoengine教程(3)数据查询 | mongoengine教程(3)数据查询 ...

    MySql数据查询的逻辑蕴含条件问题
  • php pdo连接mysql数据查询数据
  • php pdo连接mysql数据查询数据 | php pdo连接mysql数据查询数据 ...