join left join right join outer join 以及笛卡儿积

join left join right join outer join 以及笛卡儿积,第1张

join 一共有四个  左右 内外

join       inner join

left join      outer join

right join   outer join

full join      outer join

举例:

A表

1    

2     

B表

1    

3    

A  join B     

1     1

A left join B

1  1

2  null

A right join B

1  1

null 3

A full join B

1  1

2  null

null 3

join = inner join

Join是关系型数据库系统的重要 *** 作之一,SQL Server中包含的常用Join:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join具体联接表或函数进行查询的特性

本文将通过具体例子介绍SQL中的各种常用Join的特性和使用场合:

目录
  • Inner join
  • Outer join
1.1.2 正文

首先我们在tempdb中分别定义三个表College、Student和Apply,具体SQL代码如下:

USE tempdb

---- If database exists the same name datatable deletes it.
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'College') DROP TABLE College;
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Student') DROP TABLE Student;
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Apply') DROP TABLE Apply;

---- Create Database.
create table College(cName nvarchar(50), state text, enrollment int);
create table Student(sID int, sName nvarchar(50), GPA real, sizeHS int);
create table Apply(sID int, cName nvarchar(50), major nvarchar(50), decision text);
Inner join

内联接(Inner join)是最常用的联接类型之一,它查询满足联接谓词的数据。

假设我们要查询申请表Apply中申请学校的相关信息,由于Apply表中包含学校名字我们并不能预知,所以我们可以根据cName来内联接(Inner join)表College和Apply,从而找到Apply表中包含学校的信息。

具体SQL代码如下:

---- Gets college information from college table
---- bases on college name.
SELECT DISTINCT College.cName, College.enrollment
FROM  College INNER JOIN
        Apply ON College.cName = Apply.cName

图1查询结果

cName state enrollment Stanford CA 15000 Berkeley CA 36000 MIT MA 10000 Cornell NY 21000 Harvard MA 29000

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2089479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-07-22
下一篇 2022-07-22

发表评论

登录后才能评论

评论列表(0条)

保存