Java数据库基础3

2023-11-19

行转列:

首先我们默认的情况 每个名字都输出两次,而最终结果只有一次名字,所以肯定是 以名字分组 group by

select * from test_9 group by name;

对我们来说 ,id,课程,和分数都不需要了,只需要有名字 然后再把java和mysql放上去

select name , 1 as java , 1 as MySQL from test_9  group by name;

然后再使用聚合函数聚合(此处理解“聚合”,相当于把多行数据压扁成一行)

select name,max(

case course

when 'java' then score

end) Java, max(

case course

when 'MySQL' then score

end) MySQL

from test_9

group by name;

  1. DQL-连接查询:

笛卡尔积:

最简单的多表查询 : select * from 表1,表2;

inner join:

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用 join 连接查询 时,on和where条件的区别如下:
       1、on条件是在生成临时表时使用的条件,需要和链接查询一起使用。
       2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

链接查询,会发生笛卡尔乘积,但是不是完全的笛卡尔乘积,在生成视图的时候,会进行匹配,不符合条件的就不要了

结果数据是以左表数据为准,先生成左表数据,再生成右表数据

使用内连接的话,会以左边表为基准(student),生成新视图的时候,先生成左边表中的数据,然后再去匹配右边表中是否有符合条件的,没有的话,就不生成这一行

同时左表中有的,右表中没有的数据,都不会生成

右表中有的,左表中没有的也一样不会生成,所以 左表和右表就算换了位置,数据行数不会变多

但是会丢失数据,不符合 条件的数据不会查询出来,所以 刚添加的 孙老师就不会查询出来的,就算是teacher表在左边,也一样不会查询出来孙老师,并且学生小红也没有被查询处理

因为学生表中 teacher_id列 没有保存孙老师的ID,并且小红也没有保存老师的ID,所以都不要

多表查询是有左右表之分的,一般左表是主表,以左边为主

Inner join  也可以直接写join 不写inner

 left join:

left join on : 左连接,又称左外链接,是 left outer join 的简写 ,使用left join 和 使用 left outer join 是一样的效果

以左边的表为基准,左表中数据都有,右表中不符合条件的就没有,就在指定列上用null代替

生成视图的时候,也是先生成左表的数据

right join:

right join on : 右链接,又称右外连接,是 right outer join 的简写,使用right join 和 使用 right outer join 是一样的

以右表为基准,右表中数据都有,左表中不符合条件的就没有,就在指定列上用null代替

但是视图生成的时候,还是会先生成左表数据

以上可以看出,student right join teacher 显示的内容是与teacher left join student相同的。而teacher right join student 显示的内容又与student left join student相同。

所以,我们工作中,right join基本不用。用的最多的是inner join 与left join。

PS:外键与表连接没有任何关系,不要混淆。

外键是为了保证你不能随便删除/插入/修改数据,是数据完整性的一种约束机制。

而表连接是因为一张表的字段无法满足业务需求(你想查的字段来自于2张甚至多张表)

一个是为了增删改,一个是为了查,它俩之间没有联系。

右连接用的较少

能使用 inner join 就不使用 left join

            能使用 left join 就不使用 right join

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java数据库基础3 的相关文章

  • 前端难点,坑点总结

    问题总结 前言 登录验证码图片显示 post下载文件 js调用ie浏览器的打印功能打印网页上内容 移动端适配不同的屏幕 ie9浏览器异步上传文件 ie浏览器 input标签会出现ie自带叉号 使用flex布局 文字超出部分变省略号 移动端1
  • 现在才知道掌握IDEA、VS Code这些常用快捷键有多方便

    IDEA VS Code这些常用快捷键 文章目录 IDEA VS Code这些常用快捷键 前言 一 IDEA快捷键 1 控制台语句 System out 相关 2 查找 3 跳转切换 4 编码相关 public static void ma
  • 一套简单的基本生活财富自由方案

    前言 之前一直觉得财富自由似乎遥不可及 但今年学习理财以来 至今已有一年的样子了 读完了100本书 再加上实操经验 发现虽然成为富豪依然遥不可及 但一些基本的财富自由方案已经可以实现了 试算了一下 按照保守收益估计 其实是完全可以实现的 经
  • springboot 微信小程序 对接微信支付功能(完整版)

    微信小程序对接微信支付功能 业务流程时序图 JAVA版 1 项目架构 2 pom xml配置文件 3 小程序账号参数配置类 4 JAVA 通用代码 4 1 工具类 4 1 1 IdGen id生成类 4 1 2 Render 响应结果类 4
  • ImportError: xxx.so: failed to map segment from shared object - uWSGI部署 pytorch和tensorflow 报错 (已解决)

    最近将本地写好的基于Flask的模型调用后端 含torch和tensorflow代码 部署到服务器 Ubuntu 20 04 上遇到了困扰了我两天的问题 按理说 深度学习研究者开发可视化系统 并进行部署的时候应该很容易遇到这种问题 但是我搜
  • 跳频技术——学习总结(一)

    跳频技术 学习总结 一 开始跳频的学习快一个月了吧 最近才停下其它事情 集中时间看了一些内容 资料有 跳频通信干扰与抗干扰技术 那丹彤 跳频通信 梅文华 和网上百度的各种资料 一 扩频概念和分类 扩频通信 一种利用与信息无关的伪随机序列使射
  • 跨域问题详解及解决方案

    文章目录 一 前言 二 什么是跨域问题 三 为什么会出现跨域问题 四 什么情况下会出现跨域 五 如何解决跨域问题 5 1 使用 CrossOrigin注解 5 2 使用WebMvcConfigurer 5 3 使用Filter 六 代码示例
  • 第二节:数据类型——number和string

    上节回顾 undefined为window的属性 有些程序会在函数开始置定义一个var undefined 这是因为undefined是window的一个属性 当你判断某一个东西是不是undefined的时候 计算机会到window中整体去
  • Java--软件安装、环境配置、语言类型、命名规则

    java的四大特性 自动垃圾回收 面向对象 跨平台 多线程 编译型语言和解释型语言的区别 编译型语言 运行之前 先把源文件通过指定的编译器 生成机器码文件 可以让计算机直接识别 优点 只需要编译一次 可以运行无数次 所以运行效率极高 缺点
  • script 标签 async 属性

    script 标签 async 属性 普通script 文档解析的过程中 如果遇到script脚本 就会停止页面的解析进行下载 但是Chrome会做一个优化 如果遇到script脚本 会快速的查看后边有没有需要下载其他资源的 如果有的话 会
  • elementUI项目打包后样式错乱问题解决

    gt npm run dev 时样式完全没有问题 run build之后打包上传服务器之后样式乱了 一脸懵逼 1 检查样式发现重置element的样式没有生效 但是检查main js里面的样式引入顺序没有问题啊 2 尝试将css引入放入ap
  • 关于串口通信思考

    如何给串口通信口增加LED灯作为通信指示灯 以下给出2种电路设计参考 第一种 第二种 思考 以上哪种电路更优 为什么 第一种电路 LED灯使用共阴极连接 这种方法有什么好处呢 就是在TX在高电平情况下会点亮二极管 低电平情况下不会 这个问题
  • ES6(这是我见过写的最好的)!推荐

    文章目录 ES6总结 var let const的区别 箭头函数和function的区别 结构赋值 原型 原型链 继承 1 原型链继承 2 构造函数继承 3 组合式继承 4 class类继承 Promise async和await Gene
  • 浅谈人工智能设备的硬件与软件

    人工智能时代的到来 使人们从很多繁重复杂的各种工作中得以释放 而背后的设备主要有硬件和软件来组成 硬件是构成人工智能设备的基础 软件则是充分挖掘硬件潜力的工具 硬件设计的标准化与规范化 以及其版本更改的高成本性 从而突出了软件易修改和深体验
  • Cannot change version of project facet Dynamic Web Module to 2.5 错误

    问题 新建maven webapp项目后 出现Cannot change version of project facet Dynamic web module to 3 0或者2 5 分析 使用Maven新建Web项目时使用的是Artif
  • 第一节:数据类型——null,undefined和布尔值

    JavaScript 的数据类型 共有六种 ES6 又新增了第七种 Symbol 类型的值 数值 number 整数和小数 比如1和3 14 字符串 string 文本 比如Hello World 布尔值 boolean 表示真伪的两个特殊
  • loC和AOP使用扩展

    6 1多种方式实现依赖注入 6 1 1构造注入 6 1 2技能训练1 6 1 3使用p命名空间实现属性注入 Spring配置文件从2 0版本开始采用schema形式 使用不同的命名空间管理不同类型的配置使得配置文件更具扩展性 列如 我们曾使
  • 华为hilens 系统制作

    恢复出厂设置 https support huawei com enterprise zh doc EDOC1100112066 9b0a1fba 长按RST按钮2 3秒 在这个过程中 短按电源按钮后松开 当前面板健康指示灯出现橙色 常亮
  • 【HarmonyOS开发】ArkUI实现下拉刷新/上拉加载

    列表下拉刷新 上拉加载更多 不管在web时代还是鸿蒙应用都是一个非常常用的功能 基于ArkUI中TS扩展的声明式开发范式实现一个下拉刷新 上拉加载 上拉加载 下拉刷新 如果数据量过大 可以使用 LazyForEach 代替 ForEach
  • 【HarmonyOS开发】ArkUI实现下拉刷新/上拉加载

    列表下拉刷新 上拉加载更多 不管在web时代还是鸿蒙应用都是一个非常常用的功能 基于ArkUI中TS扩展的声明式开发范式实现一个下拉刷新 上拉加载 上拉加载 下拉刷新 如果数据量过大 可以使用 LazyForEach 代替 ForEach

随机推荐

  • 使用QFile进行文件操作(QFile可以使用FILE *指针,还必须指定AutoCloseHandle)

    QFile类我我们提供了操作文件的常用功能 它是一种io设备 可以用来读写文本文件和二进制文件 也可以用来读写Qt的资源文件 QFile类可以单独使用 该类本身提供了read write函数 但更方便的方式是 将QFile和QTextStr
  • 毕业设计 2023-2024年最新软件工程专业毕设选题题目推荐汇总

    文章目录 0 简介 1 如何选题 2 最新软件工程毕设选题 0 简介 学长搜集分享最新的软件工程业专业毕设选题 难度适中 适合作为毕业设计 大家参考 学长整理的题目标准 相对容易 工作量达标 题目新颖 1 如何选题 最近非常多的学弟学妹问学
  • dell笔记本怎么开启虚拟化_dell台式电脑bios设置u盘启动的三种操作教程

    最近有小编发现有很多的网友朋友们并不知道dell怎么进入bios 为什么这么说呢 因为每个品牌怎么进入bios是不一样的 现在戴尔用户越来越多 不知道dell怎么进入bios的用户 接下来小编教你dell台式电脑bios设置u盘启动的三种操
  • uni-table多选获取当前行数据

    废话不多说 直接上代码
  • connect()函数

    connect 用于建立与指定socket的连接 头文件 include
  • RabbitMQ消息队列基础点

    消息队列 为什么使用消息队列 1 解耦 2 异步 3 削峰 消息队列的缺点 各种消息中间件的区别 消息丢失 如何保证消息的顺序性 如何解决消息队列的延时以及过期失效问题 消息队列满了以后该怎么处理 有几百万消息持续积压几小时 说说怎么解决
  • 安装bs4时出现问题

    安装bs4时出现问题 C Users xxia gt pip install bs4 Collecting bs4 Using cached bs4 0 0 1 tar gz 1 1 kB Preparing metadata setup
  • DTCC 2023丨云原生环境下,需要什么样的 ETL 方案?

    2023年8月16日 18日 第14届中国数据库技术大会 DTCC 2023 于北京隆重召开 拓数派受邀参与本次大会 PieCloudDB 技术专家邱培峰在大会做了 云原生虚拟数仓 PieCloudDB ETL 方案设计与实现 的主题演讲
  • react脚手架配置别名并自动提示[VSCode]

    1 安装三方库 craco craco yarn add craco dev npm install craco craco save dev 2 配置craco config js const path require path modu
  • idea调整代码标签编辑器标签editor tabs的横排和竖排

    第一 找到任意一个文件鼠标右击 然后选择Configure Editor Tabs 如下图所示 第二 在tab placement中选择top left right bottom等即可调整标签位置 最后点击apply完成设置 最后结果如下图
  • python中,获取字符串的长度

    说明 与其他的语言一样 有时候需要查看或者说计算字符串的长度 在此记录下python中通过哪个函数实现 操作过程 1 通过len 函数返回字符串的长度 gt gt gt text python gt gt gt len text 6 gt
  • 投资不能只看概念,也要尝试使用

    目前 越来越多的行业开始应用聊天机器人ChatGPT 其中 一款免费的国内网站 多御浏览器 提供了安全快速 高效稳定的浏览器体验 该网站不仅提供了许多实用工具 包括当下非常流行的ChatGPT 也为开发人员和初学者提供了方便的在线工具解决方
  • 《Web安全基础》02. 信息收集

    web 1 CDN 绕过 1 1 判断是否有 CDN 服务 1 2 常见绕过方法 1 3 相关资源 2 网站架构 3 WAF 4 APP 及其他资产 5 资产监控 本系列侧重方法论 各工具只是实现目标的载体 命令与工具只做简单介绍 其使用另
  • 数据库数据导入的基本操作

    数据库数据导入的步骤 开发工具与关键技术 数据库 作者 邱慧敏 撰写时间 2019 01 27 数据库最基本的操作就是 如何导入数据 第一步 打开 登录 数据库 第二步 鼠标右键数据库 然后点击新建数据库 第三步 编程数据库名称 可 更改路
  • C++容器排序算法的简单应用

    功能实现 1 去掉所有重复的单词 2 按照单词的长度进行排序 3 统计长度等于或者超过6个字符的单词个数 4 按照单词的长度顺序进行输出 include
  • Ceph优化系列(一):Ceph架构及性能优化

    转载 Ceph架构及性能优化 对分布式存储系统的优化离不开以下几点 1 硬件层面 硬件规划 SSD选择 BIOS设置 2 软件层面 Linux OS Ceph Configurations PG Number调整 CRUSH Map 其他因
  • NoClassDefFoundError: org/springframework/cloud/client/loadbalancer/LoadBalancedRetryFactory

    异常信息 Exception in thread main java lang NoClassDefFoundError org springframework cloud client loadbalancer LoadBalancedR
  • CUDA异步执行与同步调试

    异步执行 默认情况下 GPU 操作是异步的 当您调用使用 GPU 的函数时 操作会被排入特定设备的队列 但不一定要等到稍后才会执行 这允许我们并行执行更多计算 包括在 CPU 或其他 GPU 上的操作 一般来说 异步计算的影响对调用者是不可
  • java基础-CAS、synchronized和AQS的理解

    乐观锁与悲观锁的区别 悲观锁 总是假设最坏的情况 每次去拿数据的时候都认为别人会修改 所以每次在拿数据的时候都会上锁 这样别人想拿这个数据就会阻塞直到它拿到锁 共享资源每次只给一个线程使用 其它线程阻塞 用完后再把资源转让给其它线程 传统的
  • Java数据库基础3

    行转列 首先我们默认的情况 每个名字都输出两次 而最终结果只有一次名字 所以肯定是 以名字分组 group by select from test 9 group by name 对我们来说 id 课程 和分数都不需要了 只需要有名字 然后