`

三、连接查询

 
阅读更多
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
连接可以在SELECT 语句的FROM子句或WHERE子句中建立,在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。SQL-92标准所定义的FROM子句的连接语法格式为:
FROM join_table join_type join_table
[ON (join_condition)]
其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。
join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接
连接。例如:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。
如下面使用左外连接将论坛内容和作者信息连接起来:
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username

(三)交叉连接
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等
于6*8=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
分享到:
评论

相关推荐

    数据库连接查询、子查询

    数据库连接查询和子查询 数据库连接查询和子查询是数据库查询语言中两个重要的概念。连接查询是指将两个或多个表连接起来,以便从多个表中检索数据。子查询是指在 WHERE 或 HAVING 子句中使用的SELECT语句。 连接...

    Gbase 8s查询之连接查询

    在 Gbase 8s 中,连接查询可以分为内连接、外连接和自连接三种类型。 内连接是将两个表连接在一起的操作,条件称为连接谓词或连接条件。内连接只返回两个表中与连接谓词匹配的行,不匹配的行不会被输出。例如,假设...

    Oracle外连接查询

    Oracle的外连接查询是数据库操作中的重要组成部分,它允许用户获取来自两个或更多表的数据,即使在某些情况下,这些表之间的连接条件不完全匹配。在理解外连接查询之前,我们首先要了解内连接,即最基础的相等连接。...

    数据库连接查询相关外连接内连接

    连接查询主要有三种类型:内连接、外连接和交叉连接。 1. **内连接**(Inner Join):返回两个表中匹配的行。例如,找出供应商和他们销售的零件: ```sql SELECT s.f_sname, p.f_pname FROM t_supplier s INNER ...

    数据库多表连接查询详解

    连接查询的类型有三种:内连接、外连接和交叉连接。内连接是指在两个或多个表之间的连接,返回的是与连接条件相匹配的数据行。外连接则返回的是左表、右表或两个表中的所有数据行,而不仅仅是与连接条件相匹配的行。...

    数据库表的连接和嵌套查询实验报告

    实验报告的主题是“数据库表的连接和嵌套查询”,它旨在帮助用户深入理解SQL Server查询分析器的使用,以及如何运用Transact-SQL语言进行多表连接查询和嵌套查询。实验环境为Microsoft Windows XP操作系统搭配...

    数据库实验报告(数据库的简单查询和连接查询 )

    实验报告——数据库的简单查询和连接查询 在本次数据库实验中,主要目标是掌握SQL语言的基础操作,包括创建数据库和表、修改表结构、插入和更新数据,以及进行有条件的数据查询。以下是实验的具体内容和步骤: 1. ...

    SQL的数据查询功能之三---多表连接查询

    SQL 的数据查询功能之三 --- 多表连接查询 SQL 的数据查询功能之三 --- 多表连接查询是数据库管理系统中的一种重要功能,它允许用户从多个表中检索数据,并将其组合成一个结果集。多表连接查询是指在一个查询语句中...

    SQL连接查询语句实例

    在SQL查询中,连接查询是将两个或多个表的数据结合在一起的重要操作,这对于数据分析和信息检索至关重要。本文将深入探讨几种主要的SQL连接查询类型,包括内连接(INNER JOIN)、外连接(FULL JOIN、LEFT JOIN、...

    数据库原理及运用实验四SQL连接查询.doc

    数据库原理及运用实验四 SQL 连接查询 本实验报告主要探讨了数据库原理的应用,通过 SQL 连接查询实现了多种复杂的查询操作。以下是实验报告的详细解释: 一、数据库原理 数据库原理是数据库系统的基础理论,它...

    数据库概论:实验三 简单查询和连接查询实验.doc

    数据库概论实验三简单查询和连接查询实验 数据库概论实验三简单查询和连接查询实验是数据库的基本查询操作,简单查询是只涉及到一个表(基本表或视图)的查询,连接查询是涉及两个表以上的数据连接查询。 简单查询...

    数据库概论:实验三-简单查询和连接查询实验.docx

    数据库概论实验三简单查询和连接查询实验 数据库概论实验三简单查询和连接查询实验是数据库基本查询操作的实验部分,旨在加深学生对SQL Server查询分析器的使用方法和SQL、Transaction-SQL语言的查询语句的理解。...

    SQL多表进行内连接和外连接查询

    通常在项目中对表的查询都是关联多张表,多表查询就涉及到sql的内连接、外连接和自连接查询。本篇文章将简单的介绍这些sql连接的使用,希望对大家有所帮助。

    左连接查询三个表.rar

    左连接查询三个表.rar 实现了左连接查询三个表。表jobs含有其他三个表的id,而且有自己的两个名称字段,要实现查询jobs表的所有记录,同时把jobs表字段的三个外键id值查询结果为三个表中的名称字段。

    tcp全连接和半连接问题查询步骤

    TCP 全连接和半连接问题查询步骤 TCP 是一种面向连接的传输层协议,保证了数据的可靠传输。然而,在实际应用中,我们经常会遇到连接不稳定、连接不上的问题。这是由于 TCP 的半连接队列和全连接队列的溢出所导致的...

    SQL多表连接查询优化的相关研究

    标题中的“SQL多表连接查询优化的相关研究”指的是在数据库管理中,如何高效地执行涉及多个数据表的SQL查询操作。在SQL(Structured Query Language)中,连接查询(JOIN)是用于合并两个或更多表中的数据的关键技术...

    三表关联查询

    这种查询方法允许我们从三个或更多表格中提取相关信息,通过连接(JOIN)操作来整合这些表格的数据,以便获得更全面的视图。下面我们将深入探讨三表关联查询的概念、类型以及如何在实际中应用。 一、什么是三表关联...

    test_lesson07 SQL99语法连接查询.pdf

    在SQL99语法中,连接查询是数据库操作中不可或缺的一部分,它允许我们从多个表中检索数据,并将这些数据关联起来。在这个测试中,我们将探讨三个具体的查询需求,每个需求都涉及到了不同的连接类型和处理缺失值的...

    SQL数据库查询语句连接查询多表连接查询.docx

    SQL数据库查询语句是用于检索和操作数据库的关键工具,尤其在多表连接查询中,能够高效地处理复杂的数据关系。连接查询允许从多个表中提取数据,并根据它们之间的关联进行合并。 1. **简单查询** 简单的SQL查询...

    Access连接查询工具

    Access连接查询工具是一款轻量级的应用程序,专为数据库管理员和开发者设计,旨在方便地查看、创建和修改Access数据库中的表结构。这款工具无需安装,用户可以随时随地在任何支持Access数据库的环境中使用,大大提高...

Global site tag (gtag.js) - Google Analytics