SQL入门学习6-集合运算
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子句,并且要写在FROM和WHERE子句之间。 - 使用联结时
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-集合运算的更多相关文章
- SQL基础学习_06_集合运算和联结
集合运算 1. 并集:UNION 例: SELECT shohin_id, shohin_mei FROM Shohin UNION SELECT shohin_id ...
- SQL Server中的集合运算: UNION, EXCEPT和INTERSECT
SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种. 集合运算的基本使用 1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复 ...
- Oracle学习之集合运算
一.集合运算操作符 UNION:(并集)返回两个集合去掉重复值的所有的记录 UNION ALL:(并集)返回两个集合去掉重复值的所有的记录 INTERSECT:(交集)返回两个集合的所有记录,重复 ...
- SQL入门学习3-数据更新
4-1 数据的插入(INSERT语句的使用方法) 使用INSERT语句可以向表中插入数据(行).原则上,INSERT语句背刺执行一行数据插入. CREATE TABLE 和INSERT 语句,都可以设 ...
- SQL入门学习1-查询基础
2-1 SELECT语句基础 SELECT语句作用 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). 重点 使用SELECT语句从表中选取数据. 为列设定显示用的别名 ...
- SQL入门学习5-函数、为此、CASE表达式
6-1. 各种各样的函数 函数的种类 算数函数 字符串函数 日期函数 转换函数 聚合函数 1.1算术函数 数据类型:NUMERIC 是大多数DBMS都支持的一种数据类型. 通过NUMBERIC(全体位 ...
- SQL入门学习2-聚合与排序
3-1 对表进行聚合查询 聚合函数 所谓聚合,就是将多行汇总为一行. 函数名 功能 COUNT 计算表中的记录数(行数) SUM 计算表中数值列的数据合计值 AVG 计算表中数值列的数据平均值 MAX ...
- SQL入门学习0-数据库与SQL
1.1 DBMS DatabaseManagermentSystem 数据库管理系统 DBMS种类 层次型数据库(HDB) 最古老的数据库之一,把数据通过层次结构的方式表现. 关系型数据库(RDB) ...
- java入门学习(十二)运算语句 if switch
这两天在网上做兼职,耽误了些博客见谅哈 欢迎来我的博客:www.taomaipin.com java中的运算语句而且频繁用到的无法就是条件语句和循环语句,包括if,for,while,switch,b ...
随机推荐
- hdu3570, 超级简单的斜率优化dp
dp[i] = dp[j] + (a[i] - a[j])^2 + m;展开得 dp[i] = min{dp[j] + a[i]^2 + a[j]^2 - 2*a[i]*a[j] + m}其中a[i] ...
- ECLIPSE JSP TOMCAT 环境搭建
ECLIPSE JSP TOMCAT 环境搭建(完整) 要学习一门语言,首先要做的就是搭建环境,然后能写一个小的Demo(类似Helloworld),不仅可以建立信心,而且还可以为之后的学习搭建一个验 ...
- swift学习一:介绍,开发文档下载
在今天wwdc2014公布会上.苹果今天公布了全新的编程语言Swift以及新版Xcode.对于开发人员来说,Swift包括了非常多开发人员喜欢的功能,能够与Objective-C和C语言共同工作.Sw ...
- Tomcat7.0设置虚拟文件夹
(1)眼下,我们的网站网站都是放在默认的文件夹下:tomcat/webapps/下的.可是,在某种情况下.我们须要把网站放到其它的文件夹,比方:tomcat所在磁盘的空间不足: 或者为了项目的统一管理 ...
- Codeforces 432 D. Prefixes and Suffixes
用扩展KMP做简单省力..... D. Prefixes and Suffixes time limit per test 1 second memory limit per test 256 meg ...
- Ceph更多Mon 更多mds
1.当前状态 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdWpfbW9zcXVpdG8=/font/5a6L5L2T/fontsize/400/fill ...
- mysqldump: Couldn't execute 'show events': Cannot proceed because system tables used by Event Schedu
最近将老版本的mysql 实例倒入 percona 5.5.30,使用的是线上的全备,结果将mysql 库下的表也倒入了,这下可悲剧了,备份报错. 没办法,将mysql库下的数据倒出来,清空,再倒入p ...
- setInterval定时和ajax请求
fnSetMarkPoint = function (param) { $.ajax({ success: function (returnValue) { window.setInterval(&q ...
- APK ubuntu下 数字签名
Android系统要求每个Android应用程序必需要经过数字签名才可以安装到系统中,也就是说假设一个Android应用程序没有经过数字签名,是没有办法安装到系统中的! Android通过数字签名来标 ...
- C++学习笔记9-运算符重载
1. 重载运营商必须有一个类类型的操作数 对于内置类型运营商.它的意义不能改变. 例如,内置整数加法运算不能被重新定义: // error: cannotredefine built-in opera ...