在
查询多个表时,我们
经常使用
连接查询。连接是关系数据库模型的主要特征,也是
区别于其他
类型数据库
管理系统的一个标志。
什么是连接查询
概念:基于两个表或多个表之间的关系从这些表查询数据。
目的:实现多表查询
操作。
当您知道连接查询的概念时,连接查询是
什么时候 它通常被用来
关联两个或两个以上的数据,看起来有点抽象。让我们来看一个例子,做两个表:学生表(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。领土;
连接查询非常简单,只需要在项目中多练习,并继续总结,希望本文对大家的
学习有所帮助。