当前位置: 首页 > news >正文

Mysql内置函数、复合查询和内外连笔记

目录

一、mysql内置函数

1.1.日期函数

1.2.字符串函数

1.3.数学函数

1.4.其他函数

二、复合查询

2.2 自连接

2.3 子查询

2.3.1单行自查询

2.3.2 多行子查询

 2.3.3 多列子查询

2.3.4在from子句中使用子查询

2.3.5合并查询

三、表的内连和外连

3.1内连接

3.2外连接

3.2.1 左外连接

3.2.2右外连接

一、mysql内置函数

1.1.日期函数

 获得时间:

🖊获得年月日:select current_date();

🖊获得时分秒:select current_time();

🖊获得时间戳:select current_timestamp();

🖊在日期的基础上加日期:

🖊在日期的基础上减去时间:

 

🖊计算两个日期之间相差多少天:

 

案例:

创建一个留言表:

插入数据:

显示所有留言信息,发布日期只显示日期,不用显示时间:

 

查询在五分钟内发布的贴子:

 🖊:select *from msg where date_add(sendtime,interval 5 minute)>now();

或🖊:select *from msg where date_sub(now(),interval 5 minute)<sendtime;

理解:

1.2.字符串函数

 案例:

sql获取:码云

案例:

获取emp表的ename列的字符集:

要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”

求学生表中学生姓名占用的字节数:

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节(与字符集编码有关)。

将emp表中所有名字中有S的替换为‘北京’

截取emp表中ename字段的第二个到第三个字符

 

以首字母小写的方式显示所有员工的姓名:

select concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;

1.3.数学函数

绝对值:select abs();

向上取整:select ceiling();

向下取整: select floor();

理解:

向上取整简单来说,就是向大的整数方向取整,舍弃小数部分。比如23.04向上取整就是24,-5.9向上取整就是-5.

同理,向下取整是朝着小的整数取整,舍弃小数部分。3.7向下取整是3.-1.3向下取整是-2.

向0取整,是朝0靠拢,5.6向零取整是5,-6.6向0取整是-6

保留n位小数位数:select format(小数,n);

产生随机数:select rand();

mysql中,产生随机数,产生的是0-1的小数。

如果要得到0-100的随机数:

1.4.其他函数

🖊user()查询当前用户

select user();

🖊md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串

通常用于加密。

🖊password()函数,mysql数据库使用该函数对用户进行加密

🖊ifnull(val1,val2)如果val1为null,返回val2,否则返回val1的值。

二、复合查询

2.1.多表查询

实际开发中往往数据来自不同的表,所以需要多表查询。在此借用一个简单的公司管理系统,还是从码云下载。有三张表emp,dept,salgrade来演示如何进行多表查询。

案例:

🖊显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自emp表和dept表,因此要联合查询。

这种结果称为笛卡尔积。

🖊显示部门号为10的部门名,员工名和工资

🖊显示各个员工的姓名,工资,及工资级别

2.2 自连接

自连接是指在同一张表连接查询

案例:员工FORD的上级领导的编号和姓名(mgr是员工领导的编号)

🖊使用的子查询:

🖊使用多表查询(自查询)

2.3 子查询

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

2.3.1单行自查询

返回一行记录的子查询

🖊显示SMITH同一部门的员工

2.3.2 多行子查询

 返回多行记录的子查询

🖊in关键字;

查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含自己的。

🖊all关键字;

显示工资比部门30的所有员工的工资高的员工的姓名,工资和部门号

第一种方式,当然可以找出部门30最高的工资,只要比这个工资高即可:

比部门30所有的员工工资高,使用all: 

🖊any关键字:显示工资比部门30的任意一个员工工资高的员工的姓名,工资和部门号

 2.3.3 多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。

案例: 查询和SMITH的部门和岗位完全相同的所有雇员,不包含SMITH本人。

2.3.4在from子句中使用子查询

子查询语句出现在from子句中。子查询当作一个临时表使用。

🖊显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资

🖊查找每个部门工资最高的人的姓名,工资,部门,最高工资。

🖊显示每个部门的信息(部门号,编号,地址)和人员数量

2.3.5合并查询

🖊union

union操作符用于取得两个结果集的并集,当使用该操作符时,会自动去掉结果集中的重复行。

案例:将工资大于2500或职位是MANAGER的人找出来

去掉了重复数据:

🖊union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

案例:将工资大于25000或职位是MANAGER的人找出来

三、表的内连和外连

3.1内连接

内连接实际上就是利用where子句对两种表形成的笛卡尔积进行筛选,前面讲述的都是内连接,实际开发过程中使用最多的连接查询。

语法:

        select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

案例:显示SMITH的名字和部门名称:

之前的写法:

标准的内连接写法:

3.2外连接

外连接分为左外连接和右外连接

3.2.1 左外连接

如果联合查询时左侧的表完全显示我们就说是左外连接。

语法: select 字段名 from 表1 left join 表2 on 连接条件

案例:

建两张表:

🖊查询所有学生的成绩,如果这个学生没有成绩,也要讲学生的个人信息显示出来

--当左边表和右边表没有匹配时,也会显示左边表的数据

3.2.2右外连接

语法:select 字段 from 表1 right join 表2 on 连接条件

案例:对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来。

相关文章:

Mysql内置函数、复合查询和内外连笔记

目录 一、mysql内置函数 1.1.日期函数 1.2.字符串函数 1.3.数学函数 1.4.其他函数 二、复合查询 2.2 自连接 2.3 子查询 2.3.1单行自查询 2.3.2 多行子查询 2.3.3 多列子查询 2.3.4在from子句中使用子查询 2.3.5合并查询 三、表的内连和外连 3.1内连接 3.2外连接…...

【VUE·疑难问题】定义 table 中每行的高度(使用 element-UI)

一、如何定义 table 中每一行的 height &#xff1f; 1.table例子 <!-- 二、table --><div style"overflow: hidden;display: block;height: 68vh;width: 100%;"><el-table stripe show-header style"width: 100%" :data"tableData&q…...

【重拾C语言】四、循环程序设计(后判断条件循环、先判断条件循环、多重循环;典例:计算平均成绩、打印素数、百钱百鸡问题)

目录 前言 四、循环程序设计 4.1 计算平均成绩——循环程序 4.1.1 后判断条件的循环 a. 语法 b. 典例 4.1.2 先判断条件的循环 a. 语法 b. 典例 4.1.3 for语句 a. 语法 b. 典例 4.2 计算全班每人平均成绩—多重循环 4.2.1 打印100以内素数 4.2.2 百钱百…...

Linux 安装 Gitlab

1、到官网下载Gitlab安装包 (如果是Centos&#xff0c;到el目录下载)。下载GitLab 2、安装依赖软件 sudo yum install -y policycoreutils-python3、安装gitlab sudo rpm -i gitlab-jh-16.3.4-jh.0.el7.x86_64.rpm 4、修改 gitlab.rb sudo vi /etc/gitlab/gitlab.rb 5、g…...

stm32-SPI协议

SPI协议详解&#xff08;图文并茂超详细&#xff09; SPI通讯协议 于是我们想有没有更好一点的串行通讯方式&#xff1b;相比较于UART&#xff0c;SPI的工作方式略有不同。 SPI是一个同步的数据总线&#xff0c;也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和…...

想要精通算法和SQL的成长之路 - 并查集的运用和案例(省份数量)

想要精通算法和SQL的成长之路 - 并查集的运用 前言一. 并查集的使用和模板1.1 初始化1.2 find 查找函数1.3 union 合并集合1.4 connected 判断相连性1.5 完整代码 二. 运用案例 - 省份数量 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 并查集的使用和模板 先说一下并查集…...

解决内网拉取企微会话存档代理问题的一种办法

问题&#xff1a;客户的服务都是内网的&#xff0c;不能直接访问外网&#xff1b;访问外网的话需要走kong网关才能出去。 会话存档官网说可以使用socket5、http方式拉取会话存档&#xff1b;我这边尝试了直接使用kong网关的ip和端口配置进去&#xff0c;是访问不了的 我后面就…...

二十二,加上各种贴图

使用pbr的各种贴图&#xff0c;albedo,金属度&#xff0c;ao,法线&#xff0c;粗糙度&#xff0c;可以更好的控制各个片元 1&#xff0c;先加上纹理坐标 texCoords->push_back(osg::Vec2(xSegment, ySegment)); geom->setVertexAttribArray(3, texCoords, osg::Array::BI…...

新版校园跑腿独立版小程序源码 多校版本,多模块,适合跑腿,外卖,表白,二手,快递等校园服务

最新校园跑腿小程序源码 多校版本&#xff0c;多模块&#xff0c;适合跑腿&#xff0c;外卖&#xff0c;表白&#xff0c;二手&#xff0c;快递等校园服务 此版本为独立版本&#xff0c;不需要** 直接放入就可以 需要自己准备好后台的服务器&#xff0c;已认证的小程序&#xf…...

SpringBoot banner 样式 自动生成

目录 SpringBoot banner 样式 自动生成 图案网站&#xff1a; 1.第一步创建banner.txt文件 2.访问网站Ascii艺术字实现个性化Spring Boot启动banner图案&#xff0c;轻松修改更换banner.txt文件内容&#xff0c;收集了丰富的banner艺术字和图&#xff0c;并且支持中文banner下…...

回收站里面删除的照片如何恢复?

现在拍照已经成为人们生活中的一种方式&#xff0c;照片为我们保留了许多珍贵而美好的回忆。大家通常会把重要的照片保存在硬盘里&#xff0c;但当不小心把照片移入回收站并彻底删除时&#xff0c;情况就有点糟糕了。那么&#xff0c;回收站里删除的照片还有办法恢复吗&#xf…...

Qt model/view 理解 2

这是我对 Qt 的 model/view 内容理解的第二篇 blog&#xff0c;在第一篇文章中&#xff0c;介绍 QTableView 和 QAbstractTableModel&#xff0c;实现显示了对数据源的显示&#xff0c;但是显示的格式和修改的模式都是按照 View 控件的自显示方式。在此&#xff0c;使用 Qt 自带…...

【LeetCode热题100】--114.二叉树展开为链表

114.二叉树展开为链表 方法一&#xff1a;对二叉树进行先序遍历&#xff0c;得到各个节点被访问到的顺序&#xff0c;利用数组存储下来&#xff0c;然后在先序遍历之后更新每个节点的左右节点的信息&#xff0c;将二叉树展开为链表 /*** Definition for a binary tree node.* …...

Java | Maven(知识点查询)

文章目录 Maven知识速查1. Maven概述2. Maven的作用3. Maven的下载4. Maven的环境配置5. Maven 的基础组成5.1 Maven仓库5.1.1 本地仓库配置&#xff1a;5.1.2 中央仓库配置&#xff1a;5.1.3 镜像仓库配置 5.2 Maven坐标 6. Maven项目6.1 手工创建Maven项目6.2 自动构建项目 7…...

Vmware 静态网络配置

概述 仅主机模式&#xff08;VMware1&#xff09;&#xff1a;使用host-only的方式是不能和外界通信的&#xff0c;只能够和本机的物理网卡通信 桥接&#xff08;VMnet0&#xff09;&#xff1a;使用桥接的方式使得自己的虚拟机和自己的真实机网卡在同一个网段 NAT&#xff0…...

【数据结构--八大排序】之希尔排序

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

Linux中生成so库的文件引用另一个so库问题的解决

文章目录 一、问题介绍二、问题解决 一、问题介绍 由于项目需求&#xff0c;需要将一个“编译时引用了另一个动态链接库”的文件&#xff08;名为main.c&#xff09;&#xff0c;再编译成一个动态链接库。 简要说明一下&#xff0c;即原本的项目代码里&#xff0c;包含main.c…...

EDI是连接原始电子商务和现代电子商务的纽带

EDI是连接原始电子商务和现代电子商务的纽带。 EDI&#xff08;Electronic Data Interchange&#xff0c;电子数据交换&#xff09;是一种电子通信技术&#xff0c;用于在不同组织之间以结构化和标准化的方式交换业务文档和数据。EDI使企业能够更有效地与供应商、客户和合作伙…...

星宿UI2.4资源付费变现小程序源码 支持流量主

第一个小程序为星宿小程序 目前是最新版2.0 搭建星宿需要&#xff1a;备用域名 服务器 微信小程序账号 功能&#xff1a;文章展示 文章分类 资源链接下载 轮播图 直接下载附件功能 很多 很适合做资源类分享 源码下载&#xff1a;https://download.csdn.net/download/m0_6604…...

代码随想录训练营二刷第四十六天 | 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

代码随想录训练营二刷第四十六天 | 518. 零钱兑换 II 377. 组合总和 Ⅳ 一、518. 零钱兑换 II 题目链接&#xff1a;https://leetcode.cn/problems/coin-change-ii/ 思路&#xff1a;完全背包求组合数&#xff0c;递推公式dp[j]dp[j-nums[i]]。 求组合数&#xff0c;物品在外…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...