SQL的四种连接查询
2015-10-25 19:53
232 查看
一般以往的做法是把这些字段放到一张视图里,但现在我只是想看看查询出来的结果是否与测试操作相符,没必要建一张视图,于是就想到了今天我们要说的这几种连接,下面以SQL中的一个小Demo为例进行说明:
SQL数据库中有两张表,一张人员(T_Person)表、一张卡(T_Card)表,人基本上都那么几张卡,像银行卡、饭卡、水卡、电费卡……
(T_Person)
(T_Card)
内连接是等值连接,它使用“=、>、<、<>”等运算符根据每个表共有的列的值匹配两个表中的行
查询语句:
[sql] view
plaincopyprint?
select * from T_Person inner join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
左连接又称左向外连接,查询的结果集包括SQL语句中左表的所有行,右表中匹配的行。如果左表的某行在右表中没有匹配行,则用空值表示
查询语句:
[sql] view
plaincopyprint?
select * from T_Person left join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
右连接也成右向外连接,查询的结果集包括SQL语句中右表的所有行,左表中匹配的行。如果右表的某行在左表中没有匹配的行,则用空值表示
查询语句:
[sql] view
plaincopyprint?
select * from T_Person right join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
完全外连接,查询的结果集包括SQL语句中左表和右表的所有行。如果某行在另一个表中没有匹配行时,则用空值表示。
查询语句:
[sql] view
plaincopyprint?
select * from T_Person full join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
总结:
SQL中连接查询分内、外连接,外连接分左连接、右连接和完全外连接,它们的功能与视图差不多。其中左右连接查询是相对应的,即把连接类型和左表、右表互换位置就可得到相同的结果集。
SQL数据库中有两张表,一张人员(T_Person)表、一张卡(T_Card)表,人基本上都那么几张卡,像银行卡、饭卡、水卡、电费卡……
(T_Person)
(T_Card)
内连接
1.内连接(inner join 或 join)
内连接是等值连接,它使用“=、>、<、<>”等运算符根据每个表共有的列的值匹配两个表中的行查询语句:
[sql] view
plaincopyprint?
select * from T_Person inner join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
外连接
2.左连接(left join 或 left outer join)
左连接又称左向外连接,查询的结果集包括SQL语句中左表的所有行,右表中匹配的行。如果左表的某行在右表中没有匹配行,则用空值表示查询语句:
[sql] view
plaincopyprint?
select * from T_Person left join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
3.右连接(right join 或 right outer join)
右连接也成右向外连接,查询的结果集包括SQL语句中右表的所有行,左表中匹配的行。如果右表的某行在左表中没有匹配的行,则用空值表示查询语句:
[sql] view
plaincopyprint?
select * from T_Person right join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
4.完全外连接(full join 或 full outer join)
完全外连接,查询的结果集包括SQL语句中左表和右表的所有行。如果某行在另一个表中没有匹配行时,则用空值表示。查询语句:
[sql] view
plaincopyprint?
select * from T_Person full join T_Card on T_Person.CardId = T_Card.CardId
查询结果:
总结:
SQL中连接查询分内、外连接,外连接分左连接、右连接和完全外连接,它们的功能与视图差不多。其中左右连接查询是相对应的,即把连接类型和左表、右表互换位置就可得到相同的结果集。
相关文章推荐
- sql语句嵌套查询
- 盲人摸象——iOS简单应用ToDoList之sqlite数据本地化
- 关系型数据库
- mysql 学习记录(十六)--优化常用sql
- 数据库五个例子总结
- 数据库基础
- Oracle添加数据文件创建表空间,创建用户代码
- 常用SQL语句大全
- SQL语言的应用
- 数据库设计的步骤
- ORACLE建表练习
- 关于用 ZIP 包 安装 MySql 的详细步骤以及可能的错误
- 浅析数据库安全技术
- 我的django之旅(三)数据库和模型
- SQL中char、varchar、nvarchar的区别
- 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
- 淘宝内部分享:怎么跳出MySQL的10个大坑
- java与mysql连接
- Mysql分页-Limit
- 学习数据库必须掌握的54条SQL查询语句