实例讲解Mysql中各种Join的作用
来源:互联网 发布:星座分布 大数据 编辑:程序博客网 时间:2024/06/02 00:50
Mysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。
Mysql中有左连接(left join)、右连接(right join)和内连接(inner join或者cross join),今天我用一个实例来说明各自的作用:
首先,建立两个实例数据库:
表join_a: CREATE TABLE `join_a` ( 表join_b: CREATE TABLE `join_b` (
`id` int(4) unsigned NOT NULL auto_increment,
`name` varchar(20) NOT NULL default '',
`password` varchar(20) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
`id` int(4) unsigned NOT NULL auto_increment,
`name` varchar(20) NOT NULL default '',
`sex` tinyint(1) NOT NULL default '0',
`province` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
先往表里插入几条测试数据
insert into join_a(`name`,`password`) values('xuxingwang','xuxingwang');
insert into join_b(`name`,`sex`,`province`) values('xuxingwang','1','河南');
insert into join_a(`name`,`password`) values('jingzifan','jingzifan');
insert into join_b(`name`,`sex`,`province`) values('baijiangtao','1','河南');
先来看left join:
select * from join_a
left join join_b on join_a.name=join_b.name
结果为:
id name password id name sex province
再来看right join:
select * from join_a
right join join_b on join_a.name=join_b.name
结果为:
id name password id name sex province
而用inner join的时候:
select * from join_a
inner join join_b on join_a.name=join_b.name
结果为:
id name password id name sex province
从上面的结果可以看出,用left join的时候,left join操作符左侧表里的信息都会被查询出来,右侧表里没有的记录会填空(NULL).right join亦然;inner join的时候则只有条件合适的才会显示出来
- 实例讲解Mysql中各种Join的作用
- 实例讲解Mysql中各种Join的作用
- MySQL中各种join
- 每日学习总结:DataTable中去除重复的项、SQL中的各种Join连接讲解
- outer join 实例讲解
- MySQL中各种连接(JOIN)详解
- mysql 中LEFT JOIN基本用法实例
- 实例讲解MySQL中与NULL值有关的疑难问题
- 实例讲解Java中的接口的作用
- 实例讲解Java中的接口的作用
- 实例讲解Java中的接口的作用
- 实例讲解Java中的接口的作用
- 接口的作用|实例讲解java接口
- MySQL中的各种JOIN
- mysql中left join、right join、inner join的区别
- MYSQL中 inner join left join right join的区别
- mysql中left join,right join,inner join的区别
- SQL中各种join的用法
- 第二章 第一节 Linux设备驱动程序之--构建内核树
- 非托管C++代码调用C#编写的dll方法
- 为何要把物理内存地址映射到内核空间?
- win32 SDK开发中打开 保存文件对话框的使用
- MindManager 8.2.319脑图绘制软件
- 实例讲解Mysql中各种Join的作用
- field-group
- hibernet中的get和load方法的区别
- slab内存管理源代码分析
- ARM之STM32F103ZET6核心板第二版出炉
- java 数据库连接池
- 添加uclinux程序,转自lumit 文档 相关faq
- DotNet精美书籍大检阅
- 使用DUMPBIN命令(转载)