mysql函数、查询、排序场景使用

embedded/2024/11/28 5:31:36/

1. 查询第二高薪资:

知识点:
**IFNULL(XX,null)**函数:如不不存在则展示null;
order by XX DESC :降序;
distinct :去重;
limit XX offset YY: 每页展示XX条,从第YY+1条开始显示;
AS :重命名列表
例子:

select  IFNULL((select distinct salary from Employee  order by salary DESC limit 1 offset 1) ,null) AS secondnum ;

2. 两个表组合查询:内连接、外连接、交叉连接

知识点:
  ①A inner join B on :内连接。取交集
   ②A left join B on:外连接。取A全部,B没有对应的值,则为null
   ③A right join B on:外连接。取B全部,A没有对应的值,则为null
   ④A full outer join B on::外连接。取并集,彼此没有对应的值为null
   ④A cross join B ::交叉连接。AB进行笛卡尔积运算,结果表的行数等于两表行数之积
例子:

select FirstName, LastName, City, State
from Person left join Address
on Person.PersonId = Address.PersonId ;SELECT *
FROM table1
CROSS JOIN table2
WHERE table1.column1 = table2.column2;    //满足条件的行进行笛卡尔积组合
;

3. SQL 查询语句,查询中子句的执行顺序通常如下:

**FROM 子句**:指定从中检索数据的表。
**WHERE 子句**:根据指定的条件筛选行。
**GROUP BY 子句**:根据指定的列或表达式对行进行分组。
**HAVING 子句**:根据条件筛选分组的行。
**SELECT 子句**:选择将在结果集中返回的列或表达式。
**ORDER BY 子句**:根据指定的列或表达式对结果集进行排序。
**LIMIT/OFFSET 子句**:限制结果集中返回的行数。

mysql_FUNCTION_45">4. mysql 存储函数FUNCTION(),会返回一个值给调用者。

创建函数语法:

CREATE FUNCTION function_name (parameter_list)  
RETURNS return_datatype  
[characteristic ...]  
BEGIN  -- 函数体,包含一系列的SQL语句,比如变量声明、SQL语句、流程控制语句RETURN value;  
END;

解释:

        - function_name:存储函数的名称。- parameter_list:函数的参数列表,由参数名和参数类型组成,参数之间用逗号分隔。参数是可选的,如果函数不需要参数,可以省略该部分。- return_datatype:函数返回值的类型。- characteristic:函数的特性,如DETERMINISTIC(确定性的,相同的输入总是返回相同的结果)、NO SQL(不包含SQL语句)、READS SQL DATA(包含读取数据的SQL语句)等。这些特性是可选的,用于指定函数的性质,帮助数据库优化执行计划。- function_body:函数体,包含了一系列的SQL语句,用于实现函数的逻辑。函数体必须包含至少一个RETURN语句,用于返回函数的值。

示例:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT; SET M = N-1; RETURN (SELECT DISTINCT salaryFROM EmployeeORDER BY salary DESCLIMIT M, 1);
END

调用、修改、删除存储函数:

调用:
select getNthHighestSalary(3)  【存储函数可以在各种SQL语句中使用,比如SELECTINSERTUPDATEDELETE等。它们可以作为表达式的一部分,嵌入到更复杂的SQL查询中。】
修改:
ALTER FUNCTION getNthHighestSalary....
删除:
DROP FUNCTION getNthHighestSalary...

mysql_PROCEDURE_92">5. mysql 存储过程PROCEDURE,与存储函数的区别是,存储过程不会返回值


http://www.ppmy.cn/embedded/141105.html

相关文章

【RISC-V CPU debug 专栏 3 -- Debugging RISC-V Cores】

文章目录 RISC-V 调试规范开源与多样性挑战调试规范的重要性外部调试支持的主要组件调试功能Lauterbach 的贡献RISC-V 调试规范 调试 RISC-V 内核涉及许多独特的挑战,这是由 RISC-V 的开源特性和多样化的生态系统所决定的。为了避免专有调试接口的泛滥,RISC-V 基金会内的工作…

Apache SeaTunnel 自定义连接器适配华为大数据平台集成组件ClickHouse

技术背景 Apache SeaTunnel 作为一款开源的数据集成框架,支持多种数源的集成。根据我司的业务场景,需要将每日的流水数据从MySQL按日期归档到ClickHouse中。 用户可以通过ClickHouse实现在线分析处理查询(OLAP)和分析数据报告生…

什么是 C++ 中的函数对象?函数对象与普通函数有什么区别?如何定义和使用函数对象?

1) 什么是 C 中的函数对象?它有什么特点? 在 C 中,函数对象(也称为仿函数或 functor)是一种重载了 operator() 的对象。这意味着这些对象可以像函数一样被调用。函数对象通常用于需要传递行为(即代码&…

数据结构------树(Java语言描述)

一、树的基本概念 树是一种非线性的数据结构,它由节点组成,有一个特定的节点称为根节点,其余节点可以分为多个互不相交的子树。 树中的节点具有以下特点: 1.每个节点有零个或多个子节点。 2.除了根节点外,每个节点…

SQL99版链接查询语法

连接查询按照功能分类 内连接 等值连接 非等值连接 自连接 //92SQL 外连接: //红色的连接查询类型92版SQL 左外连接 右外连接 全外连接 交叉连接 #剩下连接类型的SQL语法就不是前面同一个发布版本了 99版SQL语法格式区别于92版的是连接不在是用“”了&am…

平安科技Java面试题及参考答案

多个线程 a++,单个线程不管别的线程怎么改变 a 的值,只管自己的 a 的值,但是只有一个对象 在 Java 中,当多个线程对同一个对象的共享变量 a 进行 a++ 操作时,如果不进行适当的同步处理,就会出现数据不一致的问题。因为 a++ 操作并非原子操作,它实际上包含了读取 a 的值、…

爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具

第三节:使用Postman和浏览器开发者工具 在网络爬虫开发过程中,我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具(特别是Network面板和Console面板)是两种最常用的工具,能够帮助开发者有效地捕…

【go】查询某个依赖是否存在于这个代理

1. 使用 go list 命令 go list -m -versions github.com/gin-gonic/gin 如果模块存在,该命令会返回模块及其可用版本: github.com/gin-gonic/gin v1.7.0 v1.7.1 v1.8.0如果模块不存在或无法找到,会返回错误。 2. 使用 curl 查询代理服务 …