sqlserver练习----涉及多个表的连接查询

news2024/10/5 21:19:36

等值联接

多表查询语句中的连接条件使用的是等号,例:Student.Sno=SC.Sno

例:

Student

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

202015121李勇20CS
202015122刘晨10

CS

202015123

王敏18

MA

202015125张力19IS

SC:

学号

Sno

课程号

Cno

成绩

Grade

202015121192
202015121285
202015121388
202015122290
202015122380

查询每个学生及其选修课程的情况

select Student.*,SC.*
from Student,SC
where Student.Sno=SC.Sno;

查询选修2号课程且成绩在88分以上的所有学生的学号和姓名

select Student.Sno,Sname
from Student,SC
where Student.Sno=SC.Sno
and SC.Cno='2'
and SC.Grade>'88';

对于”select Student.Sno,Sname“,Sno在两张表都出现了,所以必须加上表名或者别名前缀,Sname只在Student表中出现,引用时可以去掉。

等值连接和自然连接的区别:

1.自然连接一定是等值连接,但等值连接不一定是自然连接。

例如在数据库中:

S:

AB
12
33
59

R:

BC
21
72
35

等值连接(S.A=R.C)

AS.BR.BC
1221
5935

等值连接(S.B=R.B)

AS.BR.BC
1221
3335

自然连接

ABC
121
335

2.等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。

3.等值连接不把重复的属性除去;而自然连接要把重复的属性除去。所以等值连接将目标列重复的属性列去掉,就是自然连接

注:

两个关系R和S在做自然联接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组(悬挂元组)在操作时被舍弃了,这些被舍弃的元组称为悬浮元组,又称为悬挂元组。

例如:S中的5,9     R中的7,2

补充:

半连接:关系R和S的半连接是R和S的自然连接在关系R的属性集上的投影

关系R

ABC
abc
dbc
bbf
cad

关系S

BCD
bcd
bce
adb

ABCD
abcd
abce
dbcd
dbce
cadb

 

ABC
abc
dbc
cad

BCD
bcd
bce
adb

 

非等值联接:多表查询语句中的连接条件不是使用等号

例如:下面的between..and...,就表示员工表(emp)中员工的工资,不能超过职级表(jg)中的最高工资,不能低于其最低工资。

SELECT emp.employee_id, emp.last_name, jg.grade_level
FROM employees emp, job_grades jg
WHERE emp.salary BETWEEN jg.lowest_sal AND jg.highest_sal;

自身连接(自连接)

一个表与其自己进行连接,由于属性名都是同名属性,因此需要给表起别名前缀

SPJ表:

 检索至少使用了零件编号为P3,P5的工程编号JNO

法一:使用where

select distinct X.JNO
from SPJ AS X,SPJ AS Y
WHERE X.JNO=Y.JNO
AND X.PNO='P3'
AND Y.PNO='P5';

法二:使用 inner join ....on(也可以使用join.....on)

select distinct X.JNO
from SPJ X inner join SPJ Y
on X.JNO=Y.JNO
where X.PNO='P3'
and Y.PNO='P5';

外连接:(left/right/full)outer join...on

还是用开头的例子:

Student:

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

202015121李勇20CS
202015122刘晨10

CS

202015123

王敏18

MA

202015125张力19IS

SC:

学号

Sno

课程号

Cno

成绩

Grade

202015121192
202015121285
202015121388
202015122290
202015122380

left outer join....on

左外连接,LEFT OUTER JOIN,告诉DBMS生成的结果表中,除了包括匹配行外,还包括JOIN关键字(FROM子句中)左边表的不匹配行,即将左边表的悬浮元组保存在结果关系中,而其他属性填上空值。左外连接实际上可以表示为:

左外连接 = 内连接 + 左边表中失配的元组

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student LEFT OUTER JOIN SC
ON (Student.Sno=SC.Sno);

 right outer join..on

右外连接(RIGHT OUTER JOIN)告诉DBMS生成的结果表中,除了包括匹配行外,还包括JOIN关键字(FROM子句中)右边表的不匹配行,即将右边表中的悬浮元组保留下来,而在其他属性上填入空值。右外连接实际上可以表示为:

右外连接 = 内连接 + 右边表中失配的元组
 

full outer join..on

全外连接,FULL OUTER JOIN,告诉DBMS生成的结果表中,除了包括匹配行外,还包括JOIN关键字(FROM子句中)左边表和右边表的不匹配行,即把两张表的悬浮元组都保留下来,其他属性填为空值。全外连接实际上可以表示为:

全外连接 = 内连接 + 左边表中失配的元组 + 右边表中失配的元组。

 
这个例子展现的关系不明显,在举一个例子:

关系R:

ABC
abc
bbf
cad

关系S:

BCD
bcd
bce
adb
efg

左外连接:

ABCD
abcd
abce
cadb
bbfnull

右外连接:

ABCD
abcd
abce
cadb
nullefg

全外连接:

ABCD
abcd
abce
cadb
bbfnull
nullefg

 

外部并:

两个关系R和S在做并操作时,构成的新关系属性由R和S的所有属性组成(公共属性只取一次),新关系的元组由属于R或属于S的元组构成,同时元组在新增加的属性上填空值。

ABCD
abcnull
abcnull
cadnull
nullbcd
nullbce
nulladb
nullefg

交叉连接CROSS JOIN

结果包含所有连接表中的所有可能的行组合,交叉连接返回的是两个表的笛卡尔积

例:

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student CROSS JOIN SC

将会返回所有可能的组合

 如果加上“where (Student.Sno=SC.Sno);”

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student  cross JOIN SC
where (Student.Sno=SC.Sno);

结果:

 我们发现,将cross join换成“,”(逗号)效果相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招面试腹稿

1、自我介绍 你好,我叫熊志君,是就读于电子信息专业的24届研究生。在校期间获得过两次一等奖学金、两次省级竞赛一等奖,英语过了6级,我的研究方向是水下slam多传感器融合方向,用过c/c/python三种编程语言。 2、系统移植…

如何缓解高考前紧张的情绪,ChatGPT这么说......

明天就要高考了,看到家长有各种打气的做法,既有上灵隐寺的,也有穿着旗袍希望旗开得胜的,还有说什么失败了不要紧的......,反正都是焦虑的不行。 面对高考,大多考生都会紧张,但适度的紧张对发挥出…

解码器 | 基于 Transformers 的编码器-解码器模型

基于 transformer 的编码器-解码器模型是 表征学习 和 模型架构 这两个领域多年研究成果的结晶。本文简要介绍了神经编码器-解码器模型的历史,更多背景知识,建议读者阅读由 Sebastion Ruder 撰写的这篇精彩 博文。此外,建议读者对 自注意力 (…

Mocha AE:AdjustTrack 模块

跟踪时由于缺乏细节或有障碍物阻挡,跟踪点会发生漂移,此时可考虑使用 AdjustTrack (调整跟踪)模块手动设置表面区域 Planar Surface关键帧来获得更可靠的表面跟踪数据。 但是,如果需要设置较多的关键帧时,建…

Linux计划任务

常见的计划任务:进行日志的轮替(log rotate);日志文件分析(logwatch)任务;建立locate数据库;man page查询数据库的建立;RPM软件登录文件的建立;移除暂存档&am…

尺度悖论解析费米悖论:从夜郎自大到揭秘宇宙中智慧生命的谜团

费米悖论是一个引人入胜的问题,它引发了人们对宇宙中是否存在其他智慧生命体的思考。然而,尺度悖论提供了一个可能的解释角度,即我们对宇宙的观测和推断尺度可能太小,无法涵盖整个宇宙范围。下面深入探讨尺度悖论以及费米悖论的具…

Linux系统一般用来干嘛

Linux系统是一种开源的操作系统,广泛应用于服务器、嵌入式设备、超级计算机等领域。它具有高度的稳定性、安全性和灵活性,可以用来进行各种各样的任务,例如: 1、服务器操作系统 Linux系统在服务器领域应用广泛,可以用…

Maven继承

Maven 在设计时,借鉴了 Java 面向对象中的继承思想,提出了 POM 继承思想。 当一个项目包含多个模块时,可以在该项目中再创建一个父模块,并在其 POM 中声明依赖,其他模块的 POM 可通过继承父模块的 POM 来获得对相关依赖…

微信小程序自定义导航栏

微信小程序自定义导航栏 业务需求: 点击小房子进行跳转指定的页面 、更改小房子的样式、或者是自定义导航栏 首先我们需要找到pages.json这个文件 如果是原生的微信小程序文件名字是 app.json其实就是找到配置路由的文件在代码里面添加属性"navigationStyle&qu…

java设计模式(十四)模板方法

目录 定义模式结构角色职责代码实现适用场景优缺点 定义 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 指在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的…

1. Hadoop 入门

1. Hadoop 入门 1. 大数据概述 1. 大数据相关说明 大数据由来: 传统数据处理应用软件不足以处理(存储和计算)它们大而复杂的数据集 大数据面临的两大问题: 针对海量数据的 存储、计算 大数据的特性:容量大、种类多…

VFP使用BLOB字段存取图片到SQL2000,显示出来也EASY

首先来看一下BLOB这个数据类型的介绍: 大二进制对象(Blob)数据类型,若要存储一个任何种类的二进制数据,如 ASCII 码文本、一个可执行文件(.exe) 或一个带有不确定长度的字节字符串,可使用大二进制对象数据类型。对于从 SQL Serve…

c++11 标准模板(STL)(std::bitset)(六)

定义于头文件 <bitset> template< std::size_t N > class bitset; 类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集&#xff0c;并将它与字符串和整数相互转换。 bitset 满足可复制构造 (CopyConstructible) 及可复制赋值 (CopyAssign…

港科夜闻|海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、海南省教育厅党委书记曹献坤到访香港科大(广州)开展实地调研。香港科大(广州)临时党委书记屈哨兵从政治建设、思想建设、组织建设、制度建设及工作机制等方面&#xff0c;为曹献坤书记详细介绍了学校的党建工作体系构建&…

C盘爆了怎么办

一、删除大文件 关闭hiberfil.sys功能 关闭hiberfil.sys功能&#xff08;系统休眠时才会用到&#xff09; 管理员身份运行cmd 输入如下命令 powercfg.exe -h off移动pagefile.sys 这是虚拟内存文件,不建议删除&#xff0c;可以移动 右击此电脑->属性->高级系统设置 …

被吐槽,苹果挤牙膏式发布会,跟微信产品迭代如出一辙

大家好&#xff0c;我是校长。 今天一大早醒来&#xff0c;苹果发布会&#xff0c;毫无意外&#xff0c;在 iOS 系统更新迭代方面&#xff0c;可谓是乏善可陈&#xff0c;毫无新意。 当然了&#xff0c;被吐槽也就在情理之中了。 很多人说 iOS17 的最大变化&#xff0c;就是没有…

ISO21434 产品开发网络安全(七)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 4.1 设计 4.2 集成和验证 五、输出 一、概述 本条款描述了网络安全要求和架构设计的规范&#xff08;章节10.4.1&#xff09;。 此外&#xff0c;本子句还描述了集成和验证活动&…

Yakit: 集成化单兵安全能力平台使用教程·反连管理篇

Yakit: 集成化单兵安全能力平台使用教程反连管理篇 1.端口监听器2.DNSlog3.反连服务器4.ICMP-Sizelog5.TCP-Portlog6.Yso-Java Hack1.端口监听器 反弹 Shell 的接收工具,利用端口监听器可以在服务器上开启一个端口,进行监听,并进行交互 输入想要监听的端口,点击监听该端口…

直播抽奖功能(互动功能接收端JS-SDK)

功能概述 本模块主要用于处理抽奖相关的逻辑&#xff0c;可以对抽奖开始和抽奖结束等事件进行监听以及提交观众中奖信息&#xff0c;接入方可以根据这些事件流程定制自己的UI界面。 抽奖--效果截图 抽奖--效果截图 初始化及销毁 在实例化该模块并进行使用之前&#xff0c;需要…

Shell脚本:for循环

shell脚本-for循环 一、for循环&#xff1a;1.格式&#xff1a;2.实操&#xff1a;3.类c语言&#xff1a; 一、for循环&#xff1a; 1.格式&#xff1a; &#xff08;1&#xff09;for 已知的循环次数场景 for 变量名 in 【 名称范围 】 do 命令序列&#xff08;执行内容&…