数据库原理与应用(SQL Server)笔记 第三章 连接查询

简介: 数据库原理与应用(SQL Server)笔记 第三章 连接查询

前言


本次内容,我们主要掌握数据库的多表查询,即通过两个表及两个以上的表之间的逻辑关系进行检索,将通过连接谓词和关键字JOIN来介绍。


一、连接谓词


连接谓词在WHERE子句中使用比较运算符给出连接条件,对多个表连接,同时在FROM子句中要指定所连接的多个表。为了区分多个表中同样的列字段,我们使用“ . ”来表示哪个表的哪个字段(例如classes.classNO则表示classes表的classNO列)。


格式如下:

(表名1.) 列名1 <比较运算符> (表名2.) 列名2


这里我们只讲等值连接,即表之间是通过比较运算符“=”连接的,而非等值连接即是通过非等号连接。

另外当在目标列中去掉相同的字段名,即为自然连接;而如果将同一个表进行连接称为自连接。


例、根据以下三个表信息,使用T-SQL语句查询销售员“胡宝林”与客户“王小姐”所签订的订单编号及日期。

1666917704491.jpg

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

运行结果:

1666917727409.jpg


二、JOIN连接


另一种方式则是使用关键字JOIN连接,其表示方式是用在FROM子句当中。这里的连接也分很多种:


(一)内连接


内连接按照JOIN…ON中ON所指定的连接条件合并两个表,返回满足连接条件的行,由于内连接是系统默认的,可以省略INNER关键字。内连接可以实现多个表的连接。

格式如下:

FROM 表1 JOIN 表2 ON <连接条件>

我们来看一个题。


例、根据以下两个表的信息,使用T-SQL语句查询所有员工有订单的销售员的信息表,采用内连接。

1666917746369.jpg


SQL语句:

USE Sales
SELECT Seller.*,Orders.*      
FROM Seller JOIN Orders ON Seller.SaleID=Orders.SaleID


运行结果:

1666917792507.jpg


(二)外连接


首先我们要知道,外连接只能对两个表进行。

外连接跟内连接的差别在于内连接只有满足连接条件的行才能输出结果,而外连接输出结果不仅包括满足连接条件的行,还包括相应表的所有行。

这里外连接分为三种:

名称 作用
左外连接 输出结果不仅包括满足连接条件的行,还包括左表的所有行
右外连接 输出结果不仅包括满足连接条件的行,还包括右表的所有行
完全外连接 输出结果不仅包括满足连接条件的行,还包括两个表的所有行


(三)交叉连接


交叉连接,只做了解,即对两个表进行笛卡尔积,即第一个表的行数乘以第二个表的行数(笛卡尔积可以表示为一个二维表,表中每行对应一个元组,每列的值来自一个域)。


可以了解一下笛卡尔积


相关文章
|
6月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
9月前
|
SQL 安全 关系型数据库
SQL注入之万能密码:原理、实践与防御全解析
本文深入解析了“万能密码”攻击的运行机制及其危险性,通过实例展示了SQL注入的基本原理与变种形式。文章还提供了企业级防御方案,包括参数化查询、输入验证、权限控制及WAF规则配置等深度防御策略。同时,探讨了二阶注入和布尔盲注等新型攻击方式,并给出开发者自查清单。最后强调安全防护需持续改进,无绝对安全,建议使用成熟ORM框架并定期审计。技术内容仅供学习参考,严禁非法用途。
1527 0
|
8月前
|
SQL 存储 自然语言处理
SQL的解析和优化的原理:一条sql 执行过程是什么?
SQL的解析和优化的原理:一条sql 执行过程是什么?
SQL的解析和优化的原理:一条sql 执行过程是什么?
|
6月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
538 0
|
9月前
|
SQL 人工智能 自然语言处理
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
|
9月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
366 6
|
10月前
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
SQL 数据库
如何应用SQL约束条件?
【10月更文挑战第28天】如何应用SQL约束条件?
376 11
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
262 0