mysql深入浅出的笔记(存储过程一)

1.存储过程和函数....

   存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,

   减少数据在数据库中和应用服务器之间的传说胡,对于提高数据处理的效率有很多好处.

2.存储过程和函数的区别

  1)函数必须有返回值,而存储过程没有

  2) 存储过程的参数有IN,OUT,INOUT

       而函数的只有IN

   3)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),

     由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。

3.  创建存储过程

     1) CREATE PROCEDURE f1( in p1 int,in p2 int ,out p3 int)
           READS SQL DATA
           BEGIN
               select id
                from inview
               where p1 = inview_id
                 AND   p2 = stroe_id
                 AND m1(id);
            SELECT FOUND_ROWS() INTO p3;
          END
 2)
create procedure c1_add (a int ,b int)
 begin
 declare c int ,
  if    a is null  then
         set a = 0;
 end if ;

 if b is null then
      set b = 0;
 end if ;
 set c=a+b;
 select c as sum;
end ;
注:存储过程中不能使用return...return只能使用在函数中...
存储过程的调用...
call cl_add(10,20); //存储过程需要使用call函数来进行调用...
set @a=10; set @b=20; //我们还可以定义两个用户变量...
call cl_add(@a,@b); //将用户变量的值传递过去...

4.存储过程和函数的CREATE 语法不支持使用CREATE OR
REPLACE 对存储过程和函数进行修改,如果需要对已有的存储过程或者函数进行修改,需要
执行ALTER 语法。

   ALTER PROCEDURE f1 MODIFIES SQL DATA SQL SECURITY INVOKER;

5.删除存储过程或函数

  drop procedure f1;

  drop function    .....;

6.查看存储过程或者函数的定义

  SHOW CREATE {PROCEDURE | FUNCTION} sp_nam

7.变量的应用

   1)变量的定义:DECLARE定义一个局部变量,他的作用域为begin...end;

      DECLARE var_name[,...] type [DEFAULT value]

     例如定义一个int 类型的变量p1:

    DECLARE p1 int;

   2)变量的赋值  set var_name = 常量 ||表达式

     set p1 =1;

 

 
时间: 2024-10-08 10:11:20

mysql深入浅出的笔记(存储过程一)的相关文章

mysql颠覆实战笔记(六)--商品系统设计(三):商品属性设计之固定属性

今天我们来讲一下商品属性 我们知道,不同类别的商品属性是不同的. 我们先建一个表prod_class_attr: 给这个表填入一些数据: 接下来,我们再建一个商品属性对应表 prod_attr 好了,下面我们把新增商品的流程撸一遍: 第一步,往商品主表插入数据 我们来新建一个存储过程 sp_new_prod: BEGIN INSERT INTO prod_main(prod_name,prod_classid) VALUES (_prod_name,_class_id); END 参数:IN _

mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计

版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址. 这几节课沈老师先带我们说道一下商品表. 固定商品:譬如我们只是卖鞋,那么整个商品的属性基本都是一致的,列如鞋的颜色.尺寸.款式.品牌.价格.这时候我们涉及到的表往往是平面的. 这种涉及方法的特点: 1.纯定制化. 2.开发快,仅仅只要针对某些元素开发. 3.但是扩展性差,一旦我们新

mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量

继续回到沈老师的MYSQL颠覆实战,首先回顾下上一节课的内容,请大家会看下上节课写的存储过程. 打开prod_clicklog表, 我们只要把日期(不含时分秒)的部分存在数据库中, 如果同一日期有相同用户点击商品,那么我们对其数值+1,否则的话,这张点击日志表会过于庞大 下面我们将prod_clicklog表修改下: 将字段clickdate 修改为 date类型,增加clicknum字段,默认为1. 然后,我们把上一节课的存储过程sp_load_prod再修改一下: BEGIN SELECT

MySQL实用基础笔记

/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES --

mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法

版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址. 现在我们接着上节课,完成第二个功能,不管成功不成功都记录一个日志. 一.回顾上节课内容,我们在user_log表中添加一个字段 user_id.  在上一节课的存储过程新增一行代码,如下: BEGIN set @gid=0; set @user_name=''; set @_res

《高性能MySQL》读书笔记--MySQL逻辑架构

一.MySQL逻辑架构 MySQL最重要的.最与从不同的特性是它的存储引擎架构,这种构架的设计将查询处理及其它系统任务和数据的存储/提取相分离. 第一层,服务层,最上层的服务并不是MySQL独有的,大多数基于网络的客户端/服务端的工具或者服务都有类似的架构.主要为请求做连接处理,授权认证,安全等. 第二层,核心层,大多数MySQL的核心服务功能都在这一层,包括查询解析,分析,优化,缓存,以及所有的内置函数(例如日期.时间.数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视

《高性能MySQL》读书笔记--锁、事务、隔离级别 转

1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念. 1.1锁的分类 从对数据操作的类型(读\写)分 读锁(共享锁):针对同一块数据,多个读操作可以同时进行而不会互相影响. 写锁(排他锁):当前写操作没有完成前,它会阻断其他写锁和读锁. 大多数时候,MySQL锁的内部管理都是透明的. 1.2锁粒度(Lock granula

mysql中游标在存储过程中的详细用法

昨天写的一个东东,分享下给大家. drop PROCEDURE  if exists sp_cleanUserData; CREATE  PROCEDURE `sp_cleanUserData`() BEGIN /*定义游标*/ declare v_dt bigint(20) default 0 ; declare v_num INT DEFAULT 0; /*游标循环到末尾时给定义的常量赋值*/ declare cur_userId   CURSOR FOR select  userId fr

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea