當前位置:
首頁 > 最新 > MySQL 進階全套

MySQL 進階全套

《MySQL入門全套》講的是MySQL的基本操作,禁不住大家的熱情,所以進階來了。這一篇講的是進階,會有一點難以理解,本節主要內容MySQL視圖,存儲過程,函數,事務,觸發器,以及動態執行SQL。

視圖view

視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在資料庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。對其中所引用的基礎表來說,視圖的作用類似於篩選。定義視圖的篩選可以來自當前或其它資料庫的一個或多個表,或者其它視圖。通過視圖進行查詢沒有任何限制,通過它們進行數據修改時的限制也很少。視圖是存儲在資料庫中的查詢的SQL 語句,它主要出於兩種原因:安全原因, 視圖可以隱藏一些數據。

1、創建視圖

2、刪除視圖

3、修改視圖

也就只是改了把create改成alter,中間的語句更換了。

4、使用視圖

使用視圖時,將其當作表進行操作即可,由於視圖是虛擬表,所以無法使用其對真實表進行創建、更新和刪除操作,僅能做查詢用。

存儲過程procedure

1、我們為什麼要用存儲過程呢 ?

我們都知道應用程序分為兩種,一種是基於web,一種是基於桌面,他們都和資料庫進行交互來完成數據的存取工作。假設現在有一種應用程序包含了這兩 種,現在要修改其中的一個查詢sql語句,那麼我們可能要同時修改他們中對應的查詢sql語句,當我們的應用程序很龐大很複雜的時候問題就出現這,不易維 護!另外把sql查詢語句放在我們的web程序或桌面中很容易遭到sql注入的破壞。而存儲常式正好可以幫我們解決這些問題。

2、創建存儲過程

創建存儲過程這塊主要有兩種,一種是帶參數的,一種是不帶參數的,先講不帶參數的再說不帶參數的。

不帶參數案例:

帶參數案例這塊主要有三個類

in 僅用於傳入參數用

out 僅用於返回值用

inout 既可以傳入又可以當作返回值

3、刪除存儲過程

4、Python用pymysql模塊調用存儲過程,因為我們學習這些就是為了語言調用

函數function

在MySQL中有很多內置函數,比如我們經常用的求平均值,求和,個數,各式各樣,先給大家來一部門內置函數,然後再說說自定義函數吧,函數也可以傳參數,也可以接收返回值,但是函數沒辦法得到執行語句得到的結果,存儲過程可以。

更多參考請參考中文文檔【http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/functions.html#encryption-functions】

1、自定義創建函數

2、刪除函數

3、執行函數

事務

事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證資料庫數據完整性。例如:當兩張銀行卡之間進行轉賬,甲方錢轉出去了,突然光纜壞了,乙方還沒收到錢,錢跑哪裡去了,就為了防止這種情況,事務就出來了,事務可以防止這種事情發生。

應用事務實例:

執行存儲過程:

觸發器TRIGGER

觸發器,簡單來說就是當你在執行這條語句之前或者之後觸發一次增刪改查,觸發器用於定製用戶對錶的行進行【增/刪/改】前後的行為。

1、基本語法

例一插入前:

示例二插入後:

同樣的刪,改,查都是同樣的道理。

特別的:NEW表示即將插入的數據行,OLD表示即將刪除的數據行。

2、刪除觸發器

3、使用觸發器

觸發器無法由用戶直接調用,而知由於對錶的【增/刪/改】操作被動引發的。

看完本文有收穫?請轉發分享給更多人

關注「Python那些事」,做全棧開發工程師

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python那些事 的精彩文章:

如何抓取貓眼電影Top100的影片信息?

TAG:Python那些事 |