本篇博客介紹的mysql的視圖功能和存儲過程以及它們的做用和實例說明 !mysql
一 . MySQL視圖VIEWsql
1.視圖簡介shell
在MySQL中視圖功能就比較相似於Exel中的篩選功能數據庫
通俗理解就是將一張表中常常要查詢的列和記錄建立成一張虛擬的表 , 其實viewer視圖中存放的是select語句 . 視圖中看到的數據會隨着原始表格的更新而動態更新 .安全
定義視圖的篩選能夠來自當前或其它數據庫的一個或多個表,或者其它視圖。經過視圖進行查詢沒有任何限制,經過它們進行數據修改時的限制也不多.
視圖是存儲在數據庫中的SQL查詢語句,它主要出於緣由有: 安全緣由,視圖能夠隱藏一些數據,如:一些敏感的信息使複雜的查詢易於理解和使用。bash
2. 建立視圖ide
語法 : CREATE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ]
VIEW 視圖名 [(字段1,字段2…)]
AS SELECT語句
[WITH [CASCADED | LOCAL] CHECK OPTION ];函數
示例 : 建立一個名爲view_user 的視圖 , 功能爲查詢mysql庫中的user表中的user , host , password 字段信息spa
CREATE VIEW view_user AS SELECT user,host,password FROM mysql.user;3d
上述示例爲單表視圖 , 視圖也能夠建立多表視圖 , 例 :
在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腳本。
函數一般是針對記錄中的某個字段的值進行處理。
本篇完 !