SQL数据库关联是什么怎么用(数据库里数据怎么进行关联)

SQL数据库关联是什么怎么用(数据库里数据怎么进行关联),第1张

使用外联接仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回FROM子句中提到的至少一个表或视图的所有行,只要这些行符合任何WHERE或HAVING搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。Microsoft03SQLServer642000对在FROM子句中指定的外联接使用以下SQL-92关键字:LEFTOUTERJOIN或LEFTJOIN

RIGHTOUTERJOIN或RIGHTJOIN

FULLOUTERJOIN或FULLJOINSQLServer支持SQL-92外联接语法,以及在WHERE子句中使用=和=运算符指定外联接的旧式语法。由于SQL-92语法不容易产生歧义,而旧式Transact-SQL外联接有时会产生歧义,因此建议使用SQL-92语法。使用左向外联接假设在city列上联接authors表和publishers表。结果只显示在出版商所在城市居住的作者(本例中为AbrahamBennet和CherylCarson)。若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用SQL-92左向外联接。下面是Transact-SQL左向外联接的查询和结果:USEpubsSELECTaau_fname,aau_lname,ppub_nameFROMauthorsaLEFTOUTERJOINpublisherspONacity=pcityORDERBYppub_nameASC,aau_lnameASC,aau_fnameASC

1、左外连接:

用左外连接,指查询出来的是在右表中没有对应左表中的记录以及符合条件(cid=ocustomer_id)的数据,比如:

customers为左表,orders为右表

select cid,ocustomer_id,cname,oid order_id,order_number from customers c left outer join orders o on cid=ocustomer_id;

2、右外连接:

正好和左外连接相反,查询出来的结果是在左表中没有对应的项和以及符合条件(cid=ocustomer_id)的数据

SQL中左连接和右连接都属于外连接。

左连接是LEFT  JOIN或LEFT OUTER JOIN,左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。  

右连接是RIGHT  JOIN 或 RIGHT  OUTER  JOIN,右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

举例:要查询所有学生的选课情况,包括已经选课的和还没有选课的学生,查询语句为SELECT学生表学号,姓名,班级,课程号,成绩 FROM学生表LEFT OUTER JOIN选课表ON学生表学号=选课表学号,左外连接查询中左端表中的所有元组的信息都得到了保留。

扩展资料

连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。  

内连接是INNERJOIN简写成JOIN,是典型的联接运算,使用像 =  或 <> 之类的比较运算符。包括相等联接和自然联接。内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

外联接除了左右连接外,还有完整外部联接FULL  JOIN 或 FULL OUTER JOIN,完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。

参考资料 百度百科-连接查询

内联:

a inner join b on aid=bid

查两张表都有的id记录

左外联:

a left join b on aid=bid

只要表a有的id,表a有,b没有的b字段为NULL

右外联:

a right join b on aid=bid

只要表b有记录,与左相反

使用外联接

仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回

FROM

子句中提到的至少一个表或视图的所有行,只要这些行符合任何

WHERE

HAVING

搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。

Microsoft®

SQL

Server™

2000

对在

FROM

子句中指定的外联接使用以下

SQL-92

关键字:

LEFT

OUTER

JOIN

LEFT

JOIN

RIGHT

OUTER

JOIN

RIGHT

JOIN

FULL

OUTER

JOIN

FULL

JOIN

SQL

Server

支持

SQL-92

外联接语法,以及在

WHERE

子句中使用

=

=

运算符指定外联接的旧式语法。由于

SQL-92

语法不容易产生歧义,而旧式

Transact-SQL

外联接有时会产生歧义,因此建议使用

SQL-92

语法。

使用左向外联接

假设在

city

列上联接

authors

表和

publishers

表。结果只显示在出版商所在城市居住的作者(本例中为

Abraham

Bennet

Cheryl

Carson)。

若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用

SQL-92

左向外联接。下面是

Transact-SQL

左向外联接的查询和结果:

USE

pubs

SELECT

aau_fname,

aau_lname,

ppub_name

FROM

authors

a

LEFT

OUTER

JOIN

publishers

p

ON

acity

=

pcity

ORDER

BY

ppub_name

ASC,

aau_lname

ASC,

aau_fname

ASC

以上就是关于SQL数据库关联是什么怎么用(数据库里数据怎么进行关联)全部的内容,包括:SQL数据库关联是什么怎么用(数据库里数据怎么进行关联)、关于数据库的左外连接 右外连接的意思是什么、SQL:左连接,右连接是什么概念啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/sjk/9493803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存