11.1 关系数据操作

并(UNION):把具有相同字段数目和字段类型的表合并到一起。
笛卡尔积(CARTESIAN PRODUCT):没有连接条件表关系的返回结果。字段数=table1字段数+table2字段数,记录数=table1记录数*table2记录数。
内连接(INNER JOIN):在表关系的笛卡尔积数据记录中,保留表关系中所有匹配的数据记录,舍弃不匹配的数据记录.
外连接(OUTER JOIN):在表关系的笛卡尔积数据记录中,不仅保留表关系中所有匹配的数据记录,而且还会保留部分不匹配的数据记录。

11.2 内连接(INNER JOIN)

  按照匹配的条件分为:自然连接,等值连接,不等连接

  1.自然连接:表关系的笛卡尔积中,首先根据表关系中相同名称的字段自动进行记录匹配,然后去掉重复的字段。

  2.等值连接:表关系的笛卡尔积中,选择所匹配字段值相等(=符号)的数据记录,在新关系中不会去掉重复的字段。

  3.不等连接:表关系的笛卡尔积中,选择所匹配字段值不相等(!=符号)的数据记录,在新关系中不会去掉重复的字段。

SELECT field1,field2,...,fieldn
FROM join_tablename1 INNER JOIN join_tablename2
ON join_condition

11.3 外连接(OUTER JOIN)

  按照保留不匹配条件数据来源可以分为:左外连接、右外连接、全外连接

  1.左外连接:表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含关联左边表中不匹配的数据记录。

  2.右外连接:表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含关联右边表中不匹配的数据记录。

  3.全外连接:表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含左右两表中不匹配的数据记录。

SELECT field1,field2,...,fieldn
FROM join_tablename1 LEFT|RIGHT|FULL [OUTER] JOIN join_tablename2
ON join_condition

11.4 合并查询

  MySQL通过 UNION|UNION ALL 实现并操作,UNION去掉了重复数据记录,UNION ALL没有去掉重复数据记录。

SELECT field1,field2,...,fieldn
FROM tablename1
UNION|UNION ALL
SELECT field1,field2,...,fieldn
FROM tablename2
UNION|UNION ALL
SELECT field1,field2,...,fieldn
FROM tablename3
……

11.5 子查询

  通过统计函数 COUNT() 查询所关联表笛卡尔积后的数据记录数(两表数据记录乘积条数据记录数),具体SQL语句如下:

SELECT COUNT(*)
FROM t_dept,t_employee

  如果查询到的数据记录数MySQL可以接受,然后才进行多表连接查询。如果查询到的数据记录数远大于MySQL软件可接受的范围,则通过子查询来实现多表查询。

  11.5.1 返回结果为单行单列和单行多列

  子查询一般在WHERE子句里,通常会包含比较运算符(“>”、“<”、“=”、“!=”等)。

  11.5.2 返回结果为多行单列

  子查询一般在WHERE子句里,通常会包含IN、ANY、ALL、EXISTS等。

  IN:主查询的查询条件在子查询的查询结果中时使用。

  ANY:主查询的查询条件为满足子查询查询结果中任意一条数据记录。

    =ANY:功能和IN一样;

    >(>=)ANY:大于(大于等于)最小的数据记录;

    <(<=)ANY:小于(小于等于)最大的数据记录。

  ALL:主查询的查询条件为满足子查询查询结果中所有数据记录。

    >(>=)ALL:大于(大于等于)最大的数据记录;

    <(<=)ALL:小于(小于等于)最小的数据记录。

  EXISTS:返回记录行时条件为真,返回当前遍历到的记录,反之丢弃。

  11.5.3 返回结果为多行多列子查询

  子查询一般在FROM子句里,被当做一张临时表来处理。

SELECT d.deptno,d.dname,d.loc,number,average
FROM t_dept d INNER JOIN (
SELECT depno dno,COUNT(empno) number,AVG(sal) average FROM t_employee GROUP BY depno DESC) employee
ON d.deptno=employee.dno;

MYSQL数据库学习十一 多表数据记录查询的更多相关文章

  1. MYSQL数据库学习十 单表数据记录查询

    10.1 简单数据记录查询 SELECT field1,field2,...fieldn FROM table_name; “*” ——查询所有记录 SELECT * FROM table_name; ...

  2. MySQL多表数据记录查询详解

    在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...

  3. Mysql-多表数据记录查询

    多表数据记录查询 一.关系数据操作 并(UNION) 并就是把具有相同字段数目和字段类型的表合并到一起 笛卡尔积(CARTESIAN PRODUCT) 笛卡尔积就是没有连接条件表关系返回的结果. 内连 ...

  4. Mysql--单表数据记录查询

    1.简单数据记录查询 1.1 简单数据查询 1.1.1 查询所有字段数据 例子:      1.1.2 "*"符号的使用 语法: 例子: 1.1.3 查询指定字段数据 例子:   ...

  5. MySQL数据库实验:任务二 表数据的插入、修改及删除

    目录 任务二 表数据的插入.修改及删除 一.利用界面工具插入数据 二.数据更新 (一)利用MySQL命令行窗口更新数据 (二)利用Navicat for MySQL客户端工具更新数据 三.数据库的备份 ...

  6. mysql进阶(二十一)删除表数据

    MySQL删除表数据 在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句.DELETE语句可以通过WHERE对要删除的记录进行选择.而使用TRUNC ...

  7. mysql数据库通过二进制 -【恢复数据记录】

    1.修改配置文件 vi /etc/my.cnf log-bin = binlog systemctl restart mysqld mysql -uroot -p123456 mysql> sh ...

  8. MySQL 数据库恢复一张表中的数据

    如果使用 mysqldump -uroot -p123 user > test.sql备份了user数据库中的所有数据,但是当前只想要恢复该数据库的某张表数据,该怎么处理呢? 已知恢复整个数据库 ...

  9. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. 工业级GBDT算法︱微软开源 的LightGBM(R包正在开发....)

    看完一篇介绍文章后,第一个直觉就是这算法已经配得上工业级属性.日前看到微软已经公开了这一算法,而且已经发开python版本,本人觉得等hadoop+Spark这些平台配齐之后,就可以大规模宣传啦~如果 ...

  2. mongodb命令行group分组和java代码中group分组

    group分组统计是数据库比较常用的功能,mongodb也不例外.不过相对于普通的增删改查,group操作就略微麻烦一些, 这里对group在shell中的操作.使用java原生代码操作以及集成spr ...

  3. 手把手教你在Windows环境下升级R

    在Windows环境下,我们可以使用installr包自动将R升级到最新版本.并且可以安装软件.下面主要演示如何在Windows环境下升级R,并将旧版本安装的R包复制到更新版本的R. 1.加载inst ...

  4. redis在windows下的安装

    redis服务器端程序:https://github.com/dmajkic/redis/downloads 根据自己的操作系统,选择32位和64位的 解压后文件目录如下 redis-server.e ...

  5. IBM Rational AppScan:跨站点脚本攻击深入解析

    IBM Rational AppScan:跨站点脚本攻击深入解析    了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...

  6. live555编译环境

    Ⅰ live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现了对多种音视频编 ...

  7. 采用Global.asax的Application_BeginRequest事件过滤敏感字符

    1.特殊字符过滤公共类ProcessRequest.cs using System.Web.UI; using System.Web.UI.WebControls; using System.Web. ...

  8. unity案例入门(二)(坦克大战)

    1. 案例简述 这个案例实现一个简单的坦克对战游戏,两个玩家在一个地图上PK. 2. 控制坦克移动 与案例一中小球的移动方式不同,坦克在横向上不能是平移,因此横向按键控制的应该是坦克旋转. publi ...

  9. Spring有什么缺点?

    Spring有什么缺点如下: 1.jsp中要写很多代码: 2.控制器过于灵活,缺少一个公用控制器: 3.不支持分布式部署.

  10. 1.17学习jquery权威指南

    1.ajax方面(东西比较杂,很多相关于.net挂钩的服务器端接触没有实际操作,全部放进来,或许以后当作demo使用) ¥(“body”).load("text.txt");   ...