MySQL之视图、触发器、事务、存储过程、函数


一 视图

  • 二 触发器
  • 三 事务
  • 四 存储过程
  • 五 函数
  • 六 流程控制
  •   MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部都做了,也就是说它想要完成一件事,以后想开发的人,例如想写python程序的人,你就专门的写你自己的python程序,以后凡是关于数据的增删改查,全部都在MySQL里面完成,也就是说它想实现一个数据处理与应用程序的一个完全的解耦和状态,比如说,如果我是个应用程序员,我想要查询数据,我不需要自己写sql语句,只需要调用mysql封装好的一些功能,直接调用这个功能就可以了,之前我们使用sql来进行数据的增删改查,其实sql也可以算作一个开发语言,有专门招数据库开发的岗位,也就是说mysql想做这么一个事儿,以后啊,专门有人写应用程序的开发,专门有人来写sql,来开发sql部分,在数据库层面根据应用层的程序员的要求,把sql语句全部写好,各种复杂的需求全部帮你封装好,封装成一个一个的功能,应用程序开发程序员在根据自己的需求来使用这些功能,直接调用就可以了,这是mysql想要完成的事情,但是咱们以后做开发,一般不会这么搞,一般招聘需求里面都会有一项是要会sql,浅显的说是因为花最少的钱,做最多的事儿,但是往深了说是因为公司里面一般不会用这些内置的功能去sql的工作,至于为什么,咱们学完mysql之后再说吧~~~

    中文猛击这里 OR 官方猛击这里

      一 自定义函数(自己简单看看吧)

    #!!!注意!!!
    #函数中不要写sql语句(否则会报错),函数仅仅只是一个功能,是一个在sql中被应用的功能
    #若要想在begin...end...中写sql,请用存储过程
    delimiter //
    create function f1(
        i1 int,
        i2 int)
    returns int
    BEGIN
        declare num int;
        set num = i1 + i2;
        return(num);
    END //
    delimiter ;
    delimiter //
    create function f5(
        i int
    )
    returns int
    begin
        declare res int default 0;
        if i = 10 then
            set res=100;
        elseif i = 20 then
            set res=200;
        elseif i = 30 then
            set res=300;
        else
            set res=400;
        end if;
        return res;
    end //
    delimiter ;

      二 删除函数

    drop function func_name;

      三 执行函数

    # 获取返回值
    select UPPER('chao') into @res;
    SELECT @res;
    
    
    # 在查询中使用
    select f1(11,nid) ,name from tb2;

       关于查看存储过程,函数,视图,触发器的语法:

    查询数据库中的存储过程和函数
    
           select name from mysql.proc where db = 'xx' and type = 'PROCEDURE'   //查看xx库里面的存储过程
           select name from mysql.proc where db = 'xx' and type = 'FUNCTION'   //函数
    
           show procedure status; //存储过程
           show function status;     //函数
    
    查看存储过程或函数的创建代码
    
      show create procedure proc_name;
      show create function func_name;
    
    查看视图
      SELECT * from information_schema.VIEWS   //视图
      SELECT * from information_schema.TABLES   //表
    
    查看触发器
      SHOW TRIGGERS [FROM db_name] [LIKE expr]
      SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G;其中triggers T就是triggers as T的意思,起别名
    回到顶部

    DB