原文地址:http://mis.blogbus.com/logs/11754651.html

原来集合运算在删选条件为非唯一属性时才显的那么重要

-------------------------------------

--  SQL集合运算——查询的差集      --

-------------------------------------

--求没有选择课号为‘c01’的学生学号

/*以下语句不正确,原因是cid不是独立主键,并不能函数决定sid,

意味着选择了'c01'的某一sid,可能会同时选择非'c01'的其他cid,

因此,并不能通过仅排除'c01',而将所有的曾选择过'c01'的该sid排除在外。

该查询的目标范围将比实际的大。

*/

select sid from learning

where cid<>'c01'

/*正确语句*/

select sid from learning

except (

select sid from learning where cid='c01'

)

--求没有选择课号为‘c01’的学生的学号和课号

/*不正确。因为sid与cid的同时存在于子查询中,使得要减去的部分将比原来的小,

排除了该sid同时选择其他cid而被排除的可能性。其结果范围将比没有cid的大。

*/

select sid,cid from learning

except (

select sid,cid from learning where cid='c01'

)

--正确:

select sid,cid from learning

where sid in (

select sid from learning

except (

select sid from learning where cid='c01'

)

)

-------------------------------------

--  SQL集合运算——查询的交集      --

-------------------------------------

--求同时选了课号为'c01'和'c02'的学生学号

/*以下语句不正确。其结果将是空值,因为一个属性在一个元组中只能有一个值,不会有两个值。

select运行时只会一行一行地(逐个元组)进行,不会跨行进行比较。

*/

select sid from learning where cid='c01' and cid='c02'

/*以下语句正确:*/

select sid from learning where cid='c01'

intersect (

select sid from learning where cid='c02'

)

/*以下语句正确:通过自连接将cid的一个属性,变成两个名义属性,再逐行进行比较:*/

select l1.sid from learning l1,learning l2

where l1.sid=l2.sid and l1.cid='c01' and l2.cid='c02'

--问题:求同时选了课号为'c01'和‘c02’的学生学号和课号。

-------------------------------------

--  SQL集合运算——查询的并集      --

-------------------------------------

--求计算机系学生的学号和选了'c03'课程且成绩在分以上的学生学号

select sid from student where department='计算机系'

union (

select sid from learning

where cid='c03' and score>80

)

--分解分析,两个子查询自动将重复出现的记录合并

select sid from student where department='计算机系'

select sid from learning

where cid='c03' and score>70

SQL中的集合运算有必要存在的几个例子相关推荐

  1. SQL进阶之集合运算

    SQL进阶之集合运算 用SQL进行集合运算 越前须知(雾) 概述 具体用法 比较两表是否相等 用差集实现关系除法运算 在同一张表中寻找相同子集 用SQL进行集合运算 越前须知(雾) 本系列参考< ...

  2. SQL中使用的运算符号详解

    文章目录 前言 1. 算术运算符 加法与减法运算符 乘法与除法运算符 求模(求余)运算符 2. 比较运算符 1.等号运算符 2.安全等于运算符 3.不等于运算符 4. 空运算符 5. 非空运算符 6. ...

  3. SQL学习之“集合运算”

    本篇文章记录学习SQL集合运算的过程与心得. 对于集合这个概念,印象最深的就是数学课里学的,简单的说就是把研究对象当做元素,则一些元素组成的整体就叫集合. 而在数据库领域,则表示记录的集合,具体来说, ...

  4. sql中的并、交、差

    ⑸ 集合运算连接 有时候,用户希望在SQL查询中利用关系代数中的集合运算(并.交.差)来组合关系,SQL为此提供了相应的运算符:UNION.INTERSECT.EXCEPT(oracle的minus? ...

  5. c语言集合运算有菜单,怎样用C语言实现集合运算

    [转]STL算法-合并(集合) hechao322514692017-02-24 R:集合运算 thoixy29792014-10-27 C++ STL 集合运算 weixin_42993054605 ...

  6. mysql 交并差_mysql学习笔记:集合运算并交差,其他

    总结一下今天数据库课堂上的所学2333 1. 在SQL语言实践中,集合运算的实现方法,推荐顺序如下: 并运算:union 交运算:in, exists, intersect(很多DBMS基本上不支持i ...

  7. oracle union all写法,【oracle】-集合运算:UNION,UNION ALL...

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...

  8. Oracle集合运算

    SQL> --什么是集合运算? SQL> --查询10号部门和20号部门的员工 SQL> --第一种 SQL> select *   2  from emp   3  wher ...

  9. python中 zip()的使用和pandas中的列运算(map apply等)

    map()函数语法: map(function,iterable-) -> function – 函数 iterable – 一个或多个序列 案例 s1 = [1,2,3,4,5] s2 = [ ...

  10. SQL中SELECT语句详解

    本篇文章讲述SQL语句中的SELECT查询语句,以供参考,如有错误或不当之处还望大神们告知. 简单查询SELECT-FROM 用于无条件查询单张表中的行或列 假设有表如图所示 查询名字叫 '叶清逸' ...

最新文章

  1. 总监说,20、30岁年轻人面临人生抉择,早点知道这个法则,会少一些遗憾!
  2. php 域名验证系统_PHP授权验证系统(域名+IP双重验证一键更新授权系统)
  3. maven配置环境变量失败解决办法
  4. Redis 是属于多线程还是单线程?
  5. ip camera芯片级解决方案
  6. jQuery图表插件 JS Charts
  7. maven报错Non-resolvable parent POM for com.wpbxin:springboot2-first-example:0.0.1-SNAPSHOT: Could not
  8. CSS选择器种类及使用方法
  9. SQL Server 2008 Service Broker
  10. 小身材大能耐,面向物联网开发的 ACRN Hypervisor开源啦!
  11. 少儿编程孩子的学习路线
  12. 使用moviepy为视频添加字幕
  13. 一个简洁的PNG ICO转换工具 支持多分辨率的ICO生成
  14. 利用Python爬取音乐资源,小白福音
  15. 关于卫星伪距残差的理解
  16. EntityFramework之领域驱动设计实践(五)
  17. Access Violation(非法访问)问题解析
  18. linux主机又又中木马了
  19. vulnhub_ODIN: 1靶机
  20. oracle sql时间排序函数,sql的rank函数

热门文章

  1. DBA日常管理——数据归档(Archiving-Data)
  2. shell之文本过滤(awk)(转)
  3. 软件项目管理题外话篇-项目计划与结婚
  4. HCIE-RS面试--MAC地址漂移及应对
  5. 基于Cocos2d-x开发guardCarrot--1 《保卫萝卜》简介
  6. C# WPF框架从http协议上获取返回的json数据及其解析json数据
  7. PIM SSM技术原理与实验
  8. 关于【CDQ分治】的学习
  9. 用 Windows Media Center 免费看大片 (二)
  10. 在chrome中通过getComputedStyle()获取透明度的问题