本篇博客介紹的mysql的視圖功能和存儲過程以及它們的作用和實例說明 !
一 . MySQL視圖VIEW
1.視圖簡介
在MySQL中視圖功能就比較類似於Exel中的篩選功能
通俗理解就是將一張表中經常要查詢的列和記錄創建成一張虛擬的表 , 其實viewer視圖中存放的是select語句 . 視圖中看到的數據會隨着原始表格的更新而動態更新 .
定義視圖的篩選可以來自當前或其它數據庫的一個或多個表,或者其它視圖。通過視圖進行查詢沒有任何限制,通過它們進行數據修改時的限制也很少.
視圖是存儲在數據庫中的SQL查詢語句,它主要出於原因有: 安全原因,視圖可以隱藏一些數據,如:一些敏感的信息使複雜的查詢易於理解和使用。
2. 創建視圖
語法 : CREATE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ]
VIEW 視圖名 [(字段1,字段2…)]
AS SELECT語句
[WITH [CASCADED | LOCAL] CHECK OPTION ];
示例 : 創建一個名爲view_user 的視圖 , 功能爲查詢mysql庫中的user表中的user , host , password 字段信息
CREATE VIEW view_user AS SELECT user,host,password FROM mysql.user;
上述示例爲單表視圖 , 視圖也可以創建多表視圖 , 例 :
在test庫中創建兩張表 ,一張產品表product , 用來存放商品名字和對應的價格 ; 一張採購purshase表 , 用來存放產品信息和數量
product表準備:
purchase表準備:
創建多表視圖 :
mysql> create view purchase_detail
as select
product.name as name, product.price as price,
purchase.quantity as quantity,
product.price * purchase.quantity as total_value
from product,purchase
where product.name = purchase.name; #等值連接(即name相同的記錄進行組合)
3. 查看視圖
show tables #視圖名可以通過表名查看 , 因爲本質它就是一張虛擬的表
show table status #查看錶的狀態
示例 : 查看書籍庫test庫中視圖及所有表詳細信息--->show table status from test\G
show create view #查看視圖定義信息
示例 : show create view 視圖名\G
desc #查看視圖結構
示例 : desc 視圖名
4. 修改視圖
方法一 : 直接刪除視圖再新建視圖
方法二 : alter修改視圖
語法:
ALTER VIEW 視圖名
AS SELECT語句;
示例:
ALTER VIEW view_user
AS SELECT user,password FROM mysql.user;
5. 刪除視圖
語法 : DROP VIEW view_name
二 . MySQL存儲過程
作用 : 定義數據存儲過程 , 存儲過程中允許對庫 , 表 , 記錄做增刪改查等操作 , 類似於shell中的函數作用
簡介:
存儲過程(Stored Procedure)是在大型數據庫系統中,一組爲了完成特定功能的SQL 語句集,存儲在數據庫中,經過第一次編譯後調用不需要再次編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。
語法:
create procedure 存儲過程名()
BEGIN
一定功能的sql語句集
END
call 存儲過程名(); #調用存儲過程
實例 :
要求 :
創建一個名稱爲dba的庫文件,在dba庫中創建一張名稱爲tb1的表,表中有id、name這兩個字段。創建一個名稱爲ad1的存儲過程,ad1存儲過程的功能是插入三條記錄到tb1表中。
1.步驟 , 創建tb1表
2.創建ad1存儲過程
3.查看tb1表後調用存儲過程 , 在次查看tb1表看看有什麼不同
存儲過程(procedure)和函數(function)的主要區別:
存儲過程是針對表中的數據記錄進行處理的SQL語句集合,就類似於shell腳本。
函數通常是針對記錄中的某個字段的值進行處理。
本篇完 !