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的值
  • 相关阅读:
    LeetCode#160-Intersection of Two Linked Lists-相交链表
    LeetCode#2-Add Two Numbers-两数相加
    LeetCode#141-Linked List Cycle-环形链表
    LeetCode#66-Plus One-加一
    LeetCode#35-Search Insert Position-搜索插入位置
    LeetCode#203-Remove Linked List Elements-移除链表元素
    基姆拉尔森公式
    [leetcode] 树(Ⅲ)
    常用算法合集(一)
    离散数学 II(最全面的知识点汇总)
  • 原文地址:https://www.cnblogs.com/t0404/p/10291053.html
Copyright © 2011-2022 走看看