zoukankan      html  css  js  c++  java
  • 转:Mysql存储过程,函数,视图,触发器的用法

    一 存储过程
        1语法
          CREATE PROCEDURE sp_name ([proc_parameter[,...]])
                [characteristic ...] routine_body
        2举例    
             DROP PROCEDURE IF EXISTS pro_add;
               DELIMITER //
               CREATE PROCEDURE pro_add( IN p1 INT, IN p2  INT, INOUT p3 INT)
               BEGIN
                  SET p3=p1+p2;
               END
               //
               
               CALL pro_add(1,2,@abc);
               SELECT @abc;            

     
    二 函数 (特殊的存储过程 暂时不支持 out)   
         1语法结构:
          CREATE FUNCTION sp_name ([func_parameter[,...]])
           RETURNS type
           [characteristic ...] routine_body
        2举例
           DROP FUNCTION IF EXISTS fun_add;
           DELIMITER //
           CREATE FUNCTION fun_add(p1 INT,p2 INT)
           RETURNS INT
           BEGIN
              RETURN p1+p2;
           END
           //
           SET @abc=fun_add(1,2);
       SELECT @abc;   


    三 视图
       1>语法结构
        create view 名称 as sql语句
        --视图操作举例
        CREATE TABLE `arcticle` (
         `id` int(11) NOT NULL AUTO_INCREMENT,
         `title` varchar(200) DEFAULT NULL,
         `content` varchar(200) DEFAULT NULL,
         `createuser` varchar(200) DEFAULT NULL,
         PRIMARY KEY (`id`)
       ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
        CREATE VIEW vi_arc AS SELECT title,content FROM arcticle
       SELECT * FROM arcticle
       UPDATE vi_arc SET content='java永不过时' WHERE title='java是否过时'
       DELETE FROM vi_arc WHERE title='java是否过时' 
       INSERT INTO vi_arc VALUES('abc','ccc')


    四 触发器    
       1>语法结构
        CREATE TRIGGER trigger_name trigger_time trigger_event
        ON tbl_name FOR EACH ROW trigger_stmt
       2>举例:
         DROP TRIGGER trg_arc
           DELIMITER //
           CREATE TRIGGER trg_arc 
           BEFORE INSERT
           ON arcticle 
           FOR EACH ROW
           BEGIN
              IF new.createuser IS NULL THEN
               SET new.createuser='张三';
              END IF;
           END
           //  
       3>注意 
        delete和update 有 old对象
        insert和update 有new对象
        update  有old,new对象
        after触发器 不能够修改new的值

    忘记的时候看看

  • 相关阅读:
    jdk .tar.gz 包安装 inAction
    Consistent Hashing原理与实现
    开放GitHub的理由
    dll signing issue
    Regular expression cheat sheet
    DOMElement之Offset
    扫码支付测试点
    SQL注入是什么?如何防止?
    什么是接口测试?为什么要做接口测试?如何开展接口测试?
    软件测试的常识
  • 原文地址:https://www.cnblogs.com/jbml-154312/p/7606795.html
Copyright © 2011-2022 走看看