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

你可能感兴趣的文章
php安装扩展
查看>>
php实现下载文件方法
查看>>
php实现单链表
查看>>
php实现多个一维数组对应合并成二维数组
查看>>
php实现多关键字查找方法
查看>>
PHP实现微信公众号H5支付
查看>>
PHP实现微信公众号网页授权
查看>>
PHP实现微信小程序推送消息至公众号
查看>>
php实现根据身份证获取年龄
查看>>
PHP实现的MongoDB数据增删改查
查看>>
RabbitMQ连接报错(1)—— None of the specified endpoints were reachable
查看>>
php实现逆转数组
查看>>
PHP实现通过geoip获取IP地理信息
查看>>
PHP实现页面静态化、纯静态化及伪静态化
查看>>
PHP对表单提交特殊字符的过滤和处理
查看>>
php对象引用和析构函数的关系
查看>>
RabbitMQ HTTP 认证后端项目常见问题解决方案
查看>>
PHP将图片转换成base64格式(优缺点)
查看>>
php将多个值的数组去除重复元素
查看>>
php局域网上传文件_PHP如何通过CURL上传文件
查看>>