首页 > 数据库 >数据查询(4)-----------基于学生信息数据库study

数据查询(4)-----------基于学生信息数据库study

时间:2024-05-27 10:32:23浏览次数:16  
标签:学号 study 选课 连接 ----------- 课程 where 数据库 select

连接查询

4.4.1 交叉连接

交叉连接,又称笛卡尔积,其连接结果为由第一个表的每行与第二个表的每行连接起来后形成的表

语法格式:select * from table1 cross join table2;

                  或

                  select * from table1,table2;

查询电商专业的同学和选课课程的所有可能组合。

select 姓名,课程名 from 学生 cross join 课程
    where 所在班级 = '19电商1';


        交叉连接返回结果集的行数等于所连接的两个表行数的乘积。例如,第一个表有100条记录,第二个表有200条记录,交叉连接后结果集的记录有100×200=20000条。由于交叉连接查询结果集十分庞大,执行时间长,消耗大量计算机资源,而且结果集中很多记录没有意义,所以在实际工作中很少用到,因此需要避免使用交叉连接,也可在from子句后面使用where子句设置查询条件,减少返回结果集的行数。

4.4.2 内连接


在内连接中,使用比较运算符进行表间某些字段值的比较操作,并将与连接条件相匹配的数据行组成新记录,以消除交叉连接中没有意义的数据行。

1)inner  join的显式语法结构

语法格式:select 目标列表达式1,目标列表达式2,…,目标列表达式n,

                        from table1 [ inner ] join table2 on 连接条件

                        [ where 过滤条件 ]

2)用where子句定义连接条件的隐式语法结构

语法格式:select 目标列表达式1,目标列表达式2,…,目标列表达式n,

                        from table1 ,table2

                        where 连接条件[ AND 过滤条件]

说明:

(1)目标列表达式:需要检索的列的名称。

(2)table1,table2:进行内连接的表名。

(3)连接条件:连接查询中用来连接两个表的条件,其格式为:[ <表名1.> ] < 列名1 > < 比较运            算符 > [ <表名2.> ] <列名2>

(4)在使用inner join的连接中,连接条件放在from子句的on子句中,过滤条件放在where子句中

(5)在使用where子句定义连接条件的连接中,连接条件和过滤条件都放在where子句中 。

(6)内连接是系统默认的,可省略inner。

1.等值连接与非等值连接

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

select 学生. *, 选课. * from 学生,选课
    where 学生.学号 = 选课.学号;
 
select 学生. *, 选课. *
    from 学生 inner join 选课 on 学生.学号 = 选课.学号;


注: SQL允许在查询中使用表的别名,可在from子句中为表定义别名,然后在查询中引用。

查询选修了大学英语课程且成绩在85以上的学生情况。

select a.学号,姓名,课程名,成绩
    from 学生 a,选课 b,课程 c
    where a.学号 = b.学号 and b.课程号 = c.课程号 and 课程名 = '大学英语' and 成绩 >= 85;
 
select a.学号,姓名,课程名,成绩
    from 学生 a join 选课 b on a.学号 = b.学号 join 课程 c on b.课程号 = c.课程号
    where 课程名 = '大学英语' and 成绩 >= 85;


该语句采用内连接,省略inner关键字,使用了where子句。

2.自然连接


自然连接在from子句中使用关键字nature join,自然连接在目标列中去除相同的字段名。

对“查询每个学生选修课程的情况”指令进行自然连接查询。

select *
    from 学生 nature join 选课;


(结果行数太多,就不在此放置整张图片了,可以在自己电脑上试一下)

3. 自链接

举例如下。

查询选修了c01课程的成绩高于学号为060102的成绩的学生姓名。

select a.课程号,a.学号,a.成绩
    from 选课 a,选课 b
    where a.成绩 > b.成绩 and a.课程号 = 'c01' and b.课程号 = 'c01' and b.学号 = '060102'
    order by a.成绩 desc;
 
select a.课程号,a.学号,a.成绩
    from 选课 a join 选课 b on a.成绩 > b.成绩
    where a.课程号 = 'c01' and b.课程号 = 'c01' and b.学号 = '060102'
    order by a.成绩 desc;


4.4.3 外连接

(1)左外连接。结果表中除了包括满足连接条件的行外,还包括左表的所有行,当左表有记录而            在右表中没有匹配记录时,右表对应列被设置为空值null。

(2)右外连接。结果表中除了包括满足连接条件的行外,还包括右表的所有行,当右表有记录而            在左表中没有匹配记录时,左表对应列被设置为空值null。

采用左外连接查询各班级自习室的使用情况。

select 班级名称,自习室
    from 学生 left join 班级 on(学生.所在班级 = 班级.班级名称);


右外连接的用法同理。

------------------------------------------------------------END---------------------------------------------------------------

标签:学号,study,选课,连接,-----------,课程,where,数据库,select
From: https://blog.csdn.net/2302_79947880/article/details/139231197

相关文章

  • MySQL数据库知识点快速回忆【五分钟过一遍】
    前言为找实习做准备,跟网课学习中,差不多一周时间把MySQL部分看完(2024.5.15-2024.5.24),手敲知识点,坐地铁的时候几分钟过一遍,分享给大家。一、SQL1.1SQL简介SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。1.2通用语法SQL语句可以单行或多行......
  • Python筑基之旅-文件(夹)和流
    目录一、文件操作1、文件打开与关闭2、文件读写3、文件操作模式4、文件编码二、文件夹操作1、创建文件夹2、删除文件夹3、改变当前工作目录4、获取当前工作目录5、检查文件/文件夹是否存在6、遍历文件夹三、文件路径操作1、获取绝对路径2、构建完整路径3、检查......
  • 深入浅出-CAS算法原理
    1、什么是CAS?CAS:CompareandSwap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。2、CAS算法理解对CAS的理......
  • CIFAR-10 数据集的简介
    文章目录CIFAR-10数据集的简介文件结构图像数据结构访问数据Python代码CIFAR-10数据集的数据格式CIFAR-10数据集的简介CIFAR-10数据集是一个广泛使用的图像数据集,具体可见CIFAR-10和CIFAR-100数据集,它包含60,000张32x32像素的彩色(3channels)图像,分为1......
  • k8s练习--通过NFS+PV+PVC+POD,部署一个MySQL服务,并将MySQL的数据进行持久化存储
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、实验环境二、具体步骤1.准备存储设备:这里使用的是NFS2.现在部署一个MySQL服务,并且将MySQL的数据进行持久化存储。(1)创建PV,PVC(2)部署MySQL(3)在MySQL数据库中添加数据(4)模拟MySQ服务器节点故障......
  • 响应式UI组件DevExtreme中文教程 - 工具栏的自适应模式
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中......
  • git clone 远程代码执行漏洞(CVE-2024-32002) 升级
    接到提醒说git有个漏洞,Gitclone远程代码执行漏洞(CVE-2024-32002)看了看,说是git的Symlinks模块存在高危漏洞,攻击者可以利用该漏洞执行任意代码,导致服务器失陷。以下这些版本都有影响0<git<2.39.42.40.0≤git<2.40.22.41.0≤git<2.41.12.42.0≤git<2.42.......
  • Vue3标签组件绘制--自定义按钮组件
    不知道怎么的,突然想绘制一个标签,比如el-button什么的。今天研究一下吧,不知道能不能整出来以后就可以绘制自己的组件,弄自己的组件库了。不知道有朝一日能不能让越组件青史留名?嘻嘻,百日梦做差不多了,接着去查查资料。文章分为三个部分:1.按钮组件实现(根据查阅的一个文章实现基......
  • 一起学习大模型 - 从底层了解Token Embeddings的原理(2)
    文章目录前言4.TokenEmbeddings综合运用演示4.1TokenEmbeddings处理4.2伪代码示例4.3计算cat和dog两个词的相近程序4.3.1计算方法4.3.2例子4.3.3输出结果前言上一篇文章了解了TokenEmbeddings的原理,这一篇,我们一起来综合运用学到的知识来深入了解Token......
  • 《从技术洞察到技术规划赋能》公开课(2024年7月12-13日)
    【课程背景】所谓技术洞察,简称(TI,TechnologyInsight),是根据市场发展趋势和客户需求,以及技术的生命周期,对某项技术发展趋势进行判断和预测,并明确未来3~5年的技术战略和战略控制点、重大的技术投资方向,完成技术战略规划的制订,并最终进行技术战略解码,为公司整体战略创造价值。技术......