关于sql语句的inner join,left join ,right join的区别
2016-05-18 13:55
267 查看
在这个阳光明媚的日子里,我决定做点什么,鉴于昨天面试的一家公司问了我这个问题,我就像顺便把这个问题给总结一下
我先概念上讲一下,这三者都是用在表链接查询上面,不同的是返回的结果是不一样的,下面我就用A表和B 表阐述一下。
A表
id name stuid
1 林亮 120120
2 张华 120121
3 刘聪 120122
B表
cid cname class id
1 语文 301 1
2 数学 203 1
3 语文 301 2
4 英语 402 2
5 美术 404
这个表的设计只是简单的举例子,不是很合理,关键是这三个join方法的使用
1. select A.name,A.stuid,B.class from A
inner join B where A.id = B.id
结果集:
name stuid class
林亮 120120 301
林亮 120120 203
张华 120121 301
张华 120121 401
查询的表A和表B中只有相对应的数据会显示出来
2. select A.name,A.stuid,B.class from A left join B where A.id = B.id
结果集:
name stuid class
林亮 120120 301
林亮 120120 203
张华 120121 301
张华 120121 401
刘聪 120122
查询的表A中的数据库会全部出来,即使表B中没有对应的数据
3. select A.name,A.stuid,B.class from A
right join B where A.id = B.id
结果集:
name stuid class
林亮 120120 301
林亮 120120 203
张华 120121 301
张华 120121 401
404
查询的表B中的数据会全部显示,即使表A中没有对应的数据
我先概念上讲一下,这三者都是用在表链接查询上面,不同的是返回的结果是不一样的,下面我就用A表和B 表阐述一下。
A表
id name stuid
1 林亮 120120
2 张华 120121
3 刘聪 120122
B表
cid cname class id
1 语文 301 1
2 数学 203 1
3 语文 301 2
4 英语 402 2
5 美术 404
这个表的设计只是简单的举例子,不是很合理,关键是这三个join方法的使用
1. select A.name,A.stuid,B.class from A
inner join B where A.id = B.id
结果集:
name stuid class
林亮 120120 301
林亮 120120 203
张华 120121 301
张华 120121 401
查询的表A和表B中只有相对应的数据会显示出来
2. select A.name,A.stuid,B.class from A left join B where A.id = B.id
结果集:
name stuid class
林亮 120120 301
林亮 120120 203
张华 120121 301
张华 120121 401
刘聪 120122
查询的表A中的数据库会全部出来,即使表B中没有对应的数据
3. select A.name,A.stuid,B.class from A
right join B where A.id = B.id
结果集:
name stuid class
林亮 120120 301
林亮 120120 203
张华 120121 301
张华 120121 401
404
查询的表B中的数据会全部显示,即使表A中没有对应的数据
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- SQL Server 语句操纵数据库
- SQL(结构化查询语句)
- oracle sql日期比较
- linux快速部署mysql服务器
- sql 存储过程分页
- 在WINXP系统上安装SQL Server企业版的方法
- 通过批处理调用SQL的方法(osql)
- SQL Server 存储过程的分页
- ASP程序与SQL存储过程结合使用详解
- SQL SERVER编写存储过程小工具
- 防御SQL注入攻击时需要注意的一个问题
- PostgreSQL教程(十九):SQL语言函数
- SQL Server复制需要有实际的服务器名称才能连接到服务器
- SQL Server 2000向SQL Server 2008 R2推送数据图文教程