一:Mysql 连接的使用

在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。

你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
  • full join 全连接  两个表并集,mysql并没有直接支持,而是通过unicon实现

二:内连接

  两个表的交集

  

  1. MariaDB [test2]> select * from a;
  2. +------+
  3. | name |
  4. +------+
  5. | 1 |
  6. | 2 |
  7. | 3 |
  8. | 4 |
  9. +------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. MariaDB [test2]> select * from b;
  13. +------+
  14. | name |
  15. +------+
  16. | 3 |
  17. | 4 |
  18. | 5 |
  19. | 6 |
  20. +------+
  21. 4 rows in set (0.00 sec)
  22. MariaDB [test2]> select * from a inner join b on a.name=b.name;
  23. +------+------+
  24. | name | name |
  25. +------+------+
  26. | 3 | 3 |
  27. | 4 | 4 |
  28. +------+------+
  29. 2 rows in set (0.00 sec)
  30.  
  31. MariaDB [test2]> select * from a,b where a.name=b.name;
  32. +------+------+
  33. | name | name |
  34. +------+------+
  35. | 3 | 3 |
  36. | 4 | 4 |
  37. +------+------+
  38. 2 rows in set (0.00 sec)

三:LEFT JOIN

MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

  1. MariaDB [test2]> select * from a left join b on a.name=b.name;
  2. +------+------+
  3. | name | name |
  4. +------+------+
  5. | 3 | 3 |
  6. | 4 | 4 |
  7. | 1 | NULL |
  8. | 2 | NULL |
  9. +------+------+
  10. 4 rows in set (0.00 sec)

四: RIGHT JOIN

MySQL RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据。

  1. MariaDB [test2]> select * from a right join b on a.name=b.name;
  2. +------+------+
  3. | name | name |
  4. +------+------+
  5. | 3 | 3 |
  6. | 4 | 4 |
  7. | NULL | 5 |
  8. | NULL | 6 |
  9. +------+------+
  10. 4 rows in set (0.00 sec)

五:full join

  两个表的并集

  

  1. MariaDB [test2]> select * from a left join b on a.name =b.name union select * from a right join b on a.name =b.name;
  2. +------+------+
  3. | name | name |
  4. +------+------+
  5. | 3 | 3 |
  6. | 4 | 4 |
  7. | 1 | NULL |
  8. | 2 | NULL |
  9. | NULL | 5 |
  10. | NULL | 6 |
  11. +------+------+
  12. 6 rows in set (0.00 sec)

数据库-mysql数据连接的更多相关文章

  1. spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置

    spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...

  2. 创建本地数据库mySQL并连接JDBC

    转自: http://blog.csdn.net/wei_chong_chong/article/details/44830491 如何创建本地数据库MySQL并连接JDBC 转载 2015年04月0 ...

  3. 数据库-mysql数据操作

    一:mysql 数据的插入 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...f ...

  4. JAVA与数据库MySQL相连接

    JDBC(Java数据库连接体系结构): 是Java实现数据库访问的应用程序编程接口,主要功能是管理存放在数据库中的数据.通过接口对象,应用程序可以完成与数据库的连接,执行SQL语句,从数据库中获取结 ...

  5. Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作

    必须的准备工作 一.MySQL的安装.可以参考博文: http://blog.csdn.net/jueblog/article/details/9499245 二.下载 jdbc 驱动.可以从在官网上 ...

  6. 第八篇 -- 对数据库mysql进行连接并压测

    参考链接:https://blog.csdn.net/laofashi2015/article/details/81296929 工具:mysql-8.0.12-winx64,apache-jmete ...

  7. Python下Mysql数据连接池——单例

    # coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common ...

  8. mysql数据库-mysql数据定义语言DDL (Data Definition Language)归类(六)

    0x01 创建数据库并指定字符集和排序规则 -- 三种实例写法 create database temptab2 character set utf8 collate utf8_general_ci; ...

  9. 第九篇 -- 对数据库mysql进行连接并压测(二)

    上一节介绍了对mysql查询语句的压测,这一节来进一步的了解. 还是先把数据库的图放上来. 接下来打开Jmeter. 1. 回顾一下上一节学的查询语句 JDBC Request配置 结果 2. 条件查 ...

随机推荐

  1. BZOJ 2194 快速傅立叶变换之二 | FFT

    BZOJ 2194 快速傅立叶变换之二 题意 给出两个长为\(n\)的数组\(a\)和\(b\),\(c_k = \sum_{i = k}^{n - 1} a[i] * b[i - k]\). 题解 ...

  2. 设置nginx日志滚动

    需求:设置nginx每天凌晨12点轮转,系统版本为debian7,nginx版本为tengine2.2.0 1.修改logrotate主配置文件,打开压缩和以时间为后缀命名 # vim /etc/lo ...

  3. typescript数据类型

    // 布尔类型 let isDone: boolean = false; // 数字类型 所有数字都是浮点数 number let decLiteral: number = 6; let hexLit ...

  4. Codeforces Round #552 (Div. 3) 题解

    Codeforces Round #552 (Div. 3) 题目链接 A. Restoring Three Numbers 给出 \(a+b\),\(b+c\),\(a+c\) 以及 \(a+b+c ...

  5. winscp以命令行方式同步服务器数据到PC机磁盘上

    目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运 ...

  6. 清空git默认的用户名和密码,

    https://www.jianshu.com/p/a1908f55bef8 在家目录下找到.gitconfig git config --local --unset credential.helpe ...

  7. 并发库应用之四 & 线程锁Lock应用

    Java5的线程并发库中,提供了相应的线程锁接口Lock来帮助我们同步处理.Lock比传统线程模型中的synchronized更加面向对象,锁本身也是一个对象,两个线程执行的代码要实现同步互斥效果,就 ...

  8. 用js获取客户端IP地址

    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type=& ...

  9. Spring知识总结

    一.Spring简述    Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架,Spring致力于提供一种方法管理你的业务对象,Spring的主要目的是使JavaE ...

  10. 蓝桥杯 地宫寻宝 DFS 动态规划

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstdl ...