博客
关于我
MySQL JOIN连接用法
阅读量:254 次
发布时间:2019-03-01

本文共 2082 字,大约阅读时间需要 6 分钟。

一、JOIN的介绍

JOIN是SQL中用于将两个或多个表的数据结合的操作,常见的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等。通过不同的JOIN类型,可以实现不同的数据组合效果。

INNER JOIN

INNER JOIN的特点是只有当两个表中存在匹配记录时,才会返回结果。如果一个表中没有匹配的数据,结果表中也不会有对应的行。

LEFT JOIN

LEFT JOIN(左连接)则相反,即使右表中没有匹配的数据,左表的所有记录都会被保留并返回。这意味着左表的所有数据都会出现在结果中。

RIGHT JOIN

RIGHT JOIN(右连接)则是左连接的对立操作。即使左表中没有匹配的数据,右表的所有记录也会被保留并返回。

FULL JOIN

FULL JOIN(全连接)则更加灵活。只要有一个表存在匹配记录,就会返回结果。与INNER JOIN不同,FULL JOIN不会因为匹配失败而舍弃任何一边的数据。

LEFT JOIN和RIGHT JOIN的特殊性

LEFT JOIN和RIGHT JOIN在处理缺失值时有明显区别。LEFT JOIN会优先保留左表的记录,而RIGHT JOIN则优先保留右表的记录。

二、代码示例

以下是基于上述数据库的具体操作示例:

数据库创建

create database if not exists test default charset utf8 collate utf8_general_ci;use test;set names utf8;set foreign_key_checks = 0;drop table if exists Websites;create table Websites (    id int(11) not null,    name char(20) not null default '',    url char(30) not null default '',    alexa int(11) not null,    country char(10) not null default '',    primary key (id)) engine=InnoDB default charset=utf8;drop table if exists access_log;create table access_log (    aid int(11) not null,    site_id int(11) not null,    count int(11) not null,    date datetime not null) engine=InnoDB default charset=utf8;insert into Websites values ('1', 'Google', 'https://www.google.cm/', '1', 'USA');insert into Websites values ('2', 'TaoBao', 'https://www.taobao.cm/', '13', 'CN');insert into Websites values ('3', 'CaiNiao', 'https://www.runoob.cm/', '4689', 'CN');insert into Websites values ('4', 'Weibo', 'https://www.weibo.cm/', '20', 'CN');insert into Websites values ('5', 'Facebook', 'https://www.facebook.cm/', '3', 'USA');insert into Websites values ('7', 'stackoverflow', 'https://www.stackoverflow.cm/', '0', 'IND');

数据查询

以下是一个使用INNER JOIN的查询示例:

select Websites.id, Websites.name, access_log.count, access_log.datefrom Websites inner join access_logon Websites.id = access_log.site_id;

查询结果

该查询会返回以下数据:

id name count date
1 Google 45 2016-05-10
2 TaoBao 100 2016-05-13
3 CaiNiao 230 2016-05-14
4 Weibo 10 2016-05-14
5 Facebook 205 2016-05-14
6 stackoverflow 220 2016-05-15

通过上述查询,可以清晰地看到Websites表和access_log表之间的关联。

转载地址:http://xntx.baihongyu.com/

你可能感兴趣的文章
OpenMMLab | 不是吧?这么好用的开源标注工具,竟然还有人不知道…
查看>>
OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
查看>>
OpenMP 线程互斥锁
查看>>
OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
查看>>
openoffice使用总结001---版本匹配问题unknown document format for file: E:\apache-tomcat-8.5.23\webapps\ZcnsDms\
查看>>
OpenPPL PPQ量化(2):离线静态量化 源码剖析
查看>>
OpenPPL PPQ量化(3):量化计算图的加载和预处理 源码剖析
查看>>
OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
查看>>
OpenPPL PPQ量化(5):执行引擎 源码剖析
查看>>
openpyxl 模块的使用
查看>>
OpenResty & Nginx:详细对比与部署指南
查看>>
openresty 前端开发入门六之调试篇
查看>>
OpenResty(nginx扩展)实现防cc攻击
查看>>
openresty完美替代nginx
查看>>
Openresty框架入门详解
查看>>
OpenResty(1):openresty介绍
查看>>
OpenResty(2):OpenResty开发环境搭建
查看>>
OpenResty(3):OpenResty快速入门之安装lua
查看>>
OpenResty(4):OpenResty快速入门
查看>>