Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17084
  • 博文数量: 6
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-19 12:04
文章分类

全部博文(6)

文章存档

2009年(6)

我的朋友
最近访客

分类: Mysql/postgreSQL

2009-01-17 01:48:22

SQL查询语句下集
中集讲到单表查询语句的实现。
本集我们将要给大家讲解多表查询语句。多表查询语句都是以各个连接的形式进行实现的。
我们以3个表为例给大家进行讲解
表1(编号,姓名,民族编码,地址编码),
表2(民族编码,民族)
表3(地址编码,地址)
1、基本连接
查询每个人的编号,姓名,民族,地址
select 编号,姓名,民族,地址
from 表1,表2,表3
where 表1.民族编码=表2.民族编码 and 表1.地址编码=表3.地址编码
基本连接要求返回的查询结果必须完全匹配基本查询条件。
2、内连接
查询每个人的编号,姓名,民族,地址
select 编号,姓名,民族,地址
from 表1 inner join 表2
on 表1.民族编码=表2.民族编码
inner join 表3
on 表1.地址编码=表3.地址编码
内连接返回的查询结果和基本连接完全一致,它从结果上完全等同于基本连接,只是不同的表示形式,其中关键字inner可以省略。
3、外连接
外连接包括左外连接、右外连接和全外连接
左外连接
查询每个人的编号,姓名,民族,地址,不管有没有民族和地址
select 编号,姓名,民族,地址
from 表1 left outer join 表2
on 表1.民族编码=表2.民族编码
left outer join 表3
on 表1.地址编码=表3.地址编码
右外连接
查询每个人的编号,姓名,民族,地址
select 编号,姓名,民族,地址
from 表1 right outer join 表2
on 表1.民族编码=表2.民族编码
right outer join 表3
on 表1.地址编码=表3.地址编码
需要大家注意的是
select 编号,姓名,民族
from 表1 right outer join 表2
on 表1.民族编码=表2.民族编码
等价于
select 编号,姓名,民族
from 表2 left outer join 表1
on 表2.民族编码=表1.民族编码
全外连接
查询每个人的编号,姓名,民族,地址
select 编号,姓名,民族,地址
from 表1 full outer join 表2
on 表1.民族编码=表2.民族编码
full outer join 表3
on 表1.地址编码=表3.地址编码
定义外连接时,关键字outer同理可以省略。
4、交叉连接
select *
from 表1 cross join 表2
交叉连接返回两个表之间的笛卡儿积,一般不建议大家经常使用交叉连接,如果两个表中的记录个数很多的时候,将可能造成死机的情况。
5、其它连接
除以上我们所介绍的连接之外,实际使用中还有自连接、子查询等用法,希望大家可以更多搜索相关资料。
本次SQL语句的上、中、下三集讲座到此就结束了,谢谢大家,望大家有问题可以共同提出。
 
阅读(1172) | 评论(0) | 转发(0) |
0

上一篇:SQL语句精华中集

下一篇:没有了

给主人留下些什么吧!~~