目录
- 前言
- 一、连接谓词
- 二、JOIN连接
- (一)内连接
- (二)外连接
- (三)交叉连接
- 总结
前言
本次内容,我们主要掌握数据库的多表查询,即通过两个表及两个以上的表之间的逻辑关系进行检索,将通过连接谓词和关键字JOIN来介绍。
一、连接谓词
连接谓词在WHERE子句中使用比较运算符给出连接条件,对多个表连接,同时在FROM子句中要指定所连接的多个表。为了区分多个表中同样的列字段,我们使用“ . ”来表示哪个表的哪个字段(例如classes.classNO则表示classes表的classNO列)。
格式如下:(表名1.) 列名1 <比较运算符> (表名2.) 列名2
这里我们只讲等值连接,即表之间是通过比较运算符“=”连接的,而非等值连接即是通过非等号连接。
另外当在目标列中去掉相同的字段名,即为自然连接;而如果将同一个表进行连接称为自连接。
例、根据以下三个表信息,使用T-SQL语句查询销售员“胡宝林”与客户“王小姐”所签订的订单编号及日期。
SQL语句:
USE Sales
SELECT Seller.*,Customer.*,Orders.*
FROM Seller,Customer,Orders
WHERE Seller.Salename='胡宝林' AND Customer.ConnectName='王小姐' AND
Seller.SaleID=Orders.SaleID AND Customer.CustomerID=Orders.CustomerID
运行结果:
二、JOIN连接
另一种方式则是使用关键字JOIN连接,其表示方式是用在FROM子句当中。这里的连接也分很多种:
(一)内连接
内连接按照JOIN…ON中ON所指定的连接条件合并两个表,返回满足连接条件的行,由于内连接是系统默认的,可以省略INNER关键字。内连接可以实现多个表的连接。
格式如下:FROM 表1 JOIN 表2 ON <连接条件>
我们来看一个题。
例、根据以下两个表的信息,使用T-SQL语句查询所有员工有订单的销售员的信息表,采用内连接。
SQL语句:
USE Sales
SELECT Seller.*,Orders.*
FROM Seller JOIN Orders ON Seller.SaleID=Orders.SaleID
运行结果:
(二)外连接
首先我们要知道,外连接只能对两个表进行。
外连接跟内连接的差别在于内连接只有满足连接条件的行才能输出结果,而外连接输出结果不仅包括满足连接条件的行,还包括相应表的所有行。
这里外连接分为三种:
名称 | 作用 |
左外连接 | 输出结果不仅包括满足连接条件的行,还包括左表的所有行 |
右外连接 | 输出结果不仅包括满足连接条件的行,还包括右表的所有行 |
完全外连接 | 输出结果不仅包括满足连接条件的行,还包括两个表的所有行 |
(三)交叉连接
交叉连接,只做了解,即对两个表进行笛卡尔积,即第一个表的行数乘以第二个表的行数(笛卡尔积可以表示为一个二维表,表中每行对应一个元组,每列的值来自一个域)。
可以了解一下笛卡尔积
总结
以上就是本次数据库原理与应用的全部内容,感谢您的阅读和支持,若有表述或者代码中的不当之处,欢迎指出!您的指出和建议能给作者带来很大的动力!!!