一、系统变量

说明:变量由系统提供,不用自定义

语法:

1、查看系统变量

show【global | session】varisables like ‘ ’;如果没有显示声明global 还是session,默认是session

2、查看指定的系统变量的值

select @@【global | session】,变量名;如果没有显示声明global还是session,则默认是session

3、为系统变量赋值

set 【global | session】变量名=值;

set @@global,变量名=值

set @@变量名=值;

1、全局变量

服务器层面上的,必须拥有super权限才能为系统变量赋值,作用域为整个服务器,也就是针对于所有链接(会话)有效

2、会话变量

服务器为每一个链接的客户端都提供了系统变量,作用域为当前的链接

二、自定义变量

1、用户变量

作用域:针对于当前链接(会话)生效

位置:begin end里面,也可以放在外面

使用

1、声明并赋值

set @变量名=值;

set @变量名:=值

select @变量名:=值

2、更新值

方式一:

set @变量名=值;

set @变量名:=值

select @变量名:=值

方式2:

select xx into @变量名 from 表;

3、使用

select @变量名

2、局部变量

作用域:仅仅在定义他的begin end中有效

位置:只能放在begin end中,而且只能放在第一句

使用:

1、声明

declare 变量名 类型 【default 值】

2、赋值

set 变量名=值;

set 变量名:=值

select @变量名:=值

方式2:

select xx into 变量名 from 表;

3、使用

select 变量名;

存储过程和函数:

说明:类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字

好处:

1、提高重用性

2、sql语句简单

3、减少了数据库的链接次数,提高了效率

存储过程的创建

create producedure 存储过程名(参数模式 参数名 参数类型)

begin

存储过程体

end

注意:

1、参数模式:in、out、inout,其中in可省略

2、存储过程体的每一条sql语句都需要用分号结尾

二、调用

call 存储过程名(实例列表)

举例:

调用in模式的参数:call sql(’值‘)

调用out模式的参数:set @name;call sql(@name);select @name

调用inout模式的参数:set @name=值;call sql(@name);select @name

三、查看

show create procedure 存储过程名;

四、删除

drop producedure 存储过程名;

函数:

一,创建

create function 函数名(参数名 参数类型)returns 返回类型

begin

函数体

end

注意:函数体中肯定要有return语句

二、调用

select 函数名(实参列表);

三、查看

show create function 函数名;

四、删除

drop function 函数名;

流程控制结构

顺序结构

分支结构:程序按条件选择执行,从两条或多条路径中,选择一条执行

  特点:

  if函数:实现双分支

语法:if(条件 值1 值2)

位置:可以作为表达式放在任何位置

case结构

功能:实现多分支

语法1:

case 表达式

when 值1 then 语句1;

。。。

end 语句n;

位置:

任何位置,

如果放在begin end 外面,作为表达式结合着其他语句使用

语法2:

case

when 条件1 then 语句1;

。。。

end 语句n;

循环结构:程序在满足一定条件下,重复执行

如果放在begin end里面,一般作为独立的语句使用

3、if结构

功能:实现多分枝

if 条件1 then 语句1;

if 条件2 then 语句2;

。。。

else 语句n;

end if;

位置:

只能放在begin end 中

循环结构

位置:只能放在begin end中

特点:都能实现循环结构

对比:

1、三种循环都可以省略名称,但如果循环中先加了循环控制语句(leave或iterate)则必须添加名称

2、loop一般用于死循环

while先判断后执行

repeate 先执行后判断,无条件至少执行一次

1\while

语法

【名称:】while 循环条件 do

循环体

end while【名称】

2、loop

语法:

【名称:】loop

循环体

end loop【名称】;

3、repeat

语法:

【名称:】repeat

循环体

until 结束条件

end repeat【名称】;

循环控制语句:

leave:类似于break,用于跳出所在的循环

iterate:类似于continue,用于结束本次循环,继续下一次

最新文章

  1. JMeter压力测试
  2. 如何解决MSI类型的Sharepoint Server2016 安装即点即用的office 2016 plus问题
  3. C# WinForm修改配置文件
  4. 安卓开发之json解析
  5. SQL数据库约束行为---防止数据完全重复
  6. Android入门:用HttpClient模拟HTTP的GET和POST请求
  7. 《Maven_孔浩》依赖传递
  8. 百度地图LBS云平台读写数据操作类
  9. 日志管理-将Log4net的配置配置到的独立文件中
  10. Java的Git管理工具Gitblit
  11. Lowest Common Multiple Plus
  12. PyQt中登录框设计
  13. Shiro【授权过滤器、与ehcache整合、验证码、记住我】
  14. @JoinColumn解释
  15. View在测量时的MeasureSpec由什么决定?
  16. Git HEAD detached from XXX (git HEAD 游离) 解决办法
  17. L1-032 Left-pad
  18. 使用Nginx限制同一IP的访问频率
  19. LeetCode: Sort Colors 解题报告
  20. 手机dp和px的转换

热门文章

  1. hibernate课程 初探单表映射1-9 创建关系映射文件
  2. 使用HTML5 canvas做地图(1)基础知识
  3. vc++ 6.0编译后生成的文件
  4. Java笔记--动态代理
  5. jQuery-添加新元素的方法(append()、prepend()、before()、after())
  6. MVC+Nhibernate+jquery+easyui递归实现多级菜单
  7. graylog插件的安装
  8. [转贴] 2016一月12日起.NET 4, 4.5 and 4.5.1 停止安全更新、技术支持 or hotfix
  9. World Wind Java开发之十——AnalyticSurface栅格渲染(转)
  10. Android(java)学习笔记152:采用get请求提交数据到服务器(qq登录案例)