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的值
  • 相关阅读:
    手写堆排序和归并排序
    海量数据处理
    HDU 1532 --&&-- POJ1273 dinic 算法
    POJ 3159 最短路 SPFA
    POJ 1459 网络流 EK算法
    8.14比赛j题 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87813#overview
    单链表---邻接表
    poj 1273 ---&&--- hdu 1532 最大流模板
    HDU 2603 二分匹配
    UVA 796 连通图求桥
  • 原文地址:https://www.cnblogs.com/t0404/p/10291053.html
Copyright © 2011-2022 走看看