• MySQL(视图、触发器、函数)


    day61

    参考:http://www.cnblogs.com/wupeiqi/articles/5713323.html

    视图

    视图:给某个查询语句设置别名,日后方便使用    
                
            - 创建
                create view 视图名称 as  SQLs语句
                
                PS: 视图是虚拟的   不存在insert
            - 修改
                alter view 视图名称 as  SQL语句
                
            - 删除
                drop view 视图名称;

    触发器

    当对某张表做:增删改操作时,可以使用触发器自定义关联行为

    create trigger 触发器名称 before insert on tb1 for each row

    begin

          .......

    end

    每在插入一行前,先执行begin~end中内容。

    查询时用不到触发器

    #遇到;不能完整执行需要将中止符修改
    -- delimiter//
    -- create trigger t1 before INSERT on student for each row
    -- BEGIN
    --     INSERT INTO teacher(tname) values('触发器');  #表示写完了
    -- 
    -- END//
    -- delimiter;
    -- 
    
    insert into student(gender, class_id, sname) values("女",1,'触发');#插入两行则触发两次

    执行触发器后,触发器一直存在。

    触发器运行过之后,一直存在,不需要时,需要删除。

    drop trigger t1;

    插入学生的数据同样插入老师的表中 NEW

    #插入学生的数据再插入老师的表中
    -- delimiter//
    -- create trigger t1 before INSERT on student for each row
    -- BEGIN
    --     INSERT INTO teacher(tname) values(NEW.sname);  #表示写完了
    -- 
    -- END//
    -- delimiter;
    
    insert into student(gender, class_id, sname) values("女",1,'啦啦');#插入两行则触发两次

    先执行触发器,结束后注释(触发器已存在),再执行insert语句,数据插入student和teacher表中。

    NEW,表示新数据,insert,   update(既有新数据,更新为的数据)

    OLD,表示老数据,delete,   update(又有老数据,被更新数据)

    函数

    内置函数

    select CURDATE();#执行函数
    select CHAR_LENGTH('vdsv');#计算字符长度
    select CONCAT('ccd','csc','FF');#拼接

    执行结果:

    等等函数。

    关于时间的函数https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

        执行函数 select CURDATE();
                
                blog
                id       title            ctime
                 1        asdf        2019-11
                 2        asdf        2019-11
                 3        asdf        2019-10
                 4        asdf        2019-10
                      
                select ctime,count(1) from blog group ctime
                
                select DATE_FORMAT(ctime, "%Y-%m"),count(1) from blog group DATE_FORMAT(ctime, "%Y-%m")
                2019-11   2
                2019-10   2

    以上按月份进行分组,比如cnblogs中按月份分组的文章。

    自定义函数:

    delimiter \
    create function f1(
        i1 int,
        i2 int)
    returns int

    BEGIN declare num int; set num = i1 + i2; return(num); END \ delimiter ;

    SELECT f1(1,100);          #函数有返回值。

  • 相关阅读:
    获取N年,N月,N日后或者前的日期函数
    ABAP 上传图片
    SF 小技巧
    针式打印机问题
    ABAP 捕获回车键
    md04 取数函数
    根据选择屏幕创建12个月份
    php isset 的作用
    php 指针概念 指针引用
    php中global与$GLOBALS的用法及区别
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/9964576.html
Copyright © 2020-2023  润新知