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()当前日期和时间

image-20230902055611224

字符串函数

函数描述
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(薪资信息)

多表笛卡尔积

如果想要查询的结果需要多张表结合才能搜索出,则可以直接多表结合去查询。

需要注意,如果查询的列中有大于一张表拥有同名的列信息则需要指明表

image-20230902192332359

可以看到如图的写法就会出现很多重复的员工信息,这是因为直接结合的话会把所有表的数据都结合进去,这样并不符合实际场景。

因此可以加上筛选条件,因为两张表是具有外键关联的,所以可以使用外键的列作为结合的条件

image-20230902192616487

自连接

并不需要有多张真实存在的物理属性的表才可以结合,因为单张表操作得出的结果也可以看作是一张表,在MySQL中一切皆为表结构,所以单张表得出的虚拟表也可以和其本身去结合

不过需要注意如果使用自连接需要对表进行不同的别名,这样系统才能分辨出区别

例如:找出名为SMITH的员工的上级领导的编号和姓名(mgr是员工领导的编号–empno)

image-20230902193239466

在where中使用子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

例如:显示SMITH同一部门的员工

image-20230902193358516

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

image-20230902193744471

其中关键字in的作用是,查询集合是否包含了该条件

例如:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

image-20230902194108556

其中关键字all表示:集合中的所有数据

例如:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号

image-20230902194242129

其中关键字any表示:集合中的任意一个数据

多列子查询

这是只使用一列作为子查询的条件,也可以同时使用多列作为查询条件

多列子查询是指查询返回多个列数据的子查询语句

例如:查询和SMITH的部门和岗位完全相同的所有雇员

image-20230902194449792

在from中使用子查询

子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用

例如:**查找每个部门工资最高的人的姓名、工资、部门、最高工资 **

image-20230902194848868

内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选

select 字段 from1 inner join2 on 连接条件 and 其他条件;

image-20230903102545320

外连接

左外连接

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

image-20230903102802543

右外连接

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

image-20230903102902319

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/120913.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS—UI开发性能提升的推荐方法

注:本文转载自HarmonyOS官网文档 开发者若使用低性能的代码实现功能场景可能不会影响应用的正常运行,但却会对应用的性能造成负面影响。本章节列举出了一些可提升性能的场景供开发者参考,以避免应用实现上带来的性能劣化。 使用数据懒加载 开…

【OpenCV入门】第五部分——图像运算

文章结构 掩模图像的加法运算图像的位运算按位与运算按位或运算按位取反运算按位异或运算图像位运算的运用 合并图像加权和覆盖 掩模 当计算机处理图像时,有些内容需要处理,有些内容不需要处理。能够覆盖原始图像,仅暴露原始图像“感兴趣区域…

基本介绍——数据挖掘

1.数据挖掘的定义 数据挖掘是采用数学的、统计的、人工智能和神经网络等领域的科学方法,如记忆推理、聚类分析、关联分析、决策树、神经网络、基因算法等技术,从大量数据中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并…

串的定义,实现和模式匹配

串的相关概念及操作 串的定义 串:是由零个或多个字符组成的有限序列。 空串:不包含任何字符的串称为空串。 子串:串中任意个连续的字符组成的子序列称为该串的子串。 空格串:由一个或多个空格组成的串称为空格串(空格…

冯诺依曼体系结构/什么是OS?

一、体系结构图 示意图 控制器可以控制其它4个硬件,四个硬件直接可以进行数据传输。 5大硬件 但是这些个体需要用“线”连接。 为什么要有存储器? 如果没有,实际速度则为输入、输出设备的速度。 加上后,变为内存的速度。&#…

SquirrelMail实现Web方式收发邮件_xionglling的博客-CSDN博客

SquirrelMail实现Web方式收发邮件_xionglling的博客-CSDN博客小松鼠实现Web邮件服务SquirrelMail 是一个用PHP开发的Web邮件系统。它内置纯PHP支持的IMAP和SMTP协议,所有页面都遵循 HTML 4.0标准(没有使用任何 JavaScript 代码),以便最大限度兼容各种多浏…

【程序员必知必会3】你还不懂ClickHouse和Hive的区别?!

ClickHouse和Hive究竟哪些区别 ClickHouse和Hive都是用于大数据处理和分析的分布式存储和计算系统,但它们之间存在一些区别: 架构:ClickHouse采用列式存储和向量化执行引擎,可以实现亚秒级别的数据查询。而Hive采用基于Hadoop的数…

亚马逊云科技通过生成式AI,帮助清华RIOS加速计算和分析的处理效率

近日,硬件创建平台Efabless宣布了其第一届“生成式AI开源芯片设计挑战赛”(AI Generated Open-Source Silicon Design Challenge)的评选结果。来自清华大学的RISC-V国际开源实验室(RIOS Lab)团队基于亚马逊云科技云上科…

JLink和ST-Link接口引脚介绍

STM32F1系列,STM8S系列,PY32F003系列都用过好久了,但是对JLink和ST-Link下载器认识,还是很肤浅的。有时候,需要自己接线,却不知道引脚定义,特整理如下: 1、ST-Link ST-Link适合对象…

解决IDEA中java的system.properties乱码问题

在拉了别人的代码到本地后发现system.properties中中文注释都变成了乱码,故记录下解决步骤,供参考,我的系统是mac系统 1、在IDEA中打开设置,IDEA--->Preferences 2、点击Editor-->File Encodings 3、图中三处选择UTF-8&…

智能配电室运维云平台

智能配电室运维云平台依托电易云-智慧电力物联网,是通过物联网技术实现配电设备智能化管理和运维的云服务系统。该平台可以实时监测配电设备的运行状态、能耗情况、故障报警等信息,并通过云计算、大数据等技术进行分析和处理,提供精准的数据支…

传输层—UDP原理详解

目录 前言 1.netstat 2.pidof 3.UDP协议格式 4.UDP的特点 5.面向数据报 6.UDP的缓冲区 7.UDP使用注意事项 8.基于UDP的应用层协议 总结 前言 在之前的文章中为大家介绍了关于网络协议栈第一层就是应用层,包含套接字的使用,在应用层编码实现服务…

nc前端合计行

nc前端合计行 1.无表体和单表体的合计行加法 只要卡片下 如果是只有表头要合计行就只留ShowTotalLine;如果是只有表体要合计行就只留ShowTotalLineTabcodes 2.多表体的合计行加法 表头卡片下和列表下都要 3.档案的合计行加法 重写一下列表模板

cin、cin.getline()、getline()的用法【C++】

一、cin>> 用法1&#xff1a;输入一个数字或字符 #include <iostream> using namespace std; int main () {int a,b;cin>>a>>b;cout<<ab<<endl;return 0; } 用法2&#xff1a;接收一个字符串&#xff0c;遇“空格”、“TAB”、“回车”…

select多选回显问题 (取巧~)

要实现的效果&#xff1a; 实际上select选择框&#xff0c;我想要的是数组对象&#xff0c;但是后端返回来的是个字符串。 以下是解决方法&#xff1a; 以上是一种简单的解决方法~ 也可以自己处理数据或者让后端直接改成想要的格式。

无涯教程-JavaScript - ISOWEEKNUM函数

描述 ISOWEEKNUM函数返回给定日期的年份的ISO周编号。 语法 ISOWEEKNUM (date)争论 Argument描述Required/OptionalDateDate is the date-time code used by Excel for date and time calculation.Required Notes Microsoft Excel将日期存储为连续数字,因此可以在计算中使…

【会议征稿】第五届土木工程、环境资源与能源材料国际学术会议(CCESEM 2023)

第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09; 第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09;&#xff0c;定于2023年10月27日至29日在厦门举行。会议主要围绕“土木工程”、“环境资源”、“能…

15种下载文件的方法文件下载方法汇总超大文件下载

15种下载文件的方法&文件下载方法汇总&超大文件下载 15种下载文件的方法Pentesters经常将文件上传到受感染的盒子以帮助进行权限提升&#xff0c;或者保持在计算机上的存在。本博客将介绍将文件从您的计算机移动到受感染系统的15种不同方法。对于那些在盒子上存在且需要…

Linux xargs命令继续学习

之前学习过Linux xargs&#xff0c;对此非常的不熟悉&#xff0c;下面继续学习一下&#xff1b; xargs 可以将管道或标准输入&#xff08;stdin&#xff09;数据转换成命令行参数&#xff0c;也能够从文件的输出中读取数据&#xff1b; xargs也可以给命令传递参数&#xff1b;…

redis核心数据结构

redis下载地址&#xff1a;Download | Redis linux进入redis目录首先使用make命令进行c的编译&#xff0c;修改redis.conf文件&#xff1a; daemonize yes #后台启动 protected-mode no #关闭保护模式&#xff0c;开启的 # 需要注释掉bind #bind 127.0.0.1&#xff08;bind…