您好,登錄后才能下訂單哦!
? ? ? ?本篇博客介紹的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腳本。
函數通常是針對記錄中的某個字段的值進行處理。
? ? ?本篇完 !
? ? ? ? ? ? ?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。