天天看點

學了這麼久MySQL竟然還不知道視圖和觸發器!!!

文章目錄

  • create簡介
  • 視圖
  • 觸發器

說真的,第一次聽說視圖的時候,我想起的是圖形化管理工具。你可能直到建立資料庫用create database 資料庫名,你也可能知道建立表用create table 表名,今天就再讓你多知道兩個,建立視圖用create view 視圖名,建立觸發器用create trigger 觸發器名

視圖是什麼,視圖其實就是一張虛拟表,一張從别的表中導出的一張不完整的虛拟表,視圖有什麼用,當我們經常查詢一個表中的某幾個字段的時候,我們可以把這幾個字段單獨導出一個視圖,以後查詢的時候直接可以select *,在資料庫中隻存放了視圖的定義,沒有存放視圖的資料,視圖是依賴原來表中的資料的,原表中的資料一旦發生變化,視圖查詢出的及俄國也會跟着變化。下面進行建立一個視圖。

首先我們需要一張視圖是以來的表,這裡以bank表為例

學了這麼久MySQL竟然還不知道視圖和觸發器!!!

這裡我們以name和money兩個字段建立視圖

create view bankview 
as select name,money from bank;
      

進行查詢name和money的時候,可以直接從視圖中查詢。

學了這麼久MySQL竟然還不知道視圖和觸發器!!!

desc bankview;,檢視視圖結構

學了這麼久MySQL竟然還不知道視圖和觸發器!!!

drop view bankview;删除視圖

學了這麼久MySQL竟然還不知道視圖和觸發器!!!

觸發器是由事件來觸發某個操作,這些事件包括,insert、delete、update語句。當資料庫執行這些事件時,就會激活觸發器執行相應的操作。

我們需要一個表,這裡用bank表,用來對該表進行增删改操作,另外需要一個banklog表,當對bank表操作的時候,會激活我們的觸發器,對banklog表做出相應的操作。

學了這麼久MySQL竟然還不知道視圖和觸發器!!!
create trigger autoSaveTime before insert 
on bank for each row 
insert into banklog(bankTime) values(now());
      
create trigger typelog after delete 
on bank for each row 
insert into banklog(bankTime) values("delete");
      

繼續閱讀