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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 数据库原理与应用(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


(二)外连接


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

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

这里外连接分为三种:

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


(三)交叉连接


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


可以了解一下笛卡尔积


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
14天前
|
SQL 存储 关系型数据库
MySQL原理简介—1.SQL的执行流程
本文介绍了MySQL驱动、数据库连接池及SQL执行流程的关键组件和作用。主要内容包括:MySQL驱动用于建立Java系统与数据库的网络连接;数据库连接池提高多线程并发访问效率;MySQL中的连接池维护多个数据库连接并进行权限验证;网络连接由线程处理,监听请求并读取数据;SQL接口负责执行SQL语句;查询解析器将SQL语句解析为可执行逻辑;查询优化器选择最优查询路径;存储引擎接口负责实际的数据操作;执行器根据优化后的执行计划调用存储引擎接口完成SQL语句的执行。整个流程确保了高效、安全地处理SQL请求。
138 75
|
12天前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
69 9
|
9天前
|
SQL 存储 关系型数据库
MySQL原理简介—10.SQL语句和执行计划
本文介绍了MySQL执行计划的相关概念及其优化方法。首先解释了什么是执行计划,它是SQL语句在查询时如何检索、筛选和排序数据的过程。接着详细描述了执行计划中常见的访问类型,如const、ref、range、index和all等,并分析了它们的性能特点。文中还探讨了多表关联查询的原理及优化策略,包括驱动表和被驱动表的选择。此外,文章讨论了全表扫描和索引的成本计算方法,以及MySQL如何通过成本估算选择最优执行计划。最后,介绍了explain命令的各个参数含义,帮助理解查询优化器的工作机制。通过这些内容,读者可以更好地理解和优化SQL查询性能。
|
1月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
100 6
|
1月前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
|
2月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
98 11
|
1月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
269 0
|
2月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
46 6
|
2月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
2月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。

热门文章

最新文章