• MySql视图和存储程序


    1、视图

    1、创建视图

    create view(字段别名...) as 选择语句
    例:
    create view(ln,fn) as select last_name,first_name from student;

    2、可以通过视图对底层表进行增删改查操作。

    2、存储程序

    1、复合语句和语句分隔符

    delimiter 分隔符名
    create procedure 函数名()
    begin
    函数体
    end;
    delimiter #结束分隔符
    call 函数名

    例:
    delemiter $
    create procedure show_times()
    begin
    select CURRENT_TIMESTAMP as 'Local Time';
    select UTC_TIMESTAMP as 'UTC Time';
    end$
    delemiter
    call show_times(); #调用

    2、存储函数和存储过程

    create function 函数名(参数列表)
    returns type stmt
    create procedure 存储过程名(参数列表)
    stmt

    函数例子:

    delemiter $
    create function test(emp_salary INT)
    returns INT
    READS SQL DATA
    BEGIN
     RETURN(select count(*) from emp where salary > 5000 and salary=emp_salary);
    END$
    delemiter;

    函数只能返回一个值,而要返回多个值可以编写多个函数多次调用,或者使用存储过程out。

    存储过程例子:

    delemiter $
    CREATE PROCEDURE show_born_in_year(p_year INT)
    BEGIN
        SELECT first_name,last_name,birth,death
        from president
        where YEAR(birth)=p_year
    END$
    delemiter;

    过程不能用在表达式里,只能使用call语句调用.

    存储过程的三种参数类型:in、out、inout,默认为in:

    3、触发器

    触发器是与特定表相关联的存储过程,其定义会在执行表的delete、insert、update语句时被自动激活。触发器属于表

    语法:

    create trigger trigger_name     #触发器名
    [before|after]                  #触发时机
    [insert|delete|update]          #激活触发器的语句
    ON table_name                   #关联表
    FOR EACH ROW trigger_stmt       #内容

    例子:

    create table t(percent INT, dt DATETIME);
    delimiter $
    create trigger bi_t BEFORE INSERT ON t
          FOR EACH ROW BEGIN
               IF NEW.percent < 0 then
                     SET NEW.percent=0;
               ELSEIF NEW.percent > 100 then
                     SET NEW.percent=100;
               END IF;
    end$  NEW.dt=CURRENT_TIMESTAMP;
    end$
    delimiter;
  • 相关阅读:
    CORS详解
    JBoss 系列九十九:Rest WebService jBPM 6 集成演示样例
    atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
    4G时代来临,运营商为谁搭台献唱?
    Pascal&#39;s Triangle II
    cocos2d-x 3.6版连连看载入资源
    SlidingMenu导入编译用法--Eclipse和IDEA
    【解决】hive动态添加partitions不能超过100的问题
    AngularJS clone directive 指令复制
    AndroidStudio文件夹结构视图讲解
  • 原文地址:https://www.cnblogs.com/xiaolan-/p/12406016.html
Copyright © 2020-2023  润新知