基于Mysql的编程语言(实验六、七)
本文参考1:MYSQL对sql的拓展
本文参考2:MySQL编程基础
本文参考3:MySql数据库编程
(侵删)
一.变量的定义
1.用户变量
set @变量名=表达式;
说明:无提前进行定义,直接用赋值语句赋值,就算是定义了,也可以用select赋值语句赋值
2.系统变量
set @@系统变量名(=值)
3.局部变量声明
declare 变量名 数据类型;
说明:必须指明类型,生命周期:定义局部变量的小范围
二.语句
1.赋值语句
(1)set语句
set 变量 = 表达式
(2)select语句
select 表达式 into 变量;//不产生结果集
select 变量 := 表达式;//产生结果集
(3)同时给多个变量赋值,用逗号隔开。
set 变量1 = 表达式1,变量2 = 表达式2,……
说明:当你想显示结果集的时候,直接用select+变量名即可在输出区显示出结果集
eg:


2.重置命令结束标记
delimiter 结束标记;
说明:由于MySQL客户机的默认结束标记和语句的结束标记相同,都是分号,所以在写语句块的时候,为避免语句块被;拆开,应在语句块前重设客户机结束标志,然后在语句块结束后改为原样
DELIMITER $$ //将客户机结束标记改为$$
BEGIN
要执行的功能代码;
END;
$$
DELIMITER ; //将客户机结束标记改回;
3.begin-end语句块:将功能封装到存储过程、函数、触发器、事件等存储程序内部。
4.条件控制语句
(1)if语句
IF 条件 THEN 语句块;
ELSE IF 条件 THEN 语句块;
……
ELSE 语句块;
END IF;
(2)case语句
CASE 表达式
WHEN 值1 THEN 语句块;
WHEN 值2 THEN 语句块;
……
ELSE 语句块;
END CASE;
5.循环语句
(1)while-do语句
WHILE 条件表达式 DO //继续循环的条件
循环体;
END WHILE;
(2)repete-until语句
REPEAT
循环体;
UNTIL 条件表达式 //跳出循环的条件
END REPEAT;
(3)loop语句
循环标签:LOOP
循环体;
IF 条件表达式 THEN LEAVE 循环标签; //跳出循环的条件
END IF;
END LOOP;
三、存储过程
1.介绍
存储过程是一种命名PL/SQL块,是为了完成某种特定功能的PL/SQL的语句集。存储过程有名字,编译后长期存储在数据库中,通过存储过程的名字和参数调用它,存储过程可以多次反复执行,效率高。
2.创建存储过程
(1)声明分割符
一定注意上述分割符的使用,MySQL默认以“;”为分割符,如果没有进行分割符的声明,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以事先要用delimiter关键字声明当前段的分割符。用完了以后要记得还原
(2)格式
样例:
delimiter &&
create procedure demo(inout p_in int)
begin
select p_in;
set p_in=2;
select p_in;
end;
&&
delimiter ;
说明:在命令行的执行过程中,select可以显示变量选择变量,set就是对变量进行赋值,可以在最左边的栏中见到新建立的存储过程,并且可以直接调用执行
set @p_in=1;
call demo(@p_in);
结果显示:

(3)变量的定义declare
declare l_int int unsigned default 40000;
declare l_num number(8,2) default 9.95;
declare l_date date default '1999-12-31';
declare l_datetime datetime default '1999-12-31 23:59:59';
declare l_varchar varchar(255) default 'This will not be padded';
(4)用户变量
select 'hello world' into @x;
select @x;
显示结果:

(5)样例
-- 从1到100的数字之和
delimiter *
create procedure kaka(out count int)
begin
declare v1 int(11) default 1;
declare v2 int(11) default 0;
while v1 < 100 do
set v2 = v2 + v1;
set v1 = v1 + 1;
end while;
set count = v2;
end;
call kaka(@count);
select @count;
*
delimiter
四、函数
1.自定义函数及其调用
DELIMITER $$
CREATE FUNCTION 函数名(参数1,参数2,…) RETURNS 返回值类型
[函数选项]
BEGIN
函数体;
RETURN 返回值;
END;
$$
DELIMITER ;
样例:
delimiter &&
create function sum(a int,b int)returns int
begin
declare c int;
set c=a+b;
return c;
end;
&&
delimiter ;
调用:
set @a=2,@b=3;
set @c=`test`.`sum`(@a, @b);
select @c;
输出:

说明:函数的修改用alter,函数的删除用drop
基于Mysql的编程语言(实验六、七)的更多相关文章
- MySQL数据库实验六:存储过程建立与调用
实验六 存储过程建立与调用 一.实验目的 理解存储过程的概念.建立和调用方法. 二.实验环境 三.实验示例 1.定义一个函数,按性别计算所有学生的平均年龄. CREATE FUNCTION aver ...
- 2017-2018-1 我爱学Java 第六七周 作业
团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...
- 201871010132-张潇潇-《面向对象程序设计(java)》第六-七周学习总结
201871010132-张潇潇-<面向对象程序设计(java)>第六-七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- Oracle 实验四-七
shutdown immediateORA-01097: 无法在事务处理过程中关闭 - 请首先提交或回退 解决:先 "commit" 实验四 SQL Production :: C ...
- VMware vSphere服务器虚拟化实验六 vCenter Server 添加储存
VMware vSphere服务器虚拟化实验六 vCente ...
- 搭建基于MySQL的读写分离工具Amoeba
搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.2 ...
- JAVA程序对MYSQL数据库加锁实验
什么是脏读,不可重复读,幻读 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 2. 不可重 ...
- 基于Mysql数据库亿级数据下的分库分表方案
移动互联网时代,海量的用户数据每天都在产生,基于用户使用数据的用户行为分析等这样的分析,都需要依靠数据都统计和分析,当数据量小时,问题没有暴露出来,数据库方面的优化显得不太重要,一旦数据量越来越大时, ...
随机推荐
- OAuth2.0授权码模式实战
OAuth2.0是目前比较流行的一种开源授权协议,可以用来授权第三方应用,允许在不将用户名和密码提供给第三方应用的情况下获取一定的用户资源,目前很多网站或APP基于微信或QQ的第三方登录方式都是基于O ...
- K8S单集群桌面安装笔记【k8s-for-docker-desktop】
一.K8S集群基本的拓扑结构 二.下载 k8s-for-docker-desktop k8s桌面单集群安装,基本上选择 k8s-for-docker-desktop或者minikube两类,本文采用前 ...
- Elasticsearch 基础介绍
# Elasticsearch简介 ## 基础概念 Elasticsearch由Shay banon在2004年进行初步开发,并且在2010年2月发布第一个版本. 此后Shay banon在2 ...
- 第2课:操作系统网络配置【DevOps基础培训】
第2课:操作系统网络配置 --DevOps基础培训 1. DNS配置 1.1 什么是DNS? 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP ...
- [BFS]P1434 [SHOI2002]滑雪
P1434 [SHOI2002]滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者 ...
- 【oracle学习笔记01】oracle architecture —— Memory Strucrure
附图3: granule_size for each components 附图4:
- 201871030118-雷云云 实验二 个人项目—D{0-1}背包问题项目报告
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业链接 我的课程学习目标 1.了解并掌握psp2.掌握软件项目个人开发流程3.掌握Github发布软件项目的操作方法 这个作业在哪些方面帮助 ...
- java多种文件复制方式以及效率比较
1.背景 java复制文件的方式其实有很多种,可以分为 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,BufferedO ...
- MySQL数据类型全解析
1 概述 本文主要介绍了MySQL的各种数据类型,版本为8.x, MySQL的数据类型可以分为六类:数值类型,日期时间类型,字符串类型,二进制类型,JSON类型与空间数据类型. 2 数值类型 数值类型 ...
- .ts 视频文件 .m3u8视频文件合并 转换为mp4
1. 先把 .m3u8.zip 格式文件解压到文件夹D:\a. 2. 将文件夹内的 .ts文件名处理好. 一般均为按顺序排列. (殊情况需要根据.m3u8文件记录处理.) 举例,根据实际情况处理. ( ...