简介
本系列(MySQL学习笔记)是我基于B站上SQL播放量第一的MySQL 基础+高级篇- 数据库 -sql -尚硅谷视频所做的笔记,方便大家学习和掌握MySQL。
说明
1.这个系列基本包含了视频中老师讲课的所有内容,包括知识点、案例、部分测试题。
2.所需的配套资料(来自B站评论区)
@黎曼的猜想:
配套资料下载–>公众号公众号 DragonWell 回复:mysql 注意:是公众号!!是公众号!!是公众号,点那个 搜一搜 搜索!!!
不是私人号,是公众号!!! (可以直接在 搜一搜 搜索 dragonwell) 名称是:DragonWell公众号
3.SQLyog的安装(来自B站评论区)
@江左萌粽猪 链接:https://pan.baidu.com/s/18PDjbqEeDSAjQM0VQye6og 提取码:qjuz
目录
MySQL学习笔记1:数据查询语言(DQL语言)select基本用法
MySQL学习笔记2:where 条件查询
MySQL学习笔记3:order by 排序查询
MySQL学习笔记4:常见函数(一) 单行函数
MySQL学习笔记5:常见函数(二) 分组函数
MySQL学习笔记6:group by 分组查询
MySQL学习笔记7:join 连接查询(SQL 92标准)
MySQL学习笔记8:join 连接查询(SQL 99标准)
MySQL学习笔记9:子查询(内查询)
MySQL学习笔记10:union 联合查询
MySQL学习笔记11:limit 分页查询
MySQL学习笔记12:数据操纵语言(DML语言)insert update delete
MySQL学习笔记13:数据定义语言(DDL语言)create alter drop
MySQL学习笔记14:常见数据类型
MySQL学习笔记15:常见约束
MySQL学习笔记16:事务控制语言(TCL语言)
MySQL学习笔记17:视图
MySQL学习笔记18:存储过程
MySQL学习笔记19:函数
MySQL学习笔记20:流程控制结构
函数
含义:预先编译好的SQL语句的集合,理解成批处理语句
提高代码的重用性
简化操作
减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
函数和存储过程区别 | |
---|---|
存储过程 | 可以有0个返回,也可以有多个返回 适合批量的插入、更新(增删改) |
函数 | 有且仅有一个返回,适合处理数据后返回一个结果 |
一.创建语法
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
END
注意:
1.参数列表 包含两部分
参数名 参数类型
2.函数体:肯定会有return语句,如果没有会报错
如果return语句没有放到函数体最后也不报错,但不建议
return 值;
3.函数体中仅有一句话,可以省略begin end
4.使用delimiter语句设置结束标记
DELIMITER $
SELECT * FROM employees;
SELECT * FROM departments;
二.调用语法
SELECT 函数名(参数列表) $
以下部分在DOS命令行执行
1.无参有返回
返回公司的员工个数
USE myemployees $
CREATE FUNCTION f1() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;
SELECT COUNT(*) INTO c
FROM employees ;
RETURN c;
END $
# 调用
SELECT f1() INTO @result $
SELECT @result $
2.有参有返回
根据员工名返回他们的工资
CREATE FUNCTION f2(ename VARCHAR(30)) RETURNS DOUBLE
BEGIN
DECLARE sal DOUBLE DEFAULT 0;
SELECT salary INTO sal
FROM employees
WHERE last_name = ename;
RETURN sal;
END $
# 调用
SELECT f2('Kochhar') INTO @salary $
SELECT @salary $
根据部门名 返回该部门的平均工资
CREATE FUNCTION f3(dname VARCHAR(20)) RETURNS DOUBLE
BEGIN
DECLARE avg_sal DOUBLE DEFAULT 0;
SELECT AVG(salary) INTO avg_sal
FROM employees AS e
INNER JOIN departments AS d
ON d.department_id = e.`department_id`
WHERE d.department_name = dname;
RETURN avg_sal;
END $
SET @department_name = 'IT' $
SELECT f3(@department_name) INTO @avg_salary $
SELECT @avg_salary $ #5760
三.查看函数
SHOW CREATE FUNCTION f3;
在mysql——表——proc——打开表可以看到创建的存储过程和函数
四.删除函数
DROP FUNCTION f2;
案例
创建函数,实现传入两个float,返回二者之和
CREATE FUNCTION addtwo(x1 FLOAT,x2 FLOAT) RETURNS FLOAT
BEGIN
DECLARE result FLOAT;
SELECT x1+x2 INTO result;
RETURN result;
END $
SET @x1 = 14.57,@x2 = -3.888 $
SELECT addtwo(@x1,@x2) INTO @hoi $
SELECT @hoi $