连接查询
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
连接可以在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语句。 连接...
在C#编程中,数据库连接查询是至关重要的一个环节,特别是在开发桌面应用或者Web应用时,需要频繁地与数据库进行交互。本篇文章将详细介绍如何在C#中进行数据库连接查询,以及如何将查询结果绑定到dataGridView控件...
简单VC对数据库连接查询操作案例 代码里修改你所要连的数据库
数据库连接查询导出SQL语句工具是一款专门设计用于帮助IT专业人士和数据库管理员高效管理与操作数据库的实用软件。它集成了多种功能,如数据库连接、数据查询、SQL语句生成和导出,使得数据库的日常管理和维护工作变...
数据库连接测试及数据查询是IT领域中常见的任务,特别是在开发和维护基于MS SQL Server的应用程序时。这个过程涉及确保应用程序能够正确地与SQL Server数据库建立连接,并执行有效的数据查询操作。下面将详细介绍这...
通用数据库连接查询器,支持Oracle、DB2、SQL Server、MySQL、PostgreSQL、Sybase,集成“查看表空间”、“权限”、“存储过程源代码”、“导入导出SQL脚本”、“保存查询结果”等功能。 纯绿色,免安装,跨平台...
本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...
### 数据库连接池查询知识点详解 #### 一、数据库连接池概述 数据库连接池是一种用于管理数据库连接的技术,它能够预先创建多个数据库连接,并将这些连接保存在一个池中供应用程序重复使用,从而避免了频繁创建和...
2. 在下面的项目中选择用户连接(User Connection),这样就可以实时查询到 SQL Server 数据库连接数。 方法二:通过系统表查询 可以通过系统表来查询 SQL Server 数据库连接数。具体步骤如下: 1. 使用以下查询...
数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...
在IT领域,数据库连接组件是用于程序与数据库交互的关键工具,而易语言作为一种中文编程语言,为开发者提供了简便的方式来操作数据库。本篇文章将详细讲解如何使用易语言的数据库连接组件来打开并操作Excel文件。 ...
小小的献丑下,希望各位喜欢,初学者的作品
在IT行业中,数据库连接是应用程序与数据存储交互的基础。Delphi是一种流行的面向对象的编程语言,常用于开发桌面应用程序。Ado(ActiveX Data Objects)是Microsoft提供的一个数据访问接口,使得开发者能够轻松地...
在IT领域,数据库连接是数据集成过程中的关键环节,特别是在使用工具如Kettle(也称为Pentaho Data Integration,简称PDI)时。Kettle是一款强大的ETL(Extract, Transform, Load)工具,用于从各种数据源抽取数据,...
Java建立数据库连接并实现数据库查询,初学者通过本Java源代码,了解如何加载驱动器,获取连接,定义SQL查询语句,获取Statement对象,执行查询、遍历ResultSet、获取数据、在控制台输出数据,关闭连接等。
在IT领域,数据库是存储和管理数据的...通过这个练习,你将深入理解数据库连接的原理,学习如何编写SQL查询,以及如何在实际项目中安全有效地操作数据库。实践中遇到的问题将有助于你巩固这些概念,提升你的编程技能。
数据库连接池是一种管理数据库连接的技术,它预先初始化一定数量的数据库连接并保存在内存中,当应用程序需要连接数据库时,可以从连接池中获取一个已存在的连接,用完后再归还,而不是每次都新建和关闭连接。...
以上就是使用C#进行数据库连接、数据添加、查询和删除的基本操作。通过这些基础,开发者可以构建更复杂的业务逻辑和数据管理功能。在学习和实践中,理解ADO.NET的工作原理,熟练掌握SqlCommand、SqlDataReader等对象...
在Java编程中,数据库连接是应用与数据存储交互的基础。这篇博客"java数据库连接方法(一)"将探讨如何在Java中建立与数据库的连接,包括JDBC(Java Database Connectivity)的基本概念、步骤以及常见的数据库连接池...