使用外联接仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回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:左连接,右连接是什么概念啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)