当前位置: 首页 > news >正文

关系数据库标准语言SQL(11,12)

目录

带有EXISTS谓词的子查询

exists谓词

例子

not exists谓词

例子

不同形式的查询间的替换

用EXISTS/NOT EXISTS实现全称量词

用EXISTS/NOT EXISTS:实现逻辑蕴涵

集合查询

并操作UNION

交操作INTERSECT

差操作EXCEPT

基于派生表的查询

select语句的基本格式


带有EXISTS谓词的子查询

exists谓词

EXISTS谓词代表存在量词,带有EXISTS谓词的子查询只返回逻辑真值“true”或逻辑假值“false'”

例子

【例】查询所有选修了1号课程的学生姓名。

SELECT Sname FROM Student  WHERE EXISTS(SELECT FROM SC WHERE Sno=Student.Sno AND Cno=1')

将student表里的数据一条一条带入到子查询中,看是不是选修了课程号1的。

使用存在量词EX1STS后,若内层查询结果非空,)则外层的WHERE子句返回真值;否则返回假值。

not exists谓词

若内层查询结果非空,则外层的WHERE子句返回假值,若内层查询结果空则外层的WHERE子句返回真值

例子

查询没有选修1号课程的学生姓名。

SELECT Sname FROM Student WHERE NOT EXISTS(SELECT FROM SC WHERE Sno Student.Sno AND Cno =1')

不同形式的查询间的替换

一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换;

所有带IN谓词、比较运算符、 ANY和ALL谓词的子查询都能完成对EXISTS谓词的子查询等价替换。

用EXISTS/NOT EXISTS实现全称量词

SQL语言中没有全称量词(For all)。可以把带有全称量词的谓词转换为等价的带有存在量词的谓词

用EXISTS/NOT EXISTS:实现逻辑蕴涵

SQL语言中没有蕴涵(Implication)逻辑运算,可以利用谓词演算将逻辑蕴涵谓词等价转换

p推出q,q推不出p。

集合查询

并操作UNION

SELECT * FROM Student WHERE Sdept='CS UNION SELECT FROM Student WHERE Sage≤=19

UNION:将多个查询结果合并起来,系统自动去掉重复元组

UNION ALL:将多个查询结果合并起来时,保留重复元组。

交操作INTERSECT

查询计算机科学系的学生氖年龄不大于19岁的学生的交集。

SELECT FROM Student WHERE Sdept='CS' INTERSECT SELECT FROM Student WHERE Sage<=19

差操作EXCEPT

【例】查询计算机科学系的学生与年龄不大于19岁的学生的差集。

SELECT FROM Student WHERE Sdept='CS'; EXCEPT SELECT FROM Student WHERE Sage<=19;

查询的结果在前面的集合里但不在后面的集合里。

基于派生表的查询

        子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(derived table)成为主查询的查询对象。

        如果子查询中没有聚集函数,派生表可以不指定属性列,子查询SELECT子句后面的列名为其默认属性。

select语句的基本格式

SELECT [ALL / DISTINCTI<目标列表达式>[别名][<目标列表达式>[别名]

FROM<表名或视图名>[别名] <表名或视图名>[别名

WHERE<条件表达式>

[GROUP BY<列名>

[HAVING<条件表达式>

[ORDER BY<列名2>[ASC / DESC]

http://www.lryc.cn/news/454917.html

相关文章:

  • Oracle 11g RAC 节点异常重启问题分析
  • vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本
  • C嘎嘎入门篇:类和对象番外(时间类)
  • Spring Boot项目实战教程:快速构建Web应用与RESTful API
  • OpenAI 开发者大会!实时语音功能有API了,GPT-4o支持多模态微调,上下文cache功能上线
  • 解决ros2 rviz Fixed Frame No TF data问题
  • Python数据分析篇--NumPy--进阶
  • 基于Arduino的宠物食物分配器
  • make和Makefile
  • 【数学分析笔记】第4章第4节 复合函数求导法则及其应用(2)
  • 【预备理论知识——2】深度学习:线性代数概述
  • 【目标检测】yolo的三种数据集格式
  • 数据分析案例-机器学习工程师薪资数据可视化分析
  • Django连接Dify、ChatGPT4o并计算tokens数量方法
  • 面试系列-淘天提前批面试
  • 计算机中科学中有哪些空间换时间的操作??
  • Mac安装Manim并运行
  • leetcode58:最后一个单词的长度
  • 18448 最小生成树
  • 前端工程化 - Vue
  • 使用 NVIDIA H100 上的 Azure 机密计算释放隐私保护 AI 的潜力
  • 目标检测与图像分类:有什么区别?各自的使用场景是什么?
  • Lua 数据类型
  • 复现文章:R语言复现文章画图
  • 东方仙盟——软件终端架构思维———未来之窗行业应用跨平台架构
  • 支持向量机(SVM)基础教程
  • Python小示例——质地不均匀的硬币概率统计
  • 京东web 京东e卡绑定 第二部分分析
  • 【数据结构与算法】Greedy Algorithm
  • Ubuntu22.04之mpv播放器高频快捷键(二百七十)