当数据库版本不允许直接使用存储过程、函数的语法时用delimiter // 将结束符改成//用完之后再写delimiter;将结束符改回来即可,调用过程、函数用call+其名字即可返回结果

delimiter //
不带参数过程
CREATE PROCEDURE proc ()
BEGIN
SELECT * FROM city where type=1;
end// 调用:call proc; 带参数过程
CREATE PROCEDURE countcity1(IN count int, OUT num INT)
BEGIN
SELECT COUNT(*) FROM city WHERE type=count;
END // 调用 call countcity1(1,@num);
select @num 函数
CREATE FUNCTION NameByZip() RETURNS CHAR(50)
RETURN (select * from city where cityname = '上海'); 设置变量
DECLARE var1 INT DEFAULT 100;
DECLARE var2, var3, var4 INT;
SET var2 = 10, var3 = 20;
SET var4 = var2 + var3; 设置游标
DECLARE cursor_name CURSOR FOR select_statement ; select_statement指的是返回的结果集
打开游标 OPEN cursor_name{游标名称}
使用游标 FETCH cursor_name INTO var_name [, var_name] ... {参数名称}
关闭游标 CLOSE cursor_name{游标名称}
例子
DECLARE t_studentName CHAR(20);
DECLARE t_studentAge INT;
DECLARE cur_student CURSOR FOR SELECT studentName, studentId FROM student where studentName = 'Bruce';
OPEN cur_student;
FETCH cur_student INTO t_studentName, t_studentAge;
...
CLOSE cur_student; IF
IF t_studentName IS NULL
THEN SELECT studentName INTO t_studentName FROM student where studentName = 'Bruce';
ELSE UPDATE studentName set student = NULL where studentName = 'Bruce';
END IF; 删除
DROP PROCEDURE CountStudent
DROP FUNCTION NameByZip; 创建触发器
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
1、trigger_name标识触发器名称,用户自行指定
2、trigger_time标识触发时机,可以指定为before或after
3、trigger_event标识触发事件,包括INSERT、UPDATE和DELETE
4、tbl_name标识建立触发器的表名,即在哪张表上建立触发器
5、trigger_stmt是触发器程序体,触发器程序可以使用begin和end作为开始和结束,中间包含多条语句
触发器例子:mysql> create trigger update_Student BEFORE update on student FOR EACH ROW
->begin
-> update board1 set articleCount=articleCount+1 where id= NEW.bid;
-> end; 触发器不允许返回结果、mysql的触发器目前不能对当前表进行操作 查看触发器
SHOW TRIGGERS
删除触发器
DROP TRIGGER name ===========================================================
WHERE DATEDIFF(NOW(),reward_time)=0 可以得到当天时间
WHERE DATEDIFF(NOW(),reward_time)=2 可以得到前天时间 原理:参数1与参数二的值的差就是相隔的天数
where DATEDIFF(NOW(),reward_time)<3 and DATEDIFF(NOW(),reward_time)>0 可求出前三天的总数据结果 UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
union all则是返回所有结果
例子:select *
from student
where id < 4
union
select *
from student
where id > 2 and id < 6

  

mysql存储过程、函数、触发器、的更多相关文章

  1. mysql 存储过程 函数 触发器

    mysql存储过程与函数 存储过程下载  demo mysql> delimiter // -- 这里//为修改默认分隔符: mysql> CREATE PROCEDURE simplep ...

  2. mysql存储过程和触发器的应用

    ***********[mysql 存储过程和触发器 -- 别安驹]********************* 1.什么情况下使用存储过程? 完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空 ...

  3. 查看SQL SERVER 加密存储过程,函数,触发器,视图

    原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create  PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...

  4. MySQL 存储过程 函数 routine 权限

    MySQL 存储过程 函数 routine 权限 Table of Contents 1. mysql存储过程/函数权限 1.1. 相关对象操作权限检查 1.2. 执行权限 1 mysql存储过程/函 ...

  5. MySQL存储过程、触发器、自定义函数、事务

    1.存储过程 MySQL中存储过程的参数中有IN.OUT.INOUT类型,但是函数的参数只能是IN类型的. “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参 ...

  6. mysql存储过程和触发器

    mysql编程(存储过程和触发器) 存储过程 什么是存储过程 存储过程,带有逻辑的sql语句 存储过程特点 执行效率非常快!存储过程是在数据库的服务器端执行的!!! 移植性很差!不同数据库的存储过程是 ...

  7. MySql 存储过程、触发器和权限问题

    存储过程 1.1 什么是存储过程 存储过程,带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if  while) 1.2 存储过程特点 1)执行效率非常快!存储过程 ...

  8. MySQL存储过程、触发器 小例子

    一.存储过程 语法: CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...]) BEGIN ... END 参数: IN 输入参数 表示该参数的值必须在调用存 ...

  9. MySQL存储过程及触发器

    一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...

  10. oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器

    --创建索引 关键词 index create[unique] index index_name on table_name(column_name [,column_name…]) [tablesp ...

随机推荐

  1. Django中执行原生SQL语句【新编辑】

    参考我的个人博客 这部分迁移到了个人博客中:Django中执行原生SQL语句 这里需要补充一下,还有一个extra方法: ret = models.Student.objects.all().extr ...

  2. printf ("%*.*s")

    小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”. 同样,小数点 ...

  3. 如何设置Windows操作系统打印机与xlpd连接

    Xlpd是Xmanager中负责远程打印的软件,除了打印远程文件,它还具备很多功能,本集将具体讲解Xlpd的主要功能. 主要功能如下: 1.  支持LPD协议(RFC1179) 在RFC1179中定义 ...

  4. springboot 尚桂谷学习笔记03

    ------spring boot 与日志------ 日志框架: 市面上的日志框架: jul jcl jboss-logging logback log4j log4j2 ...... 左边一个门面 ...

  5. VS2017/VS2019 git Authentication failed for "XXXXXXXXXx"

    解决办法: 控制面板,凭证管理==>删掉 对应代码仓库地址的凭证.删掉,是删掉.因为我更新了还是没有用.

  6. 如何获得一个干净的 gnome 开发环境?

    下载 stage3-amd64-systemd-xxxxxxxx.tar.bz2 eselect profile set default/linux/amd64/17.0/desktop/gnome/ ...

  7. QTP read or write XML file

    'strNodePath = "/soapenv:Envelope/soapenv:Body/getProductsResponse/transaction/queryProducts/qu ...

  8. css深入理解overflow

    1.基本属性 visible(默认值) 超出部分仍然正常显示 hidden 超出后隐藏 scroll 滚动条一致显示 auto 自适应 显示或隐藏滚动条 inherit overflow  =  ov ...

  9. 【Python—字典的用法】找到多个字典的公共键

    有 a,b,c,d,e,f 6名球员,他们在三轮比赛中的进球数用 s1,s2,s3 3个字典表示,找到每轮都有进球的球员? 创建 s1,s2,s3 3个字典素材 from random import ...

  10. OpenCV2马拉松第9圈——再谈对照度(对照度拉伸,直方图均衡化)

    收入囊中 lookup table 对照度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个样例,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( ...