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语句中使用,比如SELECT,INSERT,UPDATE,DELETE等。它们可以作为表达式的一部分,嵌入到更复杂的SQL查询中。】
修改:
ALTER FUNCTION getNthHighestSalary....
删除:
DROP FUNCTION getNthHighestSalary...