最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

sql join 详解

来源:动视网 责编:小OO 时间:2025-09-28 21:05:35
文档

sql join 详解

sql语句的join详解第一步:认识joinjoin分为innerjoin和outerjoininnerjoin就一种outerjoin分为leftouterjoin,rightouterjoin,fullouterjoin(其中的outer都可以省略)第二步:通过实例概念上认识join1.准备数据SQL>select*froma;编号姓名--------------1000张三2000李四3000王五SQL>select*fromb;编号商品--------------1000电视机2000
推荐度:
导读sql语句的join详解第一步:认识joinjoin分为innerjoin和outerjoininnerjoin就一种outerjoin分为leftouterjoin,rightouterjoin,fullouterjoin(其中的outer都可以省略)第二步:通过实例概念上认识join1.准备数据SQL>select*froma;编号姓名--------------1000张三2000李四3000王五SQL>select*fromb;编号商品--------------1000电视机2000
sql 语句的 join 详解

第一步:认识join

join分为inner join 和 outer join

inner join 就一种

outer join 分为 left outer join,right outer join,full outer join(其中的outer都可以省略)

第二步:通过实例概念上认识join

1.准备数据

SQL>select * from a;

编号 姓名

---- ----------

1000 张三

2000 李四

3000 王五

SQL>select * from b;

编号 商品

---- ----------

1000 电视机

2000 录像机

4000 自行车

2.inner join 效果(把符合条件的留下,不符合的全不要)

SQL>select a.*,b.* from a inner join b on a.编号=b.编号;

编号 姓名 编号 商品

---- ---------- ---- ----------

1000 张三 1000 电视机

2000 李四 2000 录像机

3.left join 效果(符合条件的留下,左表中不符合条件的留下,右表中不符合的不要)

SQL>select a.*,b.* from a left join b on a.编号=b.编号;

编号 姓名 编号 商品

---- ---------- ---- ----------

1000 张三 1000 电视机

2000 李四 2000 录像机

3000 王五 空值 空值

3.right join 效果(符合条件的留下,右表中不符合条件的留下,左表中不符合的不要)

SQL>select a.*,b.* from a right join b on a.编号=b.编号;

编号 姓名 编号 商品

---- ---------- ---- ----------

1000 张三 1000 电视机

2000 李四 2000 录像机

空值 空值 4000 自行车

3.full join 效果(符合条件的留下,不符合条件的都留下)

SQL>select a.*,b.* from a full join b on a.编号=b.编号;

编号 姓名 编号 商品

---- ---------- ---- ----------

1000 张三 1000 电视机

2000 李四 2000 录像机

3000 王五 空值 空值

空值 空值 4000 自行车

第三步:光知道概念还不行,还需要有应用

比如我们想对某人的消费项目进行汇总,对应以下两个表:theme 与 themedetail

theme 的记录为:

themeid(int) themename(varchar[10])

1 就餐

2 出差

3 乘车

4 其它

themedetail 的记录为:

detailid(int) themeid(int) price(money)

1 1 12.5

2 1 5

3 1 6

4 2 11

5 2 17

6 3 8

其中 theme 中的 themeid 与 themedetail 中的 themeid 是一对多的关系,

对 themedetail 表的理解如下:

“就餐”费用为 12.5 + 5 + 6 = 23.5 元,

“出差”费用为 11 + 17 = 28 元,

“乘车”费用为 8 = 8 元,

“其它”费用不存在,视为 0 处理,

对应的 sql 语句可以这样表示:

(强调一句,凡是需要select 出来的就要有相应的group by)

select theme.themename, isnull(sum(themede

tail.price), 0) as totalprice

from theme inner join themedetail on theme.themeid = themedetail.themeid

group by theme.themename, theme.themeid

order by theme.themeid

执行结果如下:

themename totalprice

就餐 23.5

出差 28

乘车 8

对于消费记录不存的记录如果就这样不显示它的话,使用内联的方法就可以满足要求了,

但是我们现在需要对 theme 中的每一项均做统计,

也包括“其它”项,于是我们应该采用另一种方法来实现,

这就是左外联的方法,相应的 sql 语句可以这样表示:

select theme.themename, isnull(sum(themedetail.price), 0) as totalprice

from theme left outer join themedetail on theme.themeid = themedetail.themeid

group by theme.themename,theme.themeid

order by theme.themeid

执行结果如下:

themename totalprice

就餐 23.5

出差 28

乘车 8

其它 0

第四部:从文字描述上再次认识join

(一)内连接

  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的

列值。内连接分三种:

  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结

果中列出被连接表中的所有列,包括其中的重复列。

  

  2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的

列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选

择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

(二) 外连接  

  外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左

外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

  left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录;

  right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录;

例如1:SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b

   ON a.username=b.username

例如2:SELECT a.*,b.*

   FROM city as a FULL OUTER JOIN user as b

   ON a.username=b.username

文档

sql join 详解

sql语句的join详解第一步:认识joinjoin分为innerjoin和outerjoininnerjoin就一种outerjoin分为leftouterjoin,rightouterjoin,fullouterjoin(其中的outer都可以省略)第二步:通过实例概念上认识join1.准备数据SQL>select*froma;编号姓名--------------1000张三2000李四3000王五SQL>select*fromb;编号商品--------------1000电视机2000
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top