SQL server连接查询

article/2025/9/14 14:56:19

目录

  • 前沿小补充
  • 等值与非等值连接查询
  • 自身连接
  • 外连接
  • 多表连接

前沿小补充

例3.48 查询平均成绩大于等于80分的学生学号和平均成绩

SELECT Sno,AVG(Grade)
FROM SC
WHERE AVG(Grade)>=80
GROUP BY Sno;
SELECT * FROM SC;

此时发现:
在这里插入图片描述

这是因为WHERE子句中是不能用聚集函数作为条件表达式的,正确的查询语句应该是:

SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=80;
SELECT * FROM SC;

在这里插入图片描述
总结:WHERE子句作用基本表或视图,从中选择满足条件的元组。
HAVING短语作用于组,从中选择满足条件的组

等值与非等值连接查询

连接符号是=的成为等值连接,其他的称为非等值连接
一般形式:

[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>

例3.49 查询每个学生及其课程选秀修情况

SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno;
SELECT * FROM SC;
SELECT * FROM Student;

在这里插入图片描述
拓展:去掉WHERE Student.Sno=SC.Sno后发现标称笛卡尔积形式

SELECT Student.*,SC.*
FROM Student,SCSELECT * FROM SC;
SELECT * FROM Student;

在这里插入图片描述
例3.50 对例3.49 用自然连接完成

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno;
SELECT * FROM SC;
SELECT * FROM Student;

修改为自然连接竟然是一点一点选择可视的列来进行的,是我想不到的,以为会有专门的语句来进行呢
在这里插入图片描述

在这里插入图片描述
例3.51 查询选修了2号课程且成绩大于等于90分所有学生的学号和姓名

SELECT Student.Sno,Sname 
FROM Student,SC 
WHERE Student.Sno=SC.Sno 
AND SC.Cno='2'
AND SC.Grade>=90;
SELECT * FROM SC;
SELECT * FROM Student;

一条SQL语句可以同时完成选择和连接查询,这时WHERE子句由连接谓词和选择谓词组成的复合条件
在这里插入图片描述

自身连接

一个表与其自身进行连接,称为自身连接
例3.52 查询每一门课的间接选修课

SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;
SELECT * FROM Course;

在这里插入图片描述
在T-SQL 语句中,外连接是存在空值的,

外连接

例如某个学生没有选课,仍把Student的悬浮元组保存在结果关系中,而在SC表的属性上填上空值NULL,这是需要使用外连接
例3.53 对Student进行左外连接SC

SELECT *
FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);
--SELECT * FROM Course;
SELECT * FROM SC;
SELECT * FROM Student;

在这里插入图片描述

多表连接

两个表以上的操作称为外连接
例3.54 查询每个学生的学号、姓名、选修的课程及成绩

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
SELECT * FROM Course;
SELECT * FROM SC;
SELECT * FROM Student;

在这里插入图片描述
拓展:对SELECT进行*改写

SELECT *
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;

在这里插入图片描述
原算法只是对数据进行了一步筛选。
总结:连接查询这部分比较简单,注意对属性的表格定位名时,不要打错了


http://chatgpt.dhexx.cn/article/buEFyVNU.shtml

相关文章

MySQL数据库——连接查询

第1关 内连接查询 一、本关任务&#xff1a;使用内连接查询数据表中学生姓名和对应的班级。 内连接查询 仅将两个表中满足连接条件的行组合起来作为结果集&#xff0c;称为内连接&#xff1b; 关键字&#xff1a;[inner] join ... on。 语法&#xff1a; 表1 [inner] joi…

数据库-连接查询

数据库连接查询可以进行多表联查&#xff0c;可以同时展示多个表的数据&#xff0c;方便进行查阅。那么连接查询分为多种方式&#xff0c;我们可以根据要求筛选合适的方式进行查询。下面我们来讲解一下怎么进行多表联查。 首先连接查询大致分为3种形式&#xff0c;分别为&…

当app发生闪退,测试人员该如何进行定位?

对app闪退问题进行定位 1、使用usb连接电脑和手机&#xff0c;打开手机的开发者模式 2、使用adb connect命令去进行连接&#xff0c;如&#xff1a;adb connect ip地址 3、再用adb devices命令查看是否成功连接设备 4、adb logcat -v time >d:\logcat.txt 生成日志文件到D盘…

简单adb 命令抓Android app 闪退日志

系统&#xff1a;Windows 1.手机连上电脑&#xff0c;打开开发者选项&#xff0c;打开调试模式 2.打开cmd&#xff0c;输入命令adb devices查看设备连接成功 下面进入正题&#xff1a; 查看手机的所有日志 adb logcat 只获取该应用的日志 adb logcat | findstr 应用包名开…

[Android Studio]开发APP应用出现软件程序打开闪退的排错

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f4cb;笔记目…

iOS App 闪退监测

为保障线上 App 的用户体验&#xff0c;我们一般都会对线上 App 的 crash 率做实时监控&#xff0c;一旦检测到 spike&#xff0c;可以即刻调查原因&#xff0c;但这一切的前提是 crash 日志能够准确上报。 crash 日志上报有两个难点&#xff1a; crash handler 安装之前的代…

苹果上传闪退 php,苹果手机app频繁闪退原因以及解决方法

就算再流畅的ios系统,再好的iPhone手机,用久了都会遇到一个这样子的问题,就是闪退的问题,而且APP闪退占据多数。那该怎么修复呢?闪电修告诉你原因和搞定的步骤。 闪电修上门维修手机 我们先了解下iPhone闪退的原因: 1.插件影响程序的正常运行,而导致APP闪退 2.下载的软件…

vc++6.0打开文件闪退_ipa企业签名app闪退原因

闪退跟签名一般来说没什么直接关系&#xff0c;如果掉签了&#xff0c;那根本打不开应用。闪退一般是程序或者设备问题。 掉签的原因一般有&#xff1a; 1、 企业证书的装机量的问题&#xff1a;苹果公司创建企业开发者账号最初的目的是为了方便一些大型企业内部员工测试用的&a…

app常见的 闪退及闪退的原因

背景&#xff1a; 最近一直在休假&#xff0c;把自己在工作中梳理的点点滴滴汇总整理&#xff0c;这样既能及时地让自己巩固各个要点&#xff0c;也希望通过自己整理的东西帮助其他的同行少走弯路&#xff0c;避开我之前踩过的大大小小&#xff0c;深深浅浅的坑。 此问题经常…

记一次使用android studio分析app闪退原因的过程

闪退演示 首页和问题反馈重复切换两次就闪退 &#xff08;因为是公司内部app&#xff0c;原有视频不做展示&#xff09; app架构 app是原生android studio开发的&#xff0c;部分页面是h5开发的&#xff0c;通过WebView和addJavascriptInterface接口实现js与java的交互 页面…

app闪退分析

一、网络异常引起的 1.网络异常引起的&#xff0c;服务端响应不及时&#xff0c;可能导致闪退&#xff0c;检查网络配置情况 二、版本过低 1.应用版本过低&#xff0c;app的sdk和手机的系统不兼容&#xff0c;造成闪退 2.有些api在老版本中有&#xff0c;在新版本中没有&am…

线程池的组成及种类

文章目录 一、 线程池的组成结构二、常见的线程池种类三、线程池的工作流程四、线程池的好处五、小结 我们知道一个进程可以把任务分成多个部分交给线程执行&#xff0c;多线程技术减少了CPU闲置时间&#xff0c;增加了程序并发性。 假设创建线程的时间为t1,执行任务的时间为t2…

Java 中几种常用的线程池

概述&#xff1a; 在java内置API中操作线程所用到的类为Thread。创建线程一般有两种方式&#xff0c; 继承Thread方式实现Runnable方式&#xff0c;并以runnable作为target创建Thread 在Android中的耗时任务一般都需要另开线程来执行&#xff0c;常常需要用线程池来管理这些…

面试官:线程池有哪几种创建方式,能详细的说下么?

根据摩尔定律所说&#xff1a;集成电路上可容纳的晶体管数量每 18 个月翻一番&#xff0c;因此 CPU 上的晶体管数量会越来越多。 但随着时间的推移&#xff0c;集成电路上可容纳的晶体管数量已趋向饱和&#xff0c;摩尔定律也渐渐失效&#xff0c;因此多核 CPU 逐渐变为主流&a…

JAVA常用的几种线程池

1. 为什么使用线程池 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器&#xff0c;这种方式可能是通过网络协议&#xff08;例如 HTTP、FTP 或 POP&#xff09;、通过 …

java线程池详解及五种线程池方法详解

基础知识 Executors创建线程池 Java中创建线程池很简单&#xff0c;只需要调用Executors中相应的便捷方法即可&#xff0c;比如Executors.newFixedThreadPool(int nThreads)&#xff0c;但是便捷不仅隐藏了复杂性&#xff0c;也为我们埋下了潜在的隐患&#xff08;OOM&#x…

Java常见的线程池有哪些?

1、什么是线程池 java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池 多线程技术主要解决处理器单元内多个线程执行的问题&#xff0c;它可以显著减少处理器单元的闲置时间&#xff0c;增加处理器单元的吞吐能力。 假设一个服务…

线程池的使用(7种创建方法)

目录 1. 固定数量的线程池 a. 线程池返回结果 b. ⾃定义线程池名称或优先级 2. 带缓存的线程池 3. 执⾏定时任务 a. 延迟执⾏(⼀次) b. 固定频率执⾏ c. scheduleAtFixedRate VS scheduleWithFixedDelay 4. 定时任务单线程 5. 单线程线程池 6. 根据当前CPU⽣成线程池 7. Threa…

线程池原理常用四大线程池及七大参数

目录 前言常用的四种线程池newCachedThreadPool——可缓存线程池newFixedThreadPool————指定线程数量newSingleThreadExecutor————单线程的ExecutornewScheduleThreadPool——定时线程池 线程池七大参数corePoolSize——核心线程最大数maximumPoolSize——线程池最大线…

创建线程池的七种方式

在 Java 语言中&#xff0c;并发编程往往都是通过床架线程池来实现的&#xff0c;而线程池的创建方式也有很多种&#xff0c;每种线程池的创建方式都对应了不同的使用场景。总结来说线程池的创建可以分为两大类&#xff1a; 通过 Executors 创建 通过 ThreadPoolExecutor 创建…