一. 编程基础

1)        结束符

2)        代码块

Begin 相当于 {

end;  相当于 }

1.    变量

系统变量

Show variables; 

查看系统变量sql_mode

 会话变量
Set @变量名=值;

局部变量 // 在函数或过程内部定义的变量

 Declare 变量名 类型 default 默认值;

 Declare  I  int default 0;

2.    循环while

 变量初始化;

 [名称]:While 条件判断 do

 循环体;

 增量;

 End 空格 while;
delimiter //
create function mywhile(n int) returns int
begin
declare i int default 0;
declare sum int default 0; while i <= n do
set sum = sum + i;
set i = i +1;
end while;
return sum;
end;
//
delimiter ;

调用函数:

 select mywhile(100);

3.    判断if

If 条件 then

         return 返回值;

Elseif 条件 then

         return 返回值;

Else

         return 返回值;

End if;
delimiter //
create function checkuser(name varchar(11)) returns varchar(11)
begin
if name = 'admin' then
return "ok";
else
return "no";
end if;
end;
//
delimiter ;

二.自定义[存储]函数

1)        创建自定义函数

Create  Function 名称(参数 数据类型) returns 数据类型

说明:

create function 关键字
名称 //自定义函数名称,用来调用.
([参数 数据类型]) //形参为可选
Returns 数据类型 //指明返回值的类型, 注意:returns
注意:自定义函数体中必须有返回值 使用关键字return 没有参数的:

delimiter //
create function test() returns varchar(11)
begin
return 'ok';
end;
//
delimiter ;

2)        调用函数

Select 函数名称([参数]);

说明: select 函数名称([参数]) // 根据定义函数时形参.  ,形参与实参保持一致.

3)        查看创建函数信息

show create function 函数名称 \G

4)        查看所有自定义函数

 show function status \G

5)        删除自定义函数

 Drop function 函数名称; 

如果当前数据库不是db_five

Drop function db_five.mywhile;

自定义函数中可以执行的SQL语句: delete, update,insert

三.存储过程

概念: 存储过程就是一条或多条SQL语句的集合.即没有返回值的存储函数

delimiter //
create procedure myselect()
begin
select * from student;
end;
//
delimiter ;

1.    定义存储过程

Create procedure 过程名称(in 参数 类型,out 参数 类型 inout 参数 类型)

说明:

1)        Create procedure  // 创建过程关键字

2)        In 参数 数据类型 (默认)  //类似于php中的拷贝传值

3)        Out 参数 数据类型   //类似于php中的引用传值, 传递到过程中将这个变量赋值为NULL;

4)        Inout 参数 数据类型  //类似于php中的引用传值;

delimiter //
create procedure mytest(in a int, out b int,inout c int)
begin
select a,b,c;
set a=11,b=22,c=33;
select a,b,c;
end;
//
delimiter ;

2.    调用存储过程

Call 过程名称( [参数])

3.    查看创建存储过程信息

Show create procedure 过程名称

4.    查看所有存储过程

Show procedure status \G 

5.    删除存储过程

Drop procedure 过程名称

四.触发器

概念: 触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。当执行这些事件时,就会激活触发器执行相应的操作。

1.    创建触发器

create trigger 名称 after|before 事件 insert|update|delete  on 表名  for each row

说明:

1)        Create trigger //创建触发器的关键字

2)        名称

3)        After|before , 触发时机

4)        insert|update|delete  //事件

5)        on 表名 //作用于哪张表

6)        for each row //触发器是基于行.

nowtime  //id,nowtime;
nowuser //id,name 在用户表中添加用户时,通过触发器会自动在nowtime表中将当前的时间添加 delimiter //
create trigger tg1 after insert on nowuser for each row
begin
insert into nowtime values (null,now());
end;
//
delimiter ;

2.    两个关键字: new, old

在触发器中,当触发事件发生时,

new : 代表新行, old: 代表旧行

insert 操作: 成功之后,其后会自动产生一行新的数据. 在触发器中通过new获取新行字段值

delete 操作, 其成功之后, 对旧行数据进行删除,在触发器中可以通过old获取旧行字段值

update操作: 其会对原有的旧行,更新为新行. 既有新行又有旧行

insert 事件

delimiter //
create trigger tg1 after insert on tb_order for each row
begin
update tb_goods set inv = inv - new.num where id = new.pid;
end;
//
delimiter ;

Delete  事件:

-- delete
delimiter //
create trigger tg2 after delete on tb_order for each row
BEGIN
update tb_goods set inv = inv + old.num where id = old.pid;
end;
//
delimiter ;

Update 事件:

New,old

delimiter //
create trigger tg3 after update on tb_order for each row
begin
update tb_goods set inv = inv + old.num - new.num where id = old.pid;
end;
//
delimiter ;

3.    显示所有触发器

Show triggers \G

4.    删除触发器

Drop trigger 触发器名称

MySQL——自定义[存储]函数、触发器的更多相关文章

  1. Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器

    ---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...

  2. MySQL的存储函数(自定义函数)的定义和使用方法

    存储函数 什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果. 存储函数的语法:  create function 函数([函数参数[,….]]) Returns 返回类型 Begin ...

  3. Oracle数据库游标,序列,存储过程,存储函数,触发器

    游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理, ...

  4. oracle存储过程和存储函数&触发器

    oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 ...

  5. mysql中(存储)函数

    (存储)函数: 函数,也说成“存储函数”,其实就是js或php中所说的函数! 唯一的区别: 这里的函数必须返回一个数据(值): 定义形式: 注意事项: 1, 在函数内部,可以有各种变量和流程控制的使用 ...

  6. MYSQL的存储函数

    创建存储函数与创建存储过程大体相同,格式如下: create function sp_name([func_parameter[,...]]) returns type [characteristic ...

  7. PL/SQL&存储过程||存储函数&触发器

    plsql 有点:交互式  非过程化   数据操纵能力强   自动导航语句简单   调试简单   想率高 声明类型的方式 1.基本类型 2.引用变量 3.记录型变量 基本格式 declare 声明 b ...

  8. MySQL自定义排序函数FIELD()

    MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1.str2.str3.str4比较,返回1.2.3.4,如遇 ...

  9. MYSQL 自定义序列函数

    代码如下: DROP TABLE SEQNUM; -- 创建序列表 CREATE TABLE SEQNUM( ID BIGINT ); -- 插入初识值 insert INTO SEQNUM valu ...

随机推荐

  1. JAXL连接Openfire发送房间消息

    使用composer形式安装的JAXL <?php require_once "vendor/autoload.php"; $client = new JAXL(array( ...

  2. springcloud-sleuth实现日志的链路追踪

    1.需要将spring-cloud-starter-sleuth的依赖加入即可(注意:最好使用maven或gradle工具) 代码参考:https://github.com/Pinshuducha/s ...

  3. 关于MySQL IN LIKE OR使用索引的问题

    以前在网上看了一些资料,有些人说话不严谨,导致一直被误导,最近在实际开发中发现一些结论有问题,因此特地整理了一下,防止下次继续犯错. 以下前提是有对这个字段建立索引(简直废话,没建的肯定不会使用索引啊 ...

  4. 软件-浏览器-GoogleChrome:Google Chrome

    ylbtech-软件-浏览器-GoogleChrome:Google Chrome Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit, ...

  5. 英语-汉语600句-会见:Making an Appointment/约会

    ylbtech-英语-汉语600句-会见:Making an Appointment/约会 1.返回顶部 1. Making an Appointment/约会1.喂,请问是哪位?Hello, who ...

  6. 给NetBeans配置javafx环境

    JavaFX开发环境安装配置,这里给大家介绍一个非常有用的步骤 从Java8开始,JDK(Java开发工具包)包括了JavaFX库. 因此,要运行JavaFX应用程序,您只需要在系统中安装Java8或 ...

  7. Java程序员面试题收集(5)

    Java基础方面: 1.作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ ...

  8. Leetcode506.Relative Ranks相对名次

    给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌.前三名运动员将会被分别授予 "金牌","银牌" 和" 铜牌"(" ...

  9. 使用uni-app(Vue.js)创建运行微信小程序项目步骤

    使用uni-app(Vue.js)开发微信小程序项目步骤 1. 新建一个uni-app项目   创建完成后的目录结构 2. 打开微信小程序开发工具端的端口调试功能 3. 运行创建的项目 效果

  10. ES6--反引号的使用

    /*动态初始退出登出框话模态框*/ /*动态的初始化退出登陆模态框 反引号ES6语法 * 为什么在使用字符串格式直接创建模态框 * 1.不能在html页面中创建模板,因为如果换一个页面就没有对应的模板 ...