当前位置: 首页 > article >正文

SQL Server 数据库,多表查询

4.2使用T-SQL实现多表查询

    前面讲述过的所有查询都是基于单个数据库表的查询,如果一个查询需要对多个表进行操作, 就称为联接查询,联接查询的结果集或结果称为表之间的联接。

     联接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要 的特征。

4.2.1表联接类型

表联接类型可以分为内联接、外联接和交叉联接等。

1.内联接

     内联接(inner join)是最常用的一种联接方式,只返回两个数据集合之间匹配关系的行,将位 于两个互相交叉的数据集合中重叠部分以内的数据行联接起来。 内联接使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与联接相匹配的数据行

2.外联接

    外联接(outer join)是对内联接的扩充,除了将两个数据集合中重复部分以内的数据行联接起 来之外,还可以根据要求返回左侧或右侧表中非匹配的数据或全部的数据

外联接分为以下几种。

1)左外联接

左外联接(left join 或 left outer join)的结果集包括左表的所有行,如果左表的某一行在右表中没有匹配行,则右表返回空值,否则返回相应值。

2)右外联接

右外联接(right join 或right outer join)是左外联接的反向联接,将返回右表的所有行,如果右 表的某一行在左表中没有匹配行,则左表返回空值,否则返回相应值。

3)全联接/完整外联接

全联接/完整外联接(full join 或full outer join)将返回左表和右表中的所有行,当某一行在另 一个表中没有匹配行时,另一个表返回空值,否则返回相应值。

3.交叉联接

    交叉联接就是表之间没有任何关联条件,查询将返回左表与右表挨个联接的所有行,就是左表 中的每行与右表中的所有行再一一组合,相当于两个表“相乘”。

    因为交叉联接应用场合较少,所以本课程不过多进行介绍,也不要求熟练掌握,如果感兴趣可 以查阅相关资料。

实验案例二:多表查询

实验环境

某公司有一台已经安装了SQLServer 2016的服务器,class数据库中包含products表和sales表. 表中内容分别如图1和图2所示。

                                                                     图1 

                                                                     图2

需求描述

> 在products表和sales表中查询产品的名称,种类、成本,销售地点和销售价格。

> 在products表和sales表中查询销往海南的产品名称、种类、成本和销售价格。

> 在products表和sales表中查询销往北京的蔬菜名称、种类,成本和销售价格。

实验步骤

在products 表和 sales表中查询产品的名称、种类、成本,销售地点和销售价格。

  select products.名称 名称products,products.种类 种类products,products.成本 成本products,sales.名称 名称sales,sales.销售地点 销售地点sales,sales.销售价格 销售价格sales
  from products inner join sales on products.名称=sales.名称

查询结果

在products表和sales表中查询销往海南的产品名称、种类、成本和销售价格。

select products.名称 名称products,products.种类 种类products,products.成本 成本products,sales.名称 名称sales,sales.销售地点 销售地点sales,sales.销售价格 销售价格sales
from products inner join sales on products.名称=sales.名称
where 销售地点='海南'

查询结果

 在products表和sales表中查询销往北京的蔬菜名称、种类,成本和销售价格。

select products.名称 名称products,products.种类 种类products,products.成本 成本products,sales.名称 名称sales,sales.销售地点 销售地点sales,sales.销售价格 销售价格sales
from products inner join sales on products.名称=sales.名称
where 销售地点='北京' and 种类='蔬菜'

查询结果


http://www.kler.cn/news/163355.html

相关文章:

  • 设计模式——七大设计原则
  • 人工智能教程(三):更多有用的 Python 库
  • 12.Mysql 多表数据横向合并和纵向合并
  • 记录 | CUDA编程中用constexpr替代__host____device__
  • 爬虫学习(三)用beautiful 解析html
  • 最简单的基于 FFmpeg 的音频解码器
  • 3D Gaussian Splatting的使用
  • TortoiseGit 下载代码
  • uni-app 微信小程序之好看的ui登录页面(五)
  • SAP UI5 walkthrough step8 Translatable Texts
  • 【密码学引论】密码协议
  • nginx反向代理到aws S3 ,解决S3返回500、502、503错误
  • 微信小程序 纯css画仪表盘
  • CCKS2023-面向金融领域的主体事件检测-亚军方案分享
  • javascript实现Stack(栈)数据结构
  • PySpark开发环境搭建常见问题及解决
  • 网站内容审核功能的重要性
  • MYSQL练题笔记-子查询-换座位
  • unity 2d 入门 飞翔小鸟 小鸟碰撞 及死亡(九)
  • EOCR-CT电流互感器与SR-CT区别简介
  • 『Linux升级路』进度条小程序
  • vue使用甘特图dhtmlxgantt + gantt.addTaskLayer
  • 基于高通MSM8953平台android9.0的GPIO驱动开发
  • Hbase JAVA API 增删改查操作
  • 【电子取证篇】汽车取证数据提取与汽车取证实例浅析(附标准下载)
  • imazing正在查找最新的apple mobile device组件
  • SpringBoot AOP切面实现对自定义注解的属性动态修改
  • 无重复字符的最长子串(LeetCode 3)
  • 记录一下Mac配置SpringBoot开发环境
  • “华为杯”研究生数学建模竞赛2016年-【华为杯】A题:无人机在抢险救灾中的优化运用(附获奖论文及MATLAB代码实现)