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. 网络基础Cisco路由交换四

    NAT及静态转换 概述(NAT:网络地址转化) 作用: 通过将内部网络的私有ip地址翻译成全球唯一的公网ip地址, 使内部网络可以连接到互联网等外部网络上. NATA的特性 优点: 节省公有合法ip地 ...

  2. 【Unity3D】Unity3D开发《我的世界》之二、创建一个立方体

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/unity_minecraft_02.html 这一篇的内容比较简单,因为所有理论内容都在上一篇中讲到了.但有两点需 ...

  3. apache配置,禁止ip访问web站点

    由于一台服务器上面部署了好几个应用,对应不同的域名,如果用户知道ip地址的话,直接用户ip地址访问,会显示第一个虚拟主机的页面(更改了虚拟主机的顺序,每次都是显示第一个).这样对用户造成不好的印象,所 ...

  4. List转换成JSON对象

    List转换成JSON对象 1.准备工作 导入jar包 (1)json-lib-2.3-jdk15.jar (2)commons-beanutils-1.8.0.jar (3)commons-coll ...

  5. (十九)java小练习

    练习1:计算13-23+33-43+--+993-1003的结果     package demo; /**  * 计算13-23+33-43+--+993-1003的结果  * @author tu ...

  6. Django学习-13-simple_tag使用

    一些HTML方法                {{item.event_start | date:"Y-m-d H:i:s"}}                     {{bi ...

  7. MySQL入门笔记(二)

    MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询   子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...

  8. 在VCS仿真器中使用FSDB

    FSDB(Fast Signal Database)是Verdi支持的文件格式,用于保存仿真产生的信号波形.据Verdi文档说明,FSDB比标准的VCD格式节省磁盘空间,处理速度更快.要用VCS仿真器 ...

  9. 原根求解算法 && NTT算法

    原根求解算法: 获取一个数\(N\)的原根\(root\)的算法 #include<bits/stdc++.h> #define ll long long #define IL inlin ...

  10. MySQL配置文件

    [mysqld]datadir=/usr/local//mysql/data    #数据存放位置socket=/var/lib/mysql/mysql.sockuser=mysqllower_cas ...