MySQL的内置函数复合查询内外连接
文章目录
- 内置函数
- 时间函数
- 字符串函数
- 数学函数
- 其他函数
- 复合查询
- 多表笛卡尔积
- 自连接
- 在where中使用子查询
- 多列子查询
- 在from中使用子查询
- 内连接
- 外连接
- 左外连接
- 右外连接
内置函数
时间函数
| 函数 | 描述 |
|---|---|
| current_date() | 当前日期 |
| current_time() | 当前时间 |
| current_timestamp() | 当前时间戳 |
| date(datetime) | 返回datetime参数的日期部分 |
| date_add(date, interval val) | 在date中加上参数的日期或时间 |
| date_sub(date, interval val) | 在date中加上参数的日期或时间 |
| datediff(date1, date2) | 返回两个日期之间的时间差,单位为天 |
| now() | 当前日期和时间 |

字符串函数
| 函数 | 描述 |
|---|---|
| charset(str) | 返回字符串的字符集 |
| concat(str2 [, …]) | 连接字符串 |
| instr(string, ch) | 返回ch在string中出现的位置,没有返回0 |
| ucase(str) | 转换为大写 |
| lcase(str) | 转换为小写 |
| left(str, length) | 从str中的左边起取length个字符 |
| length(str) | str的长度 |
| replace(string, str, replace_str) | 在string中用replace_str替换str |
| strcmp(str1, str2) | 逐字符比较两字符串的大小 |
| substring(str, pos [, length]) | 从str的pos开始取length个字符 |
| ltrim(str) rtrim(str) trim(str) | 去除前空格或者后空格 |
select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from
student;
数学函数
| 函数 | 描述 |
|---|---|
| abs(num) | 绝对值函数 |
| bin(num) | 十进制转换二进制 |
| hex(num) | 转换为十六进制 |
| conv(num, from_base, to_base) | 进制转换 |
| ceiling(num) | 向上去整 |
| floor(num) | 向下去整 |
| format(num, decimal_places) | 格式化,保留小数位数 |
| rand() | 返回随机浮点数,范围[0.0, 1.0) |
| mod(num, denominator) | 取模,求余 |
向上去整:往上找比数值大的最小整数
向下去整:往下找比数值小的最大整数
0向去整:找比数值更靠近0的并且里数值最近的整数
其他函数
| 函数 | 描述 |
|---|---|
| user() | 查询当前用户 |
| md5(str) | 对一个字符串进行md5摘要,摘要后得到一个32为字符串 |
| database() | 显示当前正在使用的数据库 |
| password() | 对用户加密 |
| ifnull(val1, val2) | 如果val1为null,返回val2, 否则返回val1 |
复合查询
为了更好演示效果,演示的数据库中有三张表, emp(员工信息)、dept(部门信息)、salgrad(薪资信息)
多表笛卡尔积
如果想要查询的结果需要多张表结合才能搜索出,则可以直接多表结合去查询。
需要注意,如果查询的列中有大于一张表拥有同名的列信息则需要指明表

可以看到如图的写法就会出现很多重复的员工信息,这是因为直接结合的话会把所有表的数据都结合进去,这样并不符合实际场景。
因此可以加上筛选条件,因为两张表是具有外键关联的,所以可以使用外键的列作为结合的条件

自连接
并不需要有多张真实存在的物理属性的表才可以结合,因为单张表操作得出的结果也可以看作是一张表,在MySQL中一切皆为表结构,所以单张表得出的虚拟表也可以和其本身去结合
不过需要注意如果使用自连接需要对表进行不同的别名,这样系统才能分辨出区别
例如:找出名为SMITH的员工的上级领导的编号和姓名(mgr是员工领导的编号–empno)

在where中使用子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询
例如:显示SMITH同一部门的员工

例如:查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号

其中关键字in的作用是,查询集合是否包含了该条件
例如:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

其中关键字all表示:集合中的所有数据
例如:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号

其中关键字any表示:集合中的任意一个数据
多列子查询
这是只使用一列作为子查询的条件,也可以同时使用多列作为查询条件
多列子查询是指查询返回多个列数据的子查询语句
例如:查询和SMITH的部门和岗位完全相同的所有雇员

在from中使用子查询
子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用
例如:**查找每个部门工资最高的人的姓名、工资、部门、最高工资 **

内连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

外连接
左外连接
左侧的表完全显示就是左外连接,如果右侧的表不对应左侧的表则为NULL

右外连接
右侧的表完全显示就是右外连接,如果左侧的表不对应右侧的表则为NULL

相关文章:
MySQL的内置函数复合查询内外连接
文章目录 内置函数时间函数字符串函数数学函数其他函数 复合查询多表笛卡尔积自连接在where中使用子查询多列子查询在from中使用子查询 内连接外连接左外连接右外连接 内置函数 时间函数 函数描述current_date()当前日期current_time()当前时间current_timestamp()当前时间戳…...
操作系统(OS)与系统进程
操作系统(OS)与系统进程 冯诺依曼体系结构操作系统(Operator System)进程基本概念进程的描述(PCB)查看进程通过系统调用获取进程标示符(PID)通过系统调用创建进程(fork)进程状态&…...
防重复提交:自定义注解 + 拦截器(HandlerInterceptor)
防重复提交:自定义注解 拦截器(HandlerInterceptor) 一、思路: 1、首先自定义注解; 2、创建拦截器实现类(自定义类名称),拦截器(HandlerInterceptor); 3…...
Excel中将文本格式的数值转换为数字
在使用excel时,有时需要对数字列进行各种计算,比如求平均值,我们都知道应该使用AVERAGE()函数,但是很多时候结果却“不尽如人意”。 1 问题: 使用AVERAGE函数: 结果: 可以看到单元格左上角有个…...
uni-app开发小程序中遇到的map地图的点聚合以及polygon划分区域问题
写一篇文章来记录以下我在开发小程序地图过程中遇到的两个小坑吧,一个是点聚合,用的是joinCluster这个指令,另一个是polygon在地图上划分多边形的问题: 1.首先说一下点聚合问题,由于之前没有做过小程序地图问题&#…...
【笔记】软件测试的艺术
软件测试的心理学和经济学 测试是为发现错误而执行程序的过程,所以它是一个破坏性的过程,测试是一个“施虐”的过程。 软件测试的10大原则 1、测试用例需要对预期输出的结果有明确的定义 做这件事的前提是能够提前知晓需求和效果图,如果不…...
配置本地maven
安装maven安装包 修改环境变量 vim ~/.bash_profile export JMETER_HOME/Users/yyyyjinying/apache-jmeter-5.4.1 export GOROOT/usr/local/go export GOPATH/Users/yyyyjinying/demo-file/git/backend/go export GROOVY_HOME/Users/yyyyjinying/sortware/groovy-4.0.14 exp…...
C# 按钮的AcceptButton和CancelButton属性
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...
SMT贴片制造:专业、现代、智能的未来之选
在现代科技的快速发展下,SMT贴片制造作为电子元器件的核心工艺之一,正以其专业、现代和智能的特点成为未来的首选。 随着电子产品越来越小型化,传统的手工焊接已经无法满足高速、高精度、高稳定性的要求。而SMT贴片制造作为一种先进的表面贴…...
python sqlalchemy db.session 的commit()和colse()对session中的对象的影响
实验一:commit()之后查看stu的属性id,查看db.session是否改变 db_test.route("/db_test",methods["GET"]) def db_test():stuStuTest()stu.stu_age22stu.stu_name"nnannns"stu.stu_class11print("sessio…...
python读取图像小工具
一、和图像交互获得图像的坐标和像素值 import cv2 import numpy as np import signal import threading import timeif __name__ __main__:img cv2.imread(XXX,0)#读取图片font_face,font_scale,thicknesscv2.FONT_HERSHEY_SIMPLEX,0.5,1#鼠标交互def mouseHandler(event,x…...
【ES6】JavaScript中Reflect
Reflect是JavaScript中的一个内建对象,它提供了一组方法,用于对对象和函数进行操作和检查。这些方法与内建对象的方法非常相似,但具有更高的灵活性。 以下是Reflect对象的一些常用方法: 1、Reflect.apply(target, thisArgument,…...
Ajax + Promise复习简单小结simple
axios使用 先看看老朋友 axios axios是基于Ajaxpromise封装的 看一下他的简单使用 安装:npm install axios --save 引入:import axios from axios GitHub地址 基本使用 axios({url: http://hmajax.itheima.net/api/province}).then(function (result…...
WebDAV之π-Disk派盘 + 小书匠
小书匠是一款功能丰富,强大的知识管理工具。全平台覆盖,离线数据存储,自定义数据服务器,所见即所得的 markdown 编辑体验。 小书匠提供了多种实用的编辑模式,例如:栏编辑、双栏编辑、三栏编辑、全屏写作、全屏阅读等。并且该软件还提供了许多有用的扩展语法,比如Latex公…...
LTE ATTACH流程、PDN流程、PGW地址分配介绍
1、S-GW\P-GW选择 MME根据S-GW和P-GW的拓扑信息进行S-GW/P-GW的选择,在S-GW的候选序列和P-GW的候选序列中比较,寻找是否有合一的S-GW/P-GW,并且根据S-GW的优先级和权重信息进行排序,得到S-GW/P-GW的候选组。 2、SGW>PGW连接 PD…...
SQL sever中用户管理
目录 一、用户管理常见方法 二、用户管理方法示例 2.1. 创建登录账户: 2.1.1 检查是否创建账户成功: 2.2. 创建数据库用户: 2.2.1检查用户是否创建成功: 2.3. 授予权限: 2.3.1授予 SELECT、INSERT 和 U…...
linux————pxe网络批量装机
目录 一、概述 什么是pxe pxe组件 二、搭建交互式pxe装机 一、配置基础环境 二、配置vsftpd 三、配置tftp 四、准备pxelinx.0文件、引导文件、内核文件 一、准备pxelinux.0 二、准备引导文件、内核文件 五、配置dhcp 一、安装dhcp 二、配置dhcp 六、创建default文…...
处理时延降低24倍,联通云粒数据引擎优化实践
*作者:郑扬勇,云粒星河数据中台产品负责人 云粒智慧科技有限公司成立于 2018 年 6 月,是中国联通集团混改以来成立的首家合资公司,是中国智慧城市数智化建设者。一直以来,云粒智慧以数字化、智能化、集约化产品为核心&…...
学习MATLAB
今日,在大学慕课上找了一门关于MATLAB学习的网课,MATLAB对于我们这种自动化的学生应该是很重要的,之前也是在大三的寒假做自控的课程设计时候用到过,画一些奈奎斯特图,根轨迹图以及伯德图,但那之后也就没怎…...
React 18 对 state 进行保留和重置
参考文章 对 state 进行保留和重置 各个组件的 state 是各自独立的。根据组件在 UI 树中的位置,React 可以跟踪哪些 state 属于哪个组件。可以控制在重新渲染过程中何时对 state 进行保留和重置。 UI 树 浏览器使用许多树形结构来为 UI 建立模型。DOM 用于表示 …...
ROS2开发效率翻倍:我私藏的这10个VSCode插件,你可能漏装了
ROS2开发效率翻倍:我私藏的这10个VSCode插件,你可能漏装了 在ROS2开发中,选择合适的工具可以显著提升工作效率。VSCode作为一款轻量级但功能强大的代码编辑器,通过插件的扩展可以完美适配ROS2开发的各种需求。本文将分享10个可能被…...
GPT-SoVITS V3 API实战:用Python几行代码实现流式语音合成与格式转换
GPT-SoVITS V3 API实战:用Python几行代码实现流式语音合成与格式转换 语音合成技术正在经历一场革命性的变革。从早期机械感十足的TTS系统,到如今能够模仿人类情感起伏的AI语音,技术的进步让合成语音越来越自然。GPT-SoVITS V3作为这一领域的…...
FreeRTOS消息队列原理与实战应用指南
1. FreeRTOS消息队列核心概念解析消息队列作为FreeRTOS中最核心的通信机制之一,其设计理念源于操作系统中的生产者-消费者模型。在实际嵌入式开发中,我经常用它来解决任务间的数据传递问题。与裸机编程中的全局变量共享不同,消息队列通过内核…...
python statistics
# Python statistics模块:一个被低估的数据分析工具 很多人第一次接触Python数据分析时,往往会直奔pandas或numpy而去,这当然没错。但有时候,我们需要的只是简单的统计计算,比如算个平均数、中位数,或者看看…...
华为ENSP OSPF实验避坑指南:配置Stub区域、路由聚合与DR选举的常见错误
华为ENSP OSPF实验避坑指南:配置Stub区域、路由聚合与DR选举的常见错误 在华为ENSP模拟环境中进行OSPF多区域配置时,即使是经验丰富的网络工程师也难免会遇到各种"坑"。本文将从实际排错角度出发,深入剖析Stub区域配置、路由聚合计…...
SEO和SEM分别适合哪些具体的营销目标_如何平衡SEO和SEM的投入
SEO和SEM分别适合哪些具体的营销目标 在当今数字化营销的时代,SEO(搜索引擎优化)和SEM(搜索引擎营销)是两种非常重要的工具。它们各有其独特的优势和适用场景,理解它们的不同之处,有助于我们在…...
12. 欧姆定律计算器
1. 欧姆定律计算器 功能介绍: 本应用旨在帮助学生快速验证欧姆定律(I=U/RI=U/RI=U/R)的计算关系。用户可以通过滑块...
从原理到代码:手把手教你用Fmask实现卫星影像云检测(含Python示例)
从原理到实战:Fmask算法在遥感影像云检测中的深度应用指南 遥感影像处理领域,云层遮挡一直是影响数据质量的关键问题。想象一下,当你花费数周时间规划卫星拍摄任务,最终拿到的数据却被大片云层覆盖——这种挫败感每位遥感从业者都…...
Go语言开发的my2sql vs Python版binlog2sql:实测百GB级binlog解析性能对比
Go语言my2sql与Python版binlog2sql百GB级性能对决:技术选型终极指南 当数据库表里的数据被误删时,你的第一反应是什么?是立即联系备份恢复,还是尝试从binlog中找回丢失的记录?对于处理过生产环境数据事故的DBA来说&am…...
Qwen2.5-VL-7B-Instruct快速部署:纯本地无网络依赖,一键启动视觉助手
Qwen2.5-VL-7B-Instruct快速部署:纯本地无网络依赖,一键启动视觉助手 1. 工具概览与核心优势 1.1 什么是Qwen2.5-VL-7B-Instruct Qwen2.5-VL-7B-Instruct是阿里通义千问团队推出的多模态大模型,专为视觉-语言交互任务设计。这个70亿参数的…...
