博客
关于我
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/

你可能感兴趣的文章
NodeSession:高效且灵活的Node.js会话管理工具
查看>>
node~ http缓存
查看>>
node不是内部命令时配置node环境变量
查看>>
node中fs模块之文件操作
查看>>
Node中同步与异步的方式读取文件
查看>>
node中的get请求和post请求的不同操作【node学习第五篇】
查看>>
Node中的Http模块和Url模块的使用
查看>>
Node中自启动工具supervisor的使用
查看>>
Node入门之创建第一个HelloNode
查看>>
node全局对象 文件系统
查看>>
Node出错导致运行崩溃的解决方案
查看>>
Node响应中文时解决乱码问题
查看>>
node基础(二)_模块以及处理乱码问题
查看>>
node安装卸载linux,Linux运维知识之linux 卸载安装node npm
查看>>
node安装及配置之windows版
查看>>
Node实现小爬虫
查看>>
Node提示:error code Z_BUF_ERROR,error error -5,error zlib:unexpected end of file
查看>>
Node提示:npm does not support Node.js v12.16.3
查看>>
Node搭建静态资源服务器时后缀名与响应头映射关系的Json文件
查看>>
Node服务在断开SSH后停止运行解决方案(创建守护进程)
查看>>