SQL入门笔记(1)

储存过程

增删改查+储存,听说这些做好后,好歹算是入门了。不知不觉自己都开始学习储存了,心中不禁一阵翻滚。


废话结束,开始回顾


储存过程:

储存过程有三中模式:
IN模式
OUT模式
INOUT模式

1.IN的模式

举个栗子___
  1. DELIMITER $$ # 定界符  
  2. CREATE PROCEDURE user_main_pro1(IN v_id INT)  
  3. BEGIN  
  4.   #定义变量  
  5.   DECLARE v_userName VARCHAR(50);  
  6.   #通过select...into...给变量赋值  
  7.   SELECT f_userName INTO v_userName FROM t_user_main WHERE f_userId = v_id;  
  8.   #执行DDL语句  
  9.   INSERT INTO t_user_main (f_userName) VALUES (v_userName);  
  10. END $$ #存储过程创建结束  
  11. DELIMITER; #恢复mysql分号定界符  
其中# ~ 表示的是注释,注释是一个非常好的习惯,还可以将#替代成--
小结: IN:不管内部储存过程pin(某个变量variables)是什么值,一旦参数在外部设定为@pin=X,那么最后pin的值就会变成X,而不会因为存储过程内容设置pin=y而返回y值


2.OUT的模式

举个栗子___
  1. DELIMITER $$  
  2. CREATE PROCEDURE user_main_pro2(OUT v_count INT)  
  3. BEGIN  
  4.   SELECT COUNT(*) INTO v_count FROM t_user_main;  
  5. END $$  
  6. DELIMITER  
OUT: 不管外部储存过程pin(某个变量variables)是什么值,一旦参数在内部设定为@pin=y,那么最后pin的值就会变成y(储存过程中设置的值),而不会因为外部指定设置pin=x而返回y值

3.OUTIN模式

无栗子,
自己的理解:INOUT就是IN+OUT,然而这样的结果是最后相当于一个翻版,能够读取玩不文件的翻版而已。目测需要继续深入学习。





为了深入理解IN/OUT/INOUT的定义,先理解下面的内容:
理解:
语法
CREATE FUNCTION 函数名(参数列表) RETURNS 数据类型
或者(CREAT PRECEDURE 储存过程名(IN/OUT/INOUT  参数  数据类型)
begin
# 函数体
# 返回值
end
//

CALL 储存过程名(@参数)


返回值是在储存过程的内部,//以前都是在储存,CALL开始调用


外部变量? (全局变量)内部变量?(局部变量)
全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。
(1)栈(stack):由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。
(2)全局(静态)存储区:分为DATA段和BSS段。DATA段(全局初始化区)存放初始化的全局变量和静态变量;BSS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。其中BBS段在程序执行之前会被系统自动清0,所以未初始化的全局变量和静态变量在程序执行之前已经为0。

理解关键词对于理解整个储存过程,以及句子的语法结构有十分重要的意义。不懂行业内对应的关键词就如同:
SELECT you_study_process  From you's study
#输出结果 
'摸着石头过河的瞎子0.0'






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值