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

什么是连接查询

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

目的:实现多表查询操作。

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

它通常被用来关联两个或两个以上的数据,看起来有点抽象。让我们来看一个例子,做两个表:学生表(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。领土;





连接查询非常简单,只需要在项目中多练习,并继续总结,希望本文对大家的学习有所帮助。