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.mzph.cn/news/68143.shtml

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

相关文章

Vagrant命令

文章目录 1.介绍2.下载3. 配置3.1 配置环境变量3.2 在xshell中连接使用 4. 相关命令4.1 Box相关4.2 初始化环境4.4 虚拟机相关 1.介绍 Vagrant 是一个虚拟机管理工具 2.下载 https://www.vagrantup.com/ 3. 配置 3.1 配置环境变量 测试安装是否成功 3.2 在xshell中连接使…

Linux权限维持

1.隐藏踪迹 创建隐藏文件(ls不可见,ls -la可见): vim .shell.php修改时间戳(文件时间): touch -r 老文件 shell.elf文件锁定(赋予特殊权限,不允许更改): chattr i shell.elf无w、who、last等记录ssh: …

c#运算符重载

在C#中&#xff0c;您可以通过运算符重载来为自定义类型定义特定的操作行为。运算符重载允许您重新定义与特定运算符相关的操作&#xff0c;以便适应您自定义的类型。 以下是运算符重载的基本语法&#xff1a; public static <returnType> operator <operator> (…

模块化---common.js

入口文件&#xff1a;app.js // require是同步加载 // 客户端&#xff1a;common.js的模块化&#xff0c;需要browserify编译之后才能使用 // 服务端&#xff1a;运行时同步加载&#xff0c;无问题 let module1 require(./module1.js) let module2 require(./module2.js) co…

码云使用记录

码云使用记录 主要步骤 1、https://gitee.com 注册 2、下载Git 3、配置SSH 4、创建远程仓库 5、切到本地项目目录下将本地项目推到远程 前两步根据提示进行即可&#xff0c;下面从第三步开始讲解 3、配置SSH&#xff08;用于提交代码和更新代码&#xff09; https://gitee.…

CCF-CSP 25次 第三题【计算资源调度器】

计算机软件能力认证考试系统 这种题题面很长要迅速提取有效信息&#xff0c;可以根据后面的数据范围逐个的写&#xff0c;这样更容易理解题目&#xff0c;再就是选对数据结构很关键&#xff0c;再加上一点复杂的逻辑思维&#xff0c;基本可以满分 参考&#xff1a;AcWing 445…

机器人中的数值优化(七)——修正阻尼牛顿法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

CCKS2023:基于企业数仓和大语言模型构建面向场景的智能应用

8月24日-27日&#xff0c;第十七届全国知识图谱与语义计算大会&#xff08;CCKS 2023&#xff09;在沈阳召开。大会以“知识图谱赋能通用AI”为主题&#xff0c;探讨知识图谱对通用AI技术的支撑能力&#xff0c;探索知识图谱在跨平台、跨领域等AI任务中的作用和应用途径。 作为…

nc前端合计行

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

Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化...

全文链接&#xff1a;https://tecdat.cn/?p33550 时间序列是一系列按时间顺序排列的观测数据。数据序列可以是等间隔的&#xff0c;具有特定频率&#xff0c;也可以是不规则间隔的&#xff0c;比如电话通话记录&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。…

史上最全的计算机发展编年史!!!

今天分享给大家&#xff0c;以供参考。 1614年 苏格兰人约翰纳皮尔&#xff08;John Napier&#xff09;发表了一篇论文&#xff0c;其中提到他发明了一种可以计算四则运算和方根运算的精巧装置。 1623年 威廉契克卡德&#xff08;Wilhelm Schickard&#xff09;制作了一个通过…

Swift 周报 第三十六期

文章目录 前言新闻和社区消息称苹果公司和印度财政部官员磋商&#xff0c;扩大在印度的制造产能iPhone 15 Pro 机型新增泰坦灰iPhone 15 全系配 USB-C 苹果拒绝接口和安卓互通 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第三十…

mysql-1:认识mysql

文章目录 数据库概述什么是数据库什么是关系型数据库 MySQL的概述MySQL是什么MySQL发展历程 SQL的概述什么是SQLSQL发展的简要历史&#xff1a;SQL语言分类 数据库概述 什么是数据库 数据库就是[存储数据的仓库]&#xff0c;其本质是一个[文件系统]&#xff0c;数据按照特定的…

生成式人工智能能否使数字孪生在能源和公用事业行业成为现实?

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 克服障碍&#xff0c;优化数字孪生优势 要实现数字孪生的优势&#xff0c;您需要数据和逻辑集成层以及基于角色的演示。如图 1 所示&#xff0c;在任何资产密集型行业&#xff08;如能源和公用事业&#xff09;中&…

【数据挖掘】学习笔记

文章目录 < 数据预处理 > 聚集&#xff1a;多个样本或特征进行合并&#xff08;减少样本规模、转换标度、更稳定&#xff09;抽样&#xff1a;抽取一部分样本降维&#xff1a;在地位空间中表示样本&#xff08;PCA、SVD&#xff09;特征选择&#xff1a;选取重要特征&am…

【Java】设计模式之单例模式与工厂模式

1、设计模式概念及分类 简单来说设计模式是被广大程序员们总结并认可的编码套路&#xff0c;其中最常用的莫过于单例模式与工厂模式&#xff0c;而单例模式也有更加细的分类&#xff0c;一起来学习一下这些模式的用法和特点吧。 2、单例模式 一个类只能被实例化出来一个对象…

海外问卷调查项目能做吗?

大家好&#xff0c;我是橙河。我做海外问卷调查项目已经2年了&#xff0c;有自己的公司和团队&#xff0c;这篇文章说一说&#xff0c;海外问卷调查项目能做吗&#xff1f; 海外问卷调查是一个比较老牌的互联网项目&#xff0c;在国内已经存在十几年的时间了&#xff0c;一直都…

cocosCreator2.4.x 打包 ios ,xcode问题记录

Q&#xff1a;Uncaught ReferenceError: CC_PHYSICS_BUILTIN is not defined A&#xff1a;先clean build folder....&#xff0c;然后重新build Q&#xff1a;xcode 使用模拟器预览 报错 In /Library/Developer/Xcode/DerivedData/hello_world-djnvsdcqyfoqvdepilidvunfunto…

vue2 封装通用表格数据筛选的重置摁钮

放弃冗余代码吧&#xff0c;封装个混入 封装逻辑 // 重置表格筛选参数 export const queryReset {methods: {queryReset(form, method "getData", fn) {if (!this[form]) {form "queryForm";}this.$data[form] this.$options.data()[form];this[form…

UG NX二次开发(C#)-创建点到曲线(边)的切线

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、采用C#封装C++方法2.1 加入引用2.2 创建封装类2.3 在代码中调用封装的函数3、采用NXOpen.net实现3.1对于边3.2 测试效果3.3 单个样条曲线3.4 测试效果1、前言 在UG NX二次开发时,对于求…