SQL入门笔记(1)

来源:互联网 发布:fifaonline3数据库下载 编辑:程序博客网 时间:2024/05/16 14:53

储存过程

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


废话结束,开始回顾


储存过程:

储存过程有三中模式:
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的定义,先理解下面的内容:
理解:
语法
CREATEFUNCTION 函数名(参数列表) 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'






原创粉丝点击