Sql编程

一.变量:系统变量、自定义变量

        1.系统变量:用来控制服务器的属性,如autocommit、auto_increment_increment

                a.查看系统变量:show  global variables;

                b.查看具体变量值:select @@变量名

   

               c.修改系统变量:会话级别、全局级别

                       1.会话级别:临时修改,当前客户端当次有效。

                                set autocommit=0;

                       2.全局级别:永久修改,所有客户端都有效,当前客户端已连接服务器,需推出后生效。set global 变量名=值;

                     Sql编程_第1张图片

        2.自定义变量  

                a.设置自定义变量:系统为了区分系统变量,规定用户自定义变量必须使用一个@,set @变量名=值。

                    

                b.自定义变量的查看:select   @变量名;

                    Sql编程_第2张图片 

                c.从表中获取数据赋值给变量

                    Sql编程_第3张图片

                d.只赋值不看结果每次只能复制一条记录

                    Sql编程_第4张图片

             所有自定义变量都是会话级别,当前客户端当前连接有效,不区分数据库属于(用户级别)。

二.触发器(trigger):事先写好一段代码,当表中的数据发生改变时(增删改),系统自动触发代码执行事件

                a.触发器要素:触发事件、触发时间、出发对象

                        1.触发事件:增、删、改(insert、delete、update)

                        2.触发时间:前、后(before、after)

                        3.表中的每一条记录(行)

                一张表中最多只能有一种时间的一种触发器,一张表中最多有6个触发器

                 b.创建触发器:在mysql中没有大括号、小括号都是用对应的字母代替

                        临时修改结束符:delimiter 自定义符号,后续代码只有遇到自定义符号才算结束

                           1.创建触发器基本语法

                 Sql编程_第5张图片

                Sql编程_第6张图片

            c.查看触发器

                   1.查看所有触发器:show triggers [like 'pattern']

        Sql编程_第7张图片

                2.查看触发器创建语句:show create trigger 触发器名称;

              Sql编程_第8张图片

               3. 所有的触发器都会放在Information_schema.triggers

   Sql编程_第9张图片

             4.触发器的使用

Sql编程_第10张图片

               5.修改&删除触发器:不能修改,只能先删除后新增

                 语法:drop trigger 触发器名称;

            Sql编程_第11张图片   

        6.触发器的记录:不管触发器是否触发,当系统某种操作准备执行,系统会将当前状态和即将操作的记录状态保存下来,

            当前状态保存在old中,操作后的状态保存在new中。

               1):使用方式:old/new(旧、新记录)   字段名 (new 代表的是假设发生后的结果)

Sql编程_第12张图片

三.代码的执行结构:顺序结构、分支结构、循环结构

           a.分支结构:准备多个代码块,按照条件选择性执行

                1.语法:if 判断条件

                             then 满足条件代码块

                             else 不满足条件代码块

                             end if;

                案例:触发器结合分支if结构,如果库存够生成订单,不满足不生成订单。

                Sql编程_第13张图片

            b.循环结构:某段代码在满足条件下一直循环执行

                   Sql编程_第14张图片

四.函数:将一段代码封装到一个结构中,需要调用代码块时调用结构即可(提高代码的复用性)。

              a.函数的分类:系统函数、自定义函数

                    1.系统函数

                         1):substring:字符串截取

                        Sql编程_第15张图片   

                         2):char_length:字符长度、length:字节长度

                            Sql编程_第16张图片

                        3):Instr:判断字符串是否在某个字符里,存在返回位置

                        Sql编程_第17张图片

                   2.自定义函数

                           1)函数要素:函数名、参数列表、返回值、函数体(作用域)           

                           2)创建函数语法:create function 函数名([参数列表]) returns  -- 规定要返回的类型

                                                       begin    函数体

                                                       end

                               

                         3)调用函数:select 函数名称;

                            Sql编程_第18张图片

                        4)查看函数:select function status [like 'pattern'];

                    Sql编程_第19张图片

                       5)查看函数的创建:show create function 函数名;

                    Sql编程_第20张图片

                      6)函数的修改&删除:drop  function 函数名称;

                      7)函数参数:分为实参和形参,形参制定时必须指定数据据类型

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

                        Sql编程_第21张图片

                       8)参数作用域

                    Sql编程_第22张图片

五.存储过程

            1.创建过程

                create procedure 过程名字([参数列表])

               begin 过程体

                end

            

            2.查看存储过程

                show procedure status[like 'pattern'];

            3.查看创建过程:show create procedure 过程名字;

            4.调用过程 call test();

            5.删除过程: drop procedure 过程名字;

            6.过程参数

            Sql编程_第23张图片

                Sql编程_第24张图片

                Sql编程_第25张图片

                Sql编程_第26张图片



                                                                                                                                

你可能感兴趣的:(mysql)