连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,然后通过连接进行查询。
内连接的连接查询结果集中仅包含满足条件的行,内连接是SQL Server缺省的连接方式,可以把INNERJOIN简写成 JOIN,根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种;交叉连接的连接查询结果集中包含两个表中所有行的组合;外连接的连接查询结果集中既包含那些满足条件的行,还包含其中某个表的全部行,有3种形式的外连接:左外连接、右外连接、全外连接。
1.交叉连接
交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。
例如:如果希望得到学生表和选课表两个关系模式的乘积,查询语句为
SELECT *
FROM学生表 CROSS JOIN选课表
2.内连接查询
内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录,也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。
例如:要查询每个已经选课的学生的情况,查询语句为
SELECT *
FROM学生表 INNER JOIN选课表 ON学生表.学号=选课表.学号
根据比较方式分为:
1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2)不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
3.自连接查询
如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询就称为自连接查询。同一张表在FROM字句中多次出现,为了区别该表的每一次出现,需要为表定义一个别名。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。
例如:要求检索出学号为20210的学生的同班同学的信息,查询语句为
SELECT 学生表.*
FROM学生表 JOIN学生表 AS 学生表1 ON 学生表.班级=学生表1.班级
WHERE学生表1.学号='20210'
4.外连接查询
内连接的查询结果都是满足连接条件的元组。但有时我们也希望输出那些不满足连接条件的元组信息。比如,我们想知道每个学生的选课情况,包括已经选课的学生(这部分学生的学号在学生表中有,在选课表中也有,是满足连接条件的),也包括没有选课的学生(这部分学生的学号在学生表中有,但在选课表中没有,不满足连接条件),这时就需要使用外连接。外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式。3种外连接:
1) 左外连接(LEFT OUTER JOIN)
如果在连接查询中,连接管子左端的表中所有的元组都列出来,并且能在右端的表中找到匹配的元组,那么连接成功。如果在右端的表中,没能找到匹配的元组,那么对应的元组是空值(NULL)。这时,查询语句使用关键字 LEFT OUTER JOIN,也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而不关左端的表中的数据是否满足连接条件,均输出左端表中的内容。
例如:要查询所有学生的选课情况,包括已经选课的和还没有选课的学生,查询语句为
SELECT学生表.学号,姓名,班级,课程号,成绩
FROM 学生表LEFT OUTER JOIN选课表 ON学生表.学号=选课表.学号
左外连接查询中左端表中的所有元组的信息都得到了保留。
2)右外连接( RIGHT OUTER JOIN)
右外连接与左外连接类似,只是右端表中的所有元组都列出,限制左端表的数据必须满足连接条件,而不管右端表中的数据是否满足连接条件,均输出表中的内容。
例如:同上例内容,查询语句为
SELECT学生表.学号,姓名,班级,课程号,成绩
FROM 学生表 RIGHT OUTER JOIN选课表 ON 学生表.学号=选课表.学号
右外连接查询中右端表中的所有元组的信息都得到了保留。
3)全外连接(FULL OUTER JOIN)
全外连接查询的特点是左、右两端表中的元组都输出,如果没能找到匹配的元组,就使用NULL来代替。
例如:同左外连接例子内容,查询语句为
SELECT学生表.学号,姓名,班级,课程号,成绩
FROM 学生表 FULL OUTER JOIN选课表 ON学生表.学号=选课表.学号
全外连接查询中所有表中的元组信息都得到了保留。
分享到:
相关推荐
本节内容涵盖了数据库原理和SQL查询的多个知识点,包括SELECT语句、WHERE语句、多表连接、子查询、EXISTS语句、NOT IN语句、NOT EXISTS语句等。这些知识点都是数据库设计和开发的基础概念,掌握这些知识点对于数据库...
数据库原理及运用实验四 SQL 连接查询 本实验报告主要探讨了数据库原理的应用,通过 SQL 连接查询实现了多种复杂的查询操作。以下是实验报告的详细解释: 一、数据库原理 数据库原理是数据库系统的基础理论,它...
本文档主要介绍了数据库原理实验六中的ODBC和JDBC数据库编程实用,实验报告题目包括ODBC配置、ODBC编程、JDBC实现对数据库的连接、查询、插入、修改和删除等内容。 一、ODBC配置和编程 ODBC(Open Database ...
实验报告的主题是“数据库表的连接和嵌套查询”,它旨在帮助用户深入理解SQL Server查询分析器的使用,以及如何运用Transact-SQL语言进行多表连接查询和嵌套查询。实验环境为Microsoft Windows XP操作系统搭配...
### 数据库连接池原理 #### 一、背景与价值 ##### 1.1 背景 在现代软件开发中,应用程序与数据库之间的交互是非常常见的。为了提高这种交互的效率和减少资源消耗,通常会使用数据库连接池技术。连接池位于应用...
【数据库原理】数据库是存储和组织数据的系统,它能够以结构化方式管理和检索数据。在本实验报告中,学生通过一系列实验操作掌握了数据库的基本概念和操作,包括创建和删除数据库、创建和删除表、数据的增删改、查询...
《数据库原理与设计》教学大纲是地理信息系统专业的一门专业基础课程,旨在使学生掌握数据库系统的基本概念、基本原理,并能应用现有数据库管理系统进行数据库设计及应用系统开发。本课程的教学目标是使学生了解...
根据提供的信息,我们可以推断这份文档“郑州大学《数据库原理》题库2.pdf”主要包含的是与数据库原理相关的练习题目和知识点。但是,所展示的部分内容似乎并不包含具体的学习资料或者题目信息,而是重复了“创创...
本文将详细解释数据库连接池的图解原理,帮助你理解这一技术的核心概念。 首先,我们需要理解什么是数据库连接。数据库连接是应用程序与数据库之间建立的通信通道,用于执行SQL查询和获取数据。然而,频繁地创建和...
**Access数据库原理与应用** Access数据库是微软公司开发的一款关系型数据库管理系统,广泛应用于小型企业和组织的数据管理。它以其易用性、灵活性和强大的数据处理能力而受到青睐。本资料旨在深入探讨Access数据库...
数据库原理及应用实验的教学目标是使学生在基本掌握数据关系模型、SQL操作及数据设计和编程方法的基础之上,能够针对具体应用系统,设计数据库、数据表及数据查询优化。实验课程的主要内容选择具体的应用系统,依据...
一.实验题目 (1)数据库单表查询和...(1)查询选修了【数据库原理】的计算机系的学生学号和姓名 (2)查询每一门课的间接先行课(即先行课的先行课) (3)查询学生的学号、姓名、选修课程的名称和成绩 (4)查询选
总的来说,MySQL数据库原理及设计方法涉及到网络通信、查询优化、并发控制、事务处理等多个层面,理解这些知识对于有效地使用和管理MySQL数据库至关重要。通过合理的设计和配置,可以确保MySQL在高并发环境下提供...
《数据库原理》课后的习题涵盖了数据库系统的多个核心领域,包括关系数据库理论、SQL语言、数据库安全性、数据库完整性、数据库设计、查询处理和优化、数据库恢复技术和并发控制。以下是这些章节中的关键知识点: 1...
数据库原理与应用是计算机科学中的核心课程之一,它主要涵盖了数据存储、数据管理、数据查询以及数据安全等方面的知识。这份“数据库原理与应用课后习题答案”文档,旨在为学习该课程的学生提供解答参考,帮助他们更...