SQLServer中的连接查询详细解决方案

SQLServer中的连接查询详细解决方案
查询多个表时,我们经常使用连接查询。连接是关系数据库模型的主要特征,也是区别于其他类型数据库管理系统的一个标志。

什么是连接查询

概念:基于两个表或多个表之间的关系从这些表查询数据。

目的:实现多表查询操作

当您知道连接查询的概念时,连接查询是什么时候

它通常被用来关联两个或两个以上的数据,看起来有点抽象。让我们来看一个例子,做两个表:学生表(t_student)和类表(t_class)。

t_student
T_class
连接标准语法格式:

的条款由SQL-92标准定义的连接的语法格式如下:
从join_table join_type join_table {(join_condition)}
join_table指出参与连接操作的表名。连接在同一个表操作,也可以对多个表进行操作,并对同一个表的连接也被称为自我connection.join_type指出connection.join_condition类型是指连接条件

连接类型:

连接分为内部连接、外部连接和交叉连接三种类型。

内部连接(内部连接)

使用比较运算符(包括=,>,和< =,=!)比较了数据连接条件下的操作表、查询和匹配,根据不同的运算符,将内部连接分为三种类型:等价连接、自然连接和不等连接。

1、等值连接

概念:在连接条件中使用等数字运算符,其查询结果列出连接表中的所有列,包括其中的重复列。
SELECT * FROM t_student S,C,t_class s.classid = c.classid
等于
SELECT * FROM t_student内加入t_class C对s.classid = c.classid
结果是:
2。不平等的关系

概念:除了等号外,运算符在连接条件(>,<,> =,!)中使用。

SELECT * FROM t_student内加入t_class C对s.classid c.classid
结果是:
三.天然的联系

概念:连接条件与等效连接相同,但它将删除连接表中的重复列。

查询语句基本上与相同的值连接相同:

选择美国*,从t_student内加入t_class C对s.classid c.classname = =
用等效连接比较:结果是单柱classid:
摘要:内部联系只是表示满意的条件!

外部连接

连接分为左连接(左连接)或左外连接(左外连接)(右连接)、右连接或连接(右外部联接)(完全联接)、完全连接或完全外部连接(完整的外部连接)。我们将其简单地称为:左连接、右连接和全连接。

1、左连接:

概念:返回左表中的所有行,如果留在右行,而不是表中的表行,则表中的右列返回一个空值。
SELECT * FROM t_student左加入t_class C对s.classid = c.classid
结果是:
概要:左连接显示左表的所有行,右表与左表一起显示。

2,正确连接:

概念:正好与左连接相反,返回表中的所有行的权利,如果没有匹配在左表右表中的行,然后在表的左栏返回一个空值。 U3000
SELECT * FROM t_student权利加入t_class C对s.classid = c.classid
结果是:
概要:正确的连接正好与左边的连接相反,显示右表都在该行上,左表与右表一起运行

三.全连接:

概念:返回左右表中的所有行。如果在另一个表中没有匹配一行,则表中的其他列返回一个空值。
SELECT * FROM t_student全加入t_class C对s.classid = c.classid
结果是:
返回左、右表中的所有行。

交叉连接(交叉连接)也称为笛卡尔积。

概念:没有WHERE子句,它将返回一个表,两笛卡尔连接产品,返回的行数等于两个表行的产品(例如:t_student和t_class,返回4 * 4 = 16的记录),如果返回或显示的行数匹配。

1。不在那里:

结果是:
总结:相当于Descartes,左表和右表的组合。

2,使用WHERE子句,它通常是两个表行的乘积的数据表,然后从WHERE条件中选择它。
SELECT * FROM t_student的交叉连接t_class C在s.classid = c.classid
(注:添加条件后交叉连接只能使用在哪里,不可用)

查询结果与连接到相同值的查询结果相同。

最后附上:我做的练习,对自己简单,复习一下:
内部连接:保罗包括等效连接、不相等连接、自然连接。

等效连接;在连接条件下使用等效运算符,查询结果,
-列出连接表中的所有列,包括列表中的重复列
选择dbo.领土,dbo。区
在regionid = dbo.territories.regionid dbo.区域

选择dbo.领土
编号dbo.区
在regionid = dbo.region.regionid dbo。领土;
不等连接:在连接条件下,除相等数以外的运算符
选择dbo.领土
编号dbo.区
在dbo。区。regionid <> dbo.territories.regionid;
自然连接

-连接条件和等效连接条件是相同的,但是表中的重复列将被删除。
选择T *,r.regiondescription由dbo。领土为T
编号dbo.区域R
在r.regionid = t.regionid;

外部连接:分为左连接、右连接、完全连接、或左外连接、右连接、完全联接。
左连接
选择dbo.区
左连接dbo。领土
在territories.territorydescription = region.regiondescription;

右连接
选择dbo.区
右连接dbo。领土
在territories.territorydescription = region.regiondescription;
全连接
选择dbo.区
全连接dbo。领土
在territories.territorydescription = region.regiondescription;

交叉连接:也称笛卡尔积。
如果没有条件子句,它将返回连接到两个表的笛卡尔积,并返回与两行乘积相等的行数。如果在哪里进行,则返回或显示匹配行的数目。

选择dbo.地区领土,DBO;


选择dbo.区域交叉连接dbo。领土;
连接查询非常简单,只需要在项目中多练习,并继续总结,希望本文对大家的学习有所帮助。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部