MySQL中视图和触发器学习

    xiaoxiao2023-07-15  151

    创建视图的语法:

    其中,algorithm是可选参数,表示视图选择的算法,它有三个选项:undefined,merge,temptable。Undefined表示让MySQL自动选择所要使用的算法;merge表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;temptable表示将视图的结果存入临时表,然后用临时表执行语句。

    Cascaded是可选参数,表示更新视图时要满足所有视图和表的相关条件,该参数是默认选项;local表示更新视图时,满足该视图本身定义的条件即可。

     

    在单表上创建视图,例如,为use1表创建一个视图:

    create view use1_view as select * fromuse1;

    运行结束后查看该视图:describe use1_view;

    我们可以看到,该视图已经成功创建。

    在多表上创建视图,例如,为test3和gradeinfo表创建一个视图:

    Create algorithm=merge view

    test3_view(id,name,score)

    as select test3.id,name,score

    from test3,gradeinfo wheretest3.id=gradeinfo.id

    with local check option;

    运行后该视图结果如下:

    已经成功选取两张表中部分数据组成视图。

     

    一,修改视图的语法:

    二,删除视图的语法:

    例如,删除视图test3_view:drop view if exists test3_view;

    运行之后该视图就会显示不存在:

    创建触发器

    一,创建只有一个执行语句的触发器的语法:

    例如,创建一个t_time表,每次向test3中执行insert语句时,触发向t_time表中插入当前时间的触发器:

    create trigger test3_time before insert

       -> on test3 for each row

    -> insertinto t_time value(now());

    验证是否成功创建触发器:

    insert into test3 values(1,'linda','123');

    运行之后,查看t_time表中是否插入了当前系统时间:

    插入成功,说明触发器已经开始起作用了。

    二,创建有多个执行语句的触发器的语法:

    例如,对test3表执行delete语句时,对t_time表插入两条时间信息:

    delimiter && create trigger test_trigger after delete on test3 for each row begin insert into t_time values('2017-01-10'); insert into t_time values('2017-01-20'); end && Delimiter ;

    注意:MySQL默认;为结束符号,但是触发器中用到了;且不为结束符号,所以在创建触发器时可以用delimiter &&,将MySQL的结束符号变为&&,当触发器创建成功之后,用delimiter;来还原;为结束符。

     

    验证是否成功创建触发器:

    delete from test3 where id=1;

    运行之后查看t_time表中是否插入了2017-01-10和2017-01-20:

    插入成功,说明多个执行语句的触发器开始起作用了。

    三,查看触发器

    在MySQL中,所有的触发器都被information_schema数据库下的triggers表中,查看triggers表,可以看到数据库下所有触发器的信息。

    查询所有触发器语句:select * from information_schema.triggers;

    查询单个触发器,例如查询刚刚创建的test_trigger触发器:

    select * from information_schema.triggerswhere trigger_name='test_trigger';

    四,删除触发器:

    例如删除刚刚创建的test_trigger:drop trigger test_trigger;

    语句执行之后,再查看该触发器,显示empty;

    视图,触发器就先掌握这些喽,下一次我们学一点基本的SQL查询语句。

    最新回复(0)