zoukankan      html  css  js  c++  java
  • MySQL 里 视图,触发器,事物,存储过程,内置函数,流程控制,索引

    1、视图:
        定义:通过查询一张虚拟表,然后保存下来,下次直接使用即可,可以不需要重复查询。
    
        使用:
         create view teacher_course as select * from teacher inner join course on teacher.tid = course.teacher_id;
    
        强调:
            1、在硬盘中,视图只有表结构文件,没有表数据文件
            2、视图通常用于查询,可以通过修改视图里的数据进而影响到原始表里的数据,因此尽量不要修改视图中的数据
            3、在实际开发 过程中不会过多的使用视图,视图是mysql的功能。当需要扩展某个功能时同时需要对视图进行修改,
            此时先要将视图修改,然后再去程序里修改对应的sql语句,这些操作会涉及跨部门沟通,因此通常不会使用视图,而是
            重新修改sql语句来扩展功能
    

      

    2、触发器
    
        定义:在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器
    
        触发条件:在对表进行增insert,删delete,改update的情况下,自动触发执行sql语句
    
    标准语句结构:
        create trigger 触发器名字 after insert on 表名 for each row
        begin
            sql语句
        end
    修改之前
         create trigger tri_before_update_t1 before update on t1 for each row
        begin
            sql语句
        end
    
    
        修改之后
         create trigger tri_after_update_t1 after update on t1 for each row
        begin
            sql语句
        end
    修改
     删除之前
         create trigger tri_before_delete_t1 before delete on t1 for each row
        begin
            sql语句
        end
        
        删除之后
         create trigger tri_after_delete_t1 after delete on t1 for each row
        begin
            sql语句
        end
    删除
     增加数据之后
        create trigger tri_after_insert_t1 after insert on t1 for each row
        begin
            sql语句
        end
        
        增加数据之前
        create trigger tri_before_insert_t1 before insert on t1 for each row
        begin
            sql语句
        end
    增加
    CREATE TABLE cmd (
        id INT PRIMARY KEY auto_increment,
        USER CHAR (32),
        priv CHAR (10),
        cmd CHAR (64),
        sub_time datetime, #提交时间
        success enum ('yes', 'no') #0代表执行失败
        );
    
        CREATE TABLE errlog (
            id INT PRIMARY KEY auto_increment,
            err_cmd CHAR (64),
            err_time datetime
        );
    
    
        delimiter $$  # 将mysql默认的结束符由;改成$$
        create trigger tri_after_insert_cmd after insert on cmd for each row
        begin
            if NEW.success = 'no' then
                insert into errlog(err_cmd,err_time) values(NEW.cmd,NEW.sub_time);
            end if;
        end $$
        delimiter ;
    结合mysql的案例

    事务 待续

  • 相关阅读:
    【java基础知识】1
    【android】工程基本文件介绍
    【sqlite权威指南】笔记3 sqlite入门
    【sqlite权威指南】笔记2 sqlite介绍
    【sqlite权威指南】笔记1 概述
    【sqlite】1 start
    【操作系统】笔记8 存储器
    【操作系统】笔试7 汇编
    【操作系统】笔记6 java基本类型及运算
    【操作系统】笔记5
  • 原文地址:https://www.cnblogs.com/changwenjun-666/p/10883698.html
Copyright © 2011-2022 走看看