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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 数据库原理与应用(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
相关文章
|
7天前
|
存储 算法 Serverless
了解数据库中的布隆过滤器原理
【5月更文挑战第17天】本文介绍布隆过滤器是一种空间高效的的数据结构,用于判断一个元素是否可能在一个集合中。它包含一个位图和多个哈希函数。
31 1
了解数据库中的布隆过滤器原理
|
4天前
|
缓存 算法 关系型数据库
SQL DB - 关系型数据库是如何工作的
• 绿:O(1)或者叫常数阶复杂度,保持为常数(要不人家就不会叫常数阶复杂度了)。 • 红:O(log(n))对数阶复杂度,即使在十亿级数据量时也很低。 • 粉:最糟糕的复杂度是 O(n^2),平方阶复杂度,运算数快速膨胀。 • 黑和蓝:另外两种复杂度(的运算数也是)快速增长。 如果要处理2000条元素: • O(1) 算法会消耗 1 次运算 • O(log(n)) 算法会消耗 7 次运算 • O(n) 算法会消耗 2000 次运算
|
5天前
|
SQL 存储 大数据
济南sql数据库工程师
济南SQL数据库工程师是负责管理和维护SQL数据库的专业人员。以下是关于济南SQL数据库工程师的一些详细介绍: 一、岗位职责 1. 负责数据库日常巡检,及时反馈运行状况,并跟踪解决问题,确
46 21
|
5天前
|
SQL 监控 数据库
sql anywhere 数据库优化
\ Anywhere\对于任何数据库系统,优化都是持续的过程,旨在提高查询性能、减少资源消耗并确保数据的完整性和安全性。以下是一些建议,帮助您优化 SQL Anywhere 数据库: 1. **
41 5
|
5天前
|
SQL 监控 安全
sql数据库清除工具
在SQL数据库管理中,清理和优化数据库是一个重要的环节,特别是当数据库日志文件过大时。虽然没有特定的“SQL数据库清除工具”可以一键解决所有问题,但你可以使用多种方法和工具来清理SQL Server数
27 6
|
5天前
|
SQL 关系型数据库 MySQL
sql数据库命令
SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准编程语言。以下是一些常用的 SQL 数据库命令: 1. **创建数据库**: ``
26 7
|
5天前
|
SQL 存储 关系型数据库
sql建数据库
在SQL中,创建数据库的基本语法是使用`CREATE DATABASE`语句。以下是一个简单的示例,演示如何创建一个名为`mydatabase`的数据库: ```sql CREATE DA
22 0
|
5天前
|
SQL 存储 关系型数据库
sql 数据库教程
SQL数据库教程可以从以下几个方面进行介绍: 一、SQL概述与基本概念 SQL,全称Structured Query Language,即结构化查询语言,是用于管理关系型数据库的编程语言。
21 0
|
5天前
|
SQL JavaScript 前端开发
js链接sql数据库
在JavaScript中直接连接SQL数据库(如MySQL、PostgreSQL等)通常不是推荐的做法,特别是当JavaScript在客户端(如浏览器)中运行时。这是因为将数据库凭据暴露给客户端会导致
16 0
|
6天前
|
SQL 关系型数据库 MySQL
sql怎么创建数据库表,SQL(Struct
SQL是管理关系型数据库的标准语言,用于创建、维护和查询数据库表。创建表的基本步骤包括:选择数据库(如MySQL等),使用CREATE TABLE语句定义表结构,指定字段属性和数据类型,设置约束(如主键、唯一键),创建索引以提升查询性能,最后以分号结束语句完成创建。此外,还可使用ALTER TABLE修改表,DROP TABLE删除表,以及其他SQL语句进行查询、插入、更新和删除操作,有效管理数据库。
24 3