SQL(视图、触发器、存储过程)

分享我的的学习过程与体会(入坑sql的第五天)java

一、数据库视图

  1. 什么是数据库视图
    -》在初步学习数据库视图时,个人第一反应就是将其拆开,分为:数据库----视图
    什么是数据库?数据信息的存放集合。什么是视图?视觉图片,信息展现的一种方式,能被咱们肉眼所看到。
    因此,数据库视图:展现数据库中咱们所要查询信息的图像(图表)
    -》以后我又了解了,视图在数据库中的存在形式是一串sql语句(?),它包含了视图的名字和视图对应的查询方法,它所展现的数据全都存在于它所查询的基本数据表里。因此,我由此得知了它被称为虚拟表的缘由(并未存听任何数据,只是一个接口)mysql

  2. 为何要建立数据库视图
    -》更加直接的显示咱们所想在数据库中所要查询获取的信息,方便咱们对于具体信息的处理与操做。
    -》安全,有的数据是须要保密的,若是直接把表给出来进行操做会形成泄密,那么能够经过建立视图把相应视图的权限给出来便可保证数据的安全(百度)。web

  3. 视图的建立与操做
    建立:
    create view 视图名 as select 字段名1,字段名2 ....字段名N from 表名
    ◆DESCRIBE语句查看视图基本信息
    ◼DESCRIBE 视图名;
    ◆SHOW TABLE STATUS语句查看视图基本信息
    ◼SHOW TABLE STATUS LIKE’视图名’;
    ◆SHOW CREATE VIEW语句查看视图详细信息
    ◼SHOW CREATE VIEW视图名;sql

    视图的其他增、删、改、查操做均与基本表操做一致数据库

注意!对于视图的增删改均会影响到它所关联的基本表,我想是由于它是虚表,没有保存数据的能力。安全

二、触发器

  1. 基本概念
    -》简单来讲触发器就是java中的监听器,当接收到某个操做请求后触发事先所编写的事件
  2. 做用
    -》基本表之间的关联性数据发生变更时可以及时的更新修改
    -》使数据库实现了关联动态性更新
    -》方便了对于数据库的 管理
  3. 使用
    首先,由于要插入sql语句,因此要使用delimiter 来实现语句的控制输入
    语法:create trigger tri_test一、
    after(1) insert(2) on 表名(3)
    for each row
    begin
    update 表名set num=num-new.字段名where 字段名=new.字段名;(4)
    end
    (1):在语句执行前仍是执行后触发(after/before)
    (2):执行何种操做后触发(insert/delete/update)
    (3):要监听的表名
    (4):触发后所要执行的sql语句/命令
    实操:
    delimiter $ 		//设置sql语句的结束符
    create trigger tri_1			//建立一个名为tri_1的触发器
    after insert on commodity		//监视commodity表的insert操做
    for each row 					//对每一行监听
    begin								//触发以后开始的语句
    update `order` set c_num = c_num - new.o_num where new.o_cid = c_id;		//语句操做
    end $								//完成建立trigger  $结束
    delimiter ;						//reset 结束符
    总结:触发器使得mysql的数据操做更加灵活,省去了一大段由于相关联表的数据修改而产生的一长串表信息修改问题。赞!

三、存储过程

-》学过以后感受…
为何不用Java或者其余语言来实现它(sql)所想实现的业务逻辑…
因此不想对此多加探讨svg

以上,是我对于这一天学习的归纳性总结,若有理解错误之处望请指出、交流。