sql学习笔记:表的运算
在MICK的《SQL基础教程》里读到的一章,写的很好,之前很乱的思路变清晰了很多。简单来说,表的运算主要是两种:列的运算和行的运算。
表的加减法
这里是对表的列操作(向下扩展)。因此,按照常理,我们需要注意:
- 作为运算对象的列的类型要一致
- 两个表选择出来的列的列数要相同:
select a,b from tableA union select a from tableB;就不正确 order by子句只能在最后使用一次,即只能进行一次分组
关键字
- 表的加法
UNION:选择并集(所以重复的部分就只出现一次)。如果想包含重复行,请用union all - 表的公共部分
intersect:选择交集(MySQL不能用) - 表的减法
except:差集(MySQL不能用)
MYSQL实现交集和差集
建立两张表:
create table t1(id int primary key,nickname varchar(20),playNum varchar(20));
create table t2(id int primary key,nickname varchar(20),playNum varchar(20));
insert into t1 values(1,1,10);
insert into t1 values(2,2,20);
insert into t1 values(3,3,30);
insert into t2 values(1,1,10);
insert into t2 values(2,2,200);
insert into t2 values(3,33,300);
一、实现交集:
SELECT id, nickname, playNum, COUNT(*)
FROM (SELECT id, nickname, playNum
FROM t1
UNION ALL
SELECT id, nickname, playNum
FROM t2
) as temp
GROUP BY id, nickname, playNum
HAVING COUNT(*) > 1;
思路如下:
- 取两个表的全集
- 次数大于1的就是交集
二、实现差集
对于小的数据集,可以使用not in来实现,大的数据集效率很低(可以去试试)。下面提供一种思路:
SELECT t1.id, t1.nickname, t1.playNum
FROM t1 LEFT JOIN t2 ON t1.id = t2.id
WHERE t1.nickname != t2.nickname
OR t1.playNum != t2.playNum;
三、参考博客:http://www.linuxidc.com/Linux/2014-06/103551.htm
联结
这里是对行进行操作(向右扩展)。
格式:select col,... from table inner/full/right/left join table2 on ...;
FULL JOIN:全连接,显示两个表的所有信息(即是没有匹配,on的条件为假)。MySQL不支持全连接INNER JOIN:内连接。显示的是表相关的信息(on的条件为真,此时on和where形同)LEFT JOIN:左表是主表。返回的是主表和别的表的相关信息。RIGHT JOIN:右表是主表。
三张以上表的联结
虽然不建议这样弄,但是还是记录一下:
select TS.col ,S.col
from TS INNER JOIN S
on TS.id= S.id
INNER JOIN ZS
ON ZS.id = TS.id
;
我理解的思路就是:新生成的集合再次操作。
sql学习笔记:表的运算的更多相关文章
- ORALCE PL/SQL学习笔记
ORALCE PL/SQL学习笔记 详情见自己电脑的备份数据资料
- CNN学习笔记:卷积运算
CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...
- Oracle之PL/SQL学习笔记
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...
- SQL学习笔记
SQL(Structured Query Language)学习笔记 [TOC] Terminal登录数据库 1.登录mysql -u root -p ; 2.显示所有数据库show database ...
- [SQL] SQL学习笔记之基础操作
1 SQL介绍 SQL 是用于访问和处理数据库的标准的计算机语言.关于SQL的具体介绍,我们通过回答如下三个问题来进行. SQL 是什么? SQL,指结构化查询语言,全称是 Structured Qu ...
- sql 学习笔记 档
从下面的内容 3c school 1:Sql 它分为两部分: 6 2:查询 7 3:插入: 9 4:数据库更新 UPDATE 9 5:删除 DELETE 10 6:Sql TOP 子句: 10 7 ...
- SQL学习笔记六之MySQL数据备份和pymysql模块
mysql六:数据备份.pymysql模块 阅读目录 一 IDE工具介绍 二 MySQL数据备份 三 pymysql模块 一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测 ...
- SQL学习笔记:基础教程
SQL语法 在表中选择列 select 列名 from 表名 选择所有列 select * from 表名 返回唯一值 select distinct 列名 from 表名 where select ...
- sql学习笔记(三)—— 联表查询
上篇写了一些sql查询的知识,这篇接着写一下有关联表查询的知识. 既然是联表查询,那肯定得多个表啊,所以,我们先创建一个教师表,表名为 teacher,并且向表中插入数据. 准备工作: 创建表语句: ...
随机推荐
- [NOI2004]小H的小屋 贪心
神仙贪心,洛谷没有插图导致我题一开始都没看懂.容易发现,块越多越优秀,然后为了满足题意,所以假如不能整除,就分为两个部分(能整除就直接均分就行了).前一部分是n/m,后一部分是n/m+1.数量也是固定 ...
- 配置URL
- Tomcat组件
Tomcat组件 tomcat常用组件 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的给件是CATALINA SERVLET容器,其他的组件按照一定 ...
- Spring的 @ExceptionHandler注解无效问题
如果你想设置了@ExceptionHandler注解进行异常捕获返回异常信息,但是Debug调试时,代码并未进到被@ExceptionHandler注解标注的方法里,那么就检查你的配置文件是否包含 & ...
- E2017614-hm
pluck n. 勇气,精神; 内脏; 快而猛的拉; 〈俚〉不及格; vt. 拔掉; 采,摘; 鼓起(勇气等); 弹(乐器); scope n. (处理.研究事务的) 范围; 眼界,见识 ...
- python中socket编程
一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系: ...
- hdu 模拟 贪心 4550
卡片游戏 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Su ...
- [转]ASP .NET MVC 之Entity Framework- code first
本文转自:http://www.cnblogs.com/tomin/archive/2012/02/29/MVC_EntityFramework.html 最近,用到了ASP.NET MVC Ent ...
- Install-Package : “XXXX”已拥有为“XXXX”定义的依赖项。
Install-Package : “AutoMapper”已拥有为“NETStandard.Library”定义的依赖项.所在位置 行:1 字符: 16+ Install-Package <& ...
- LN : leetcode 258 Add Digits
lc 258 Add Digits lc 258 Add Digits Given a non-negative integer num, repeatedly add all its digits ...