SQL表连接查询(inner join、full join、left join、right join)
2016-01-18 10:35
363 查看
前提条件:假设有两个表,一个是学生表,一个是学生成绩表。
表的数据有:
*
最常见的连接查询可能是这样,查出学生的名字和成绩:
select s.name,m.mark from student s,mark m where s.id=m.studentid
上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:
select s.name,m.mark from student s inner join mark m on
s.id=m.studentid
符合条件的只有两条结果,查出结果为:
**
左连接是把左边的表的元组全部选出来:
select s.name,m.mark from student s left join mark m on
s.id=m.studentid
上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:
**
右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:
select s.name,m.mark from student s right join mark m on
s.id=m.studentid
上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:
**
把左右两个表的数据都取出来,不管是否匹配:
select s.name,m.mark from student s full join mark m on
s.id=m.studentid
如下图所示,学生表和成绩表的数据都取了出来:
比较常用的是第一种,内连接,而且是用这种写法:
select s.name,m.mark from student s,mark m where s.id=m.studentid
表的数据有:
*
*一、内连接-inner jion
** :最常见的连接查询可能是这样,查出学生的名字和成绩:
select s.name,m.mark from student s,mark m where s.id=m.studentid
上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:
select s.name,m.mark from student s inner join mark m on
s.id=m.studentid
符合条件的只有两条结果,查出结果为:
**
二、左连接-left join
**:左连接是把左边的表的元组全部选出来:
select s.name,m.mark from student s left join mark m on
s.id=m.studentid
上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:
**
三、右连接-right join
**:右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:
select s.name,m.mark from student s right join mark m on
s.id=m.studentid
上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:
**
四、全连接-full join
**:把左右两个表的数据都取出来,不管是否匹配:
select s.name,m.mark from student s full join mark m on
s.id=m.studentid
如下图所示,学生表和成绩表的数据都取了出来:
比较常用的是第一种,内连接,而且是用这种写法:
select s.name,m.mark from student s,mark m where s.id=m.studentid
相关文章推荐
- mysql表复制
- Memcached(分布式内存对象缓存系统)
- Oracle R12采购接收流程(PR-PO-RCV-AP-Payment)
- 如何清除PL/SQL中的缓存
- Vert-x-通过异步的方式使用JDBC连接SQL
- 安装mysql 5.7 最完整版教程
- PB动态SQL语句
- pymssql登陆本地sql server 服务器
- SQL 第一课
- Oracle 两张表死锁
- 延迟关联和覆盖索引
- MySQL中DATETIME、DATE和TIMESTAMP类型的区别
- SQL Server DATEADD() 函数
- mysql优化limit分页
- SQL判断一个事件段 是否在数据库中与其他时间段有重叠 判断时间重叠
- oracle如何创建用户并赋予权限
- SQLite数据库存储
- SQL查询表中的所有约束
- oracle 解析导出xml
- sql ,内连接,外连接,自然连接等各种连接