0100 MySQL03
1.distinct关键字
把查询结果去除重复记录,原表数据不会被修改,只能出现在字段的最前端
select distinct job from emp;
select distinct job,deptno from emp;//表示两个字段联合起来 去重
2.连接查询
从一张表中单独查询,称为单表查询
两张表联合起来查询数据,如从emp表中取员工名字,从dept表中取部门名字,这样的跨表查询,称为连接查询
连接查询的分类:
1.根据语法年代分类
SQL92:19992年出现的语法
SQL99:1999年出现的语法(重点学习)
2.根据表连接方式分类
内连接:
等值连接
非等值连接
自连接
外连接
左外连接(左连接)
右外连接(右连接)
全连接(两张表都是主表的连接,了解)
3.当两张表进行连接查询时,没有任何条件限制会发生什么?
如:查询每个员工所在部门的名称
select ename,dname from emp,dept;
发生笛卡尔积现象,最终查询结果条数=两张表条数的乘积
4.如何避免笛卡尔积现象?
加入条件限制,尽量降低表的连接次数
select ename,dname from emp,dept where emp.deptno = dept.deptno;
注:最终查询结果条数减少,但匹配过程中匹配次数不变,还是两张表条数的乘积
表起别名,提高效率
select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;//SQL92语法
3.内连接之等值连接
条件是等量关系,称为等值连接
1.查询每个员工所在部门名称,显示员工名和部门名?
select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;//SQL92语法
缺点:结构不清晰,表的连接条件和 后期进一步筛选的条件 都放在了where之后
select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;//SQL99语法
优点:表连接的条件独立。 from a join b on 连接条件 where 进一步筛选条件
select e.ename,d.dname from emp e (inner) join dept d on e.deptno = d.deptno;//省略inner
4.内连接之非等值连接
条件不是等量关系,称为等值连接
1.找出每个员工的薪资等级,要求显示员工名,薪资和薪资等级?
select e.ename,e.sal,s.grade from emp e (inner) join salgrade s on e.sal between s.losal and s.hisal;
5.内连接之自连接
一张表之间的连接,称为自连接
1.查询员工的上级领导,要求显示员工名和领导名?
技巧:把一张表看成两张表。emp a 员工表,emp b 领导表
a.mgr = b.empno//员工的领导编号 = 领导的员工编号
select a.ename as '员工名',b.ename as '领导名' from emp a join emp b on a.mgr = b.empno;
6.外连接
内连接特点:把完全能够匹配限制条件的数据查询出来,两张表没有主次关系
外连接特点:两张表连接产生了主次关系
1.查询每个员工所在部门名称,显示员工名和部门名?
select e.ename,d.dname from emp e (inner) join dept d on e.deptno = d.deptno;//内连接
select e.ename,d.dname from emp e right (outer) join dept d on e.deptno = d.deptno;//右外连接
select e.ename,d.dname from dept d left (outer) join emp e on e.deptno = d.deptno;//左外连接
//right表示将join关键字右边的这张表看成主表,为了将这张表的数据全部查询出来,捎带关联查询左边的表,若左表没有与右表相匹配,用null代替。outer可省略
//外连接的查询结果条数一定 大于等于 内连接的查询结果条数
2.查询员工的上级领导,要求显示所有员工名和领导名?(所有:无领导的员工也要显示)
select a.ename as '员工名',b.ename as '领导名' from emp a left join emp b on a.mgr = b.empno;
//员工表为主表,左连接
7.多张表的连接
语法:select...from a join b on a和b的连接条件 join c on a和c的连接条件 join d on a和d的连接条件...
1.找出每个员工的部门名称以及薪资等级,要求显示员工名,部门名,薪资和薪资等级?
emp e :取出员工名和薪资
dept d:取出部门名
salgrade s:取出薪资等级
e与d连接条件:部门编号
e与s连接条件:薪资区间
select e.ename,e.sal,d.dname,s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal;
2.找出每个员工的部门名称、薪资等级和上级领导,要求显示员工名,领导名,部门名,薪资和薪资等级?
select e.ename,e.sal,d.dname,s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal left join emp l on e.mgr = l.empno;
//内连接与外连接在一条语句中可组合使用
8.子查询
select语句中嵌套select语句,被嵌套的select语句称为子查询。
子查询可出现的位置?
select ...(select)...from...(select)...where...(select)...//可出现在select,from,where之后
9.where中的子查询
1.找出比最低薪资高的员工姓名和薪资
第一步:查询最低工资是多少?
select min(sal) from emp;//800
第二步:找出大于800的员工姓名和薪资?
select ename,sal from emp where sal > 800;
第三步:合并
select ename,sal from emp where sal > select min(sal) from emp;//先执行子查询
10.from中的子查询
技巧:from中的子查询,可将子查询的查询结果当作一张临时表
1.找出每个岗位的平均工资的薪资等级?
第一步:找出每个岗位的平均工资(岗位分组求平均值)
select job,avg(sal) from emp group by job;
第二步:把以上查询结果当作一张临时表t,与薪资等级表s连接
条件:t.avg(sal) between s.losal and s.hisal;
select t.*,s.grade from t join salgrade s on t.avg(sal) between s.losal and s.hisal;
//从t表中查所有,s表中查薪资等级
第三步:合并
select t.*,s.grade from (select job,avg(sal) as avgsal from emp group by job) t join salgrade s on t.avgsal between s.losal and s.hisal;
//as avgsal 把列名当做函数,起别名
11.select中的子查询(了解)
1.找出每个员工的部门名,要求显示员工名,部门名
select e.ename,(select d.dname from dept d where e.deptno = d.deptno) as dname from emp e;
注意:select中的子查询只能返回一条结果,否则报错
12.union合并查询结果集
1.查询工作岗位是manager或salesman的员工?
select ename,job from emp where job = 'manager' or job = 'salesman';
select ename,job from emp where job in ('manager','salesman');
select ename,job from emp where job = 'manager' union select ename,job from emp where job = 'salesman';
//union效率更高一些,对于表连接来说,每连接一次新表,匹配的次数满足笛卡尔积
但union可减少匹配次数,完成两个结果集的拼接
如:假设a,b,c都有10条记录。a 连接 b 连接 c 匹配次数10*10*10=1000
a连接b的结果:10*10=100,a连接c的结果:10*10=100
使用union:100+100=200(把乘法变加法)
2.使用注意事项
1.在进行结果集合并时,要求两个结果集的列数相同
select ename,job from emp where job = 'manager' union select ename from emp where job = 'salesman';//错误
2.结果集合并时,列和列的数据类型也要相同(MySQL不相同也可,Oracle不行)
select ename,job from emp where job = 'manager' union select ename,sal from emp where job = 'salesman';
13.limit
limit将查询结果集的一部分取出来,通常使用在分页查询当中
如:百度默认一页显示10条记录
分页的作用:提高用户体验,一页一页翻页看
使用:limit 起始下标,长度
1.按照薪资降序,取出排名前五的员工?
select ename,sal from emp order by sal desc limit 0,5;//完整用法,起始下标从0开始
select ename,sal from emp order by sal desc limit 5;//缺省用法
注:MySQL中limit在order by之后执行
2.取出工资排名在(3,5)名的员工
select ename,sal from emp order by sal desc limt 2,3;//起始位置2,长度3
14.通用分页
每页显示3条记录
第一页:limit 0,3
第二页:limit 3,3
第三页:limit 6,3
第四页:limit 9,3
每页显示pageSize条记录
第pageNo页:limit (pageNo-1)*pageSize,pageSize
相关文章:
0100 MySQL03
1.distinct关键字 把查询结果去除重复记录,原表数据不会被修改,只能出现在字段的最前端 select distinct job from emp; select distinct job,deptno from emp;//表示两个字段联合起来 去重 2.连接查询 从一张表中单独查询,称为单表查询 两张表联合…...
32- PyTorch基础 (PyTorch系列) (深度学习)
知识要点 PyTorch可以说是现阶段主流的深度学习框架 . 1 PyTorch入门 1.1 PyTorch概述 Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,可以当做是能在GPU中计算的矩阵.,也可以当做是ndarray的GPU版! PyT…...
用gdb.attach()在gdb下断点但没停下的情况及解决办法
在python中,如果导入了pwntools,就可以使用里面的gdb.attach(io)的命令来下断点。 但是这一次鼠鼠遇到了一个情况就是下了断点,但是仍然无法在断点处开始运行,奇奇怪怪。 这是我的攻击脚本 我们运行一下。 可以看到其实已经运行起…...
Linux入门篇-作业(jobs)调度(本质仍然是进程)
简介 之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。①前台进程(front process) 运行在用户…...
vue 监听 取消监听
vue 的 watch 除了可以使用声明式的配置项以外,还可以通过命令式 this.$watch 方法。 如下是我们比较少用的命令式(想要初始只监听一次,必须命令式写法): 监听只运行一次 声明式 export default{data: {showType: fa…...
0103深度优先搜索和单点连通-无向图-数据结构和算法(Java)
文章目录1.1 走迷宫1.2 图的深度优先搜索实现1.3 算法分析及性能1. 4 单点连通性后记1.1 走迷宫 简单的迷宫,如下图1.1-1所示: 探索迷宫而不迷路,我们需要: 选择一条没有标记过的通道,在你走过的路上铺一条绳子&…...
进销存管理系统
技术:Java等摘要:进销存管理系统是为了实现企业仓库商品管理的系统化、规范化和自动化,从而提高企业管理效率而设计开发的管理信息系统。它完全取代了过去一直用人工管理的工作方式,避免了由于管理人员手工操作上的疏忽以及管理质…...
Sonar:VSCode配置SonarLint/SonarLint连接SonarQube
需求描述 公司为项目代码配置了Sonar检测,希望在VSCode中开发项目时能够同步检测结果。 注意事项 SonarQube版本必须为7.9,否则SonarLint无法连接(GitHub-SonarLint-Wiki第一行就有说明)!!!S…...
陀螺仪小车(Forerake-Car)
项目简介:搭建一辆有arduino UNO 与rnf24l01组成的小车;手部安装由arduino nano开发板、nrf24l01、imu构成的手势控制器,利用手势控制器检测手部状态、发送信号对小车进行前进,实现基于卡尔曼滤波的MPU6050姿态结算。 准备工作&am…...
Leetcode Day5 含有重复元素集合的组合+
1、含有重复元素集合的组合 给定一个可能有重复数字的整数数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次,解集不能包含重复的组合。 【题目传送门】 思…...
Mac Book pro(M1)使用总结
1、拿到电脑激活的时候,一定要记住账号密码及安全问题的答案。 2、显示隐藏文件夹: 3、显示.git或者gitignore等隐藏后缀的文件: 打开终端 defaults write com.apple.finder AppleShowAllFiles TRUE重启Finder在终端输入 killall Finder …...
QML集成JavaScript
在QML中可以使用现有的QML元素来创建页面,但QML紧密的集成了必要的JavaScript。 但QML中使用JavaScript比较严格,在QML中不可以添加或修改JavaScript全局对象成员,这样可能会使用一个未经声明的变量。 内联JavaScript 一些小型的JavaScript函…...
学习周报3.5
文章目录前言文献阅读摘要介绍方法总结相关性总结前言 本周阅读文献《Multi-step ahead probabilistic forecasting of multiple hydrological》,文献主要提出一种基于三维卷积神经网络、卷积最小门记忆神经网络和变分贝叶斯神经网络的混合深度学习模型(…...
java基础学习篇
java学习 多写(代码、笔记、文章),多练(交流、思维、技能),多分享,多提问、多思考 什么是计算机 由硬件和软件组成,广泛应用在科学计算、数据处理、自动控制,计算机辅…...
Go 语言基础语法及应用实践
Go语言是一门由Google开发的静态类型、编译型的开源编程语言,被设计成简单、高效、安全的语言。作为一门相对年轻的语言,Go语言的使用范围正在不断扩大,特别是在Web开发、云计算、容器化和分布式系统等领域越来越受到欢迎。 在本篇文章中,我们将探讨Go语言的基础语法及应用…...
C语言自定义类型---进阶
之前的文章中有结构体初阶知识的讲解,对结构体不是很了解的小伙伴可以先去去看一下结构体初阶 结构体,枚举,联合结构体结构体类型的声明特殊的声明结构的自引用结构体变量的定义和初始化结构体内存对齐 <3 <3 <3(重点)那为什么存在内…...
85.链表总结
链表总结 链表总结与进阶 抽象数据类型(ADT abstract data type)与抽象数据接口(ADI abstract data Interface) 链表实际上就是对于结构体、结构体指针和结构体内可以包含指向同类型的结构体指针不可以包含指向同类型的结构体的应…...
【博学谷学习记录】超强总结,用心分享|狂野大数据课程【DataFrame的相关API】的总结分析
操作dataFrame一般有二种操作的方式, 一种为SQL方式, 另一种为DSL方式 SQL方式: 通过编写SQL语句完成统计分析操作DSL方式: 领域特定语言 指的通过DF的特有API完成计算操作(通过代码形式)从使用角度来说: SQL可能更加的方便一些, 当适应了DSL写法后, 你会发现DSL要比SQL更加…...
粒子群优化最小二乘支持向量机SVM回归分析,pso-lssvm回归预测
目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 SVM应用实例,粒子群优化最小二乘支持向量机SVM回归分析 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大…...
lavis多模态开源框架学习--安装
安装lavis安装lavis测试安装问题过程中的其他操作安装lavis 因为lavis已经发布在pypi中,所以可以直接利用pip安装 pip install salesforce-lavis测试安装 from lavis.models import model_zoo print(model_zoo) # # Architectures Types # # …...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
