文档章节

mysql视图/存储过程/函数/事件/触发器

坦途abc
 坦途abc
发布于 07/19 18:38
字数 567
阅读 5
收藏 8

--语法参考:https://dev.mysql.com/doc/   (当前用的是5.6)

https://dev.mysql.com/doc/refman/5.6/en/sql-syntax-data-manipulation.html

--视图

CREATE VIEW test.v AS SELECT * FROM t;

 --存储过程

CREATE
    [DEFINER = { user | CURRENT_USER }]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body

proc_parameter:
    [ IN | OUT | INOUT ] param_name type    

type:
    Any valid MySQL data type

characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }

routine_body:
    Valid SQL routine statement

--新建存储过程

delimiter //
CREATE PROCEDURE simpleproc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END//
delimiter ;

--调用存储过程
CALL simpleproc(@a);    

--函数
CREATE
    [DEFINER = { user | CURRENT_USER }]
    FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body

func_parameter:
    param_name type

type:
    Any valid MySQL data type

characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }

routine_body:
    Valid SQL routine statement

--新建函数
CREATE FUNCTION hello (s CHAR(20))
    RETURNS CHAR(50) DETERMINISTIC
    RETURN CONCAT('Hello, ',s,'!');
--使用函数
SELECT hello('world');

 

--事件
CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'string']
    DO event_body;

schedule:
    AT timestamp [+ INTERVAL interval] ...
  | EVERY interval
    [STARTS timestamp [+ INTERVAL interval] ...]
    [ENDS timestamp [+ INTERVAL interval] ...]

interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

用法一:
CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;


用法二:
CREATE EVENT e_totals
    ON SCHEDULE AT '2006-02-10 23:59:00'
    DO INSERT INTO test.totals VALUES (NOW());      

用法三:
delimiter |

CREATE EVENT e_daily
    ON SCHEDULE
      EVERY 1 DAY
    COMMENT 'Saves total number of sessions then clears the table each day'
    DO
      BEGIN
        INSERT INTO site_activity.totals (time, total)
          SELECT CURRENT_TIMESTAMP, COUNT(*)
            FROM site_activity.sessions;
        DELETE FROM site_activity.sessions;
      END |

delimiter ;

用法四:
CREATE EVENT e_call_myproc
    ON SCHEDULE
      AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
    DO CALL myproc(5, 27);

 

--触发器
    
CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    trigger_body

trigger_time: { BEFORE | AFTER }  #BEFORE:先触发触发器,再执行操作 | AFTER:执行完操作再触发触发器

trigger_event: { INSERT | UPDATE | DELETE }
    
    

CREATE TABLE classification_log
(
    id BIGINT(20),
    note varchar(128),
    utime datetime default NOW()
)
--插入时,触发器记录日志记录日志
CREATE TRIGGER tri_classification
AFTER INSERT ON document_classification
FOR EACH ROW
BEGIN

INSERT classification_log(id , note)
VALUES(new.id,'新插入id');
END;
    
--修改时,触发器记录日志记录日志
CREATE TRIGGER tri_classificationx3
AFTER UPDATE ON classification_log2
FOR EACH ROW
BEGIN

INSERT classification_log(id , note)
VALUES(old.id,'修改前');

INSERT classification_log(id , note)
VALUES(new.id,'修改后');
END;
    
--删除时,触发器记录日志记录日志
CREATE TRIGGER tri_classificationx4
AFTER DELETE ON classification_log2
FOR EACH ROW
BEGIN

INSERT classification_log(id , note)
VALUES(old.id,'删除前');

END;

 

© 著作权归作者所有

共有 人打赏支持
坦途abc
粉丝 4
博文 68
码字总数 79734
作品 0
海淀
程序员
私信 提问
mysql的存储过程 事件 触发器 视图 等的概念

内容来源: http://www.cnblogs.com/cac2020/p/6026511.html 表:里面存储的都是真实的数据视图:就是一个表或者多个表的一个映射,一般只做查询使用。比如你想要的数据存在两个表里,但你查...

JAVA码猿
2017/11/06
0
0
《MySQL必知必会》读书笔记(四) 22~30章 完结篇

1、视图 视图不包含表中应该有的任何列或数据,它包含的是一个SQL查询。在视图创建之后,可以用于表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视...

一万
2016/02/08
329
0
MySQL之视图、存储过程、触发器、函数、事务、动态执行SQL

视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。 创建视图: create v...

AltBoy
2017/06/11
0
0
Navicat Mac 快捷键有哪些

Navicat 是数据库管理工具,满足了大家对数据库的存储过程、事件、触发器、函数、视图等功能,并且支持MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。对于Windows,mac...

Navicat数据库管理工具
2016/06/13
201
0
mysql查看所有存储过程,函数,视图,触发器,表

查询数据库中的存储过程和函数 方法一: select from mysql.proc where db = 'yourdbname' and = 'PROCEDURE' //存储过程 select from mysql.proc where db = 'yourdbname' and = 'FUNCTION......

余二五
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
18分钟前
1
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
5
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部