存储过程

  • 把一些通用的sql语句放进去
  • 提高系统的性能
  • delimiter 分隔符,默认是分号,即MySQL解释器遇到分号即执行前面所有MySQL语句
  • 上图用delimiter &&将分隔符改为&&,那么解释器遇到&&后才会执行
  • 因为select可能有多条语句,所以不能遇到分号就马上执行,故用&&放在最后面作为结束标志
  • pro_book是存储过程的名称,相当于函数名
  • 参数列表中,IN表示名为bT的变量是要传入的变量,并且类型为int型(类型必须是MySQL支持的类型),OUT则表示count_num为要返回的、输出的参数
  • READS SQL DATA声明存储过程执行了读数据的操作
  • BEGIN跟END定义存储过程的始末点
  • SELECT是表操作语句,count就是要输出的变量
  • delimiter ; :改回默认的分隔符
  • 第一次运行,创建一个存储过程并运行CALL语句,返回结果;后面运行只能把CALL语句刷黑,选择“运行已选择的”,若全部运行的话,则又要创建一个存储过程,这会报错:pro_book已存在

存储函数

  • returns varchar(20):声明返回值的类型,注意这里用的是returns,有加“s”
  • return+sql语句:直接返回执行sql语句的结果,注意这里return没s
  • select:调用存储函数

定义变量

  • 关键字是declare,后面跟变量名,可以是多个,然后变量类型,默认值是null

赋值

  • 直接给变量赋值
  • 引用别的表的值

游标

  • declare关键字定义游标,名为cur_t_user2,类型为cursor(游标),for后面接sql语句;定义的游标即为sql语句结果集的游标
  • open:打开游标
  • fetch:取游标当前值赋给a,b;本来应该是循环的,不过还没学,现在只能取首个结果
  • close:关闭游标

if语句

  • 要用end if结尾
  • 还可以有else if

case语句

循环语句

  • aaa:循环标签,相当于循环的名字,随便起
  • leave:跳出循环

跳出本次循环

repeat循环

while语句