7-1 表的加减法

集合运算

集合运算就是对满足同一规则的记录,进行的加减等四则运算。

1.1 表的加法——UNION

表之间进行并集运算。

语法:

SELECT 对应列1,对应列2……
FROM 表1
UNION
SELECT 对应列1,对应列2……
FROM 表2;

UNION等集合运算符,通常都会出去重复的记录。

重复的记录

如果对应列内容 完全相同,而其他列有所不同,那也算是重复的记录。也就是说,如果SELECT之后的结果,完全相同的两条记录,会删掉重复的一条。

注意1

作为运算对象的记录的列数以及内容和类型必须相同。

注意2

可以使用任何SELECT语句,但是ORDER BY子句只能在最后一次使用。

包含重复行的并集——ALL

与UNION相似,但是如果有重复的记录,不会进行删除。

选取公共部分,交集——INTERSECT

语法与UNION完全相同。

作用是选取相交,也就是交集部分。

如果希望保留重复行,使用INTERSECT ALL


记录的减法——EXCEPT

语法与UNION完全相同。

作用:集合A EXCEPT 集合B ,

集合A减去与集合B相交的部分。

在其他DBMS

在Oracle中,

用MINUS代替EXCEPT。


7-2 联结(以列为单位,对表进行联结)

联结运算,通俗地说就是把其他表的列添加过来。

内联结——INNER JOIN

例:

SELECT T.name , T.age , T.id , S.id , S.address,
FROM STU AS T INNER JOIN STU2 AS S
ON T.id = S.id

要点

  • FROM 中要使用多张表,建议使用别名,提高可读性。
  • 使用ON子句。

    我们可以在ON之后指定两张表联结所使用的列(联结键)。

    在使用到多个联结条件时,可以使用AND,OR进行。

    联结时必须有ON子句,并且要写在FROMWHERE子句之间。
  • 使用联结时SELECT子句中的列需要按照<表的别名>.<列名>的格式进行。

外联结——OUTER JOIN

内联结一样,同样是联结功能。但是只要数据存在于某一表当中,就能够读取出来。而内联结会将那些记录舍去。

虽说如此,但是表中不存在的信息我们还是无法得到,数值都被置位了NULL。

例:

SELECT T.name , T.id , S.class, S.age
FROM STU AS T LEFT OUTER JOIN STU2 AS S
ON T.id = S.id;

外联结要点

  • 选取主表

    在进行外联结的时候,要进行主表的选取。

    使用LEFT或者RIGHT关键字进行主表的选取。

    选取主表之后,就会基于主表,开始进行联结。若主表中有些记录不满足联结的条件,则对应的联结列置位NULL。

    所以结果的记录数应该与主表记录数目相同。

三张表以上的联结

原则上联结表的数量并没有进行限制。

例:

SELECT T.id,T.a ,T.c ,S.a,S.b ,W.a,W.b
FROM STU AS T INNER JOIN STU2 As S
ON T.id = S.id
INNER JOIN STU3 AS W
ON T.id = W.id
WHERE W.id = '111';

按照例程,是一对、一对地嵌套下去。

外联结也是同理。


交叉联结

交叉联结时所有联结运算的基础。但是平时不怎么使用。

对于满足相同规定的表进行交叉连接的集合运算符是

CROSS JOIN(笛卡尔积)

进行交叉联结时无法使用内连接和外联结中所使用的ON子句。因为交叉联结时对两张表中的全部记录进行交叉组合。因此结果中的记录通常是两张表中行数的乘积

结果就是两个表记录的相互组合。

类似于集合的乘法。


SQL入门学习6-集合运算的更多相关文章

  1. SQL基础学习_06_集合运算和联结

    集合运算 1. 并集:UNION     例:     SELECT shohin_id, shohin_mei    FROM Shohin    UNION    SELECT shohin_id ...

  2. SQL Server中的集合运算: UNION, EXCEPT和INTERSECT

    SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种. 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复 ...

  3. Oracle学习之集合运算

    一.集合运算操作符  UNION:(并集)返回两个集合去掉重复值的所有的记录  UNION ALL:(并集)返回两个集合去掉重复值的所有的记录 INTERSECT:(交集)返回两个集合的所有记录,重复 ...

  4. SQL入门学习3-数据更新

    4-1 数据的插入(INSERT语句的使用方法) 使用INSERT语句可以向表中插入数据(行).原则上,INSERT语句背刺执行一行数据插入. CREATE TABLE 和INSERT 语句,都可以设 ...

  5. SQL入门学习1-查询基础

    2-1 SELECT语句基础 SELECT语句作用 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). 重点 使用SELECT语句从表中选取数据. 为列设定显示用的别名 ...

  6. SQL入门学习5-函数、为此、CASE表达式

    6-1. 各种各样的函数 函数的种类 算数函数 字符串函数 日期函数 转换函数 聚合函数 1.1算术函数 数据类型:NUMERIC 是大多数DBMS都支持的一种数据类型. 通过NUMBERIC(全体位 ...

  7. SQL入门学习2-聚合与排序

    3-1 对表进行聚合查询 聚合函数 所谓聚合,就是将多行汇总为一行. 函数名 功能 COUNT 计算表中的记录数(行数) SUM 计算表中数值列的数据合计值 AVG 计算表中数值列的数据平均值 MAX ...

  8. SQL入门学习0-数据库与SQL

    1.1 DBMS DatabaseManagermentSystem 数据库管理系统 DBMS种类 层次型数据库(HDB) 最古老的数据库之一,把数据通过层次结构的方式表现. 关系型数据库(RDB) ...

  9. java入门学习(十二)运算语句 if switch

    这两天在网上做兼职,耽误了些博客见谅哈 欢迎来我的博客:www.taomaipin.com java中的运算语句而且频繁用到的无法就是条件语句和循环语句,包括if,for,while,switch,b ...

随机推荐

  1. Linux如何查找大文件或目录总结及在全部目录中查找

    在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在Linux系统中,如何去搜索一些比较大的文件呢?下面我整理了一下在Linux系统中如何查找大文件或文件 ...

  2. Hyper-V笔记

    Hyper-V的网络架设 Hyper-V中创建“虚拟网络”(可看成交换机)会在物理机中创建相应的虚拟网卡.Hyper-V安装好后会默认创建一个“本地连接-虚拟网络”对应的虚拟网卡给物理机使用,原本的本 ...

  3. Android应用开发-小巫CSDN博客client之显示博文具体内容

    Android应用开发-小巫CSDN博客客户端之显示博文具体内容 上篇博文给大家介绍的是怎样嵌入有米广告而且获取收益,本篇博客打算讲讲关于怎样在一个ListView里显示博文的具体信息.这个可能是童鞋 ...

  4. linux下Ftp环境的搭建

      Ftp环境的搭建 1.ftp软件的安装 使用ssh远程连接linux系统,上传和下载一些文件,Ftp是不可少的 Ftp的安装很简单,远程登录系统后使用命令 yum list vsftpd 通过提示 ...

  5. C# 通过豆瓣网络编程API获取图书信息

    这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...

  6. VMware装ubuntu 进不去图形界面, 卡在Installing VMware Tools

    1.按Ctrl +C结束,进入命令行 2.ubuntu login:_ 依次输入: 1)你的用户名:输入自己的! 2)你的密码:输入自己的! 3)获取root权限:sudo su 输密码 4)/etc ...

  7. vc++笔记十一

    一.LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 连接器LNK是通过调用cvtres.exe完毕文件向coff格式的转换的,所以出现这样的错误的原因就是cvtres.exe出现了问题 ...

  8. How to install PL/SQL developer on linux (转)

    PL/SQL developer 在linux上的安装方法工欲善其事必先利其器,PL/SQL和toad对于ORACLE从业人员来说都是很重要的工具,但这些工具都没有linux的发行版,如果要在linu ...

  9. S如何解决安卓DK无法下载Package问题

    安装一些用户Android SDK后.打开Android SDK Manager下载API当总是显示"Done loading packages"却迟迟不能前进.自己也出现了这样的 ...

  10. Linux C编程语言学习材料

    C语言作为最基础的编程语言,30年虚弱的患病率. 无论是准备做 PHP/Java/Python/Golang 开发学习.C语言都是基础的,我们非常多基础非常小的互联网执行的开源软件服务都是C语言构筑, ...