mysql之視圖,觸發器,存儲過程,事物,函數
阿新 • • 發佈:2018-05-14
left 查詢 pre 其中 原理 reat 結果集 索引 節點
視圖
視圖:是一個虛擬表(非真實存在),其本質是【根據SQL語句獲取動態的數據集,並為其命名】,用戶使用時只需使用【名稱】即可獲取結果集,可以將該結果集當做表來使用。
語法:CREATE VIEW 視圖名稱 AS SQL語句
強調1、在硬盤中,視圖只有表結構文件,沒有表數據文件
2、視圖通常是用於插敘,盡量不要修改視圖中的數據
觸發器
觸發器:是使用觸發器可以定制用戶對表進行【增、刪、改】操作時前後的行為,註意:沒有查詢
事務
事務:是用於將某些操作的多個SQL操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證數據庫數據完整性。其中的多個sql語句稱之為事務的原子性
存儲過程
存儲過程:是包含了一系列可執行的sql語句,存儲過程存放於MySQL中,通過調用它的名字可以執行其內部的一堆sql
優點:
1. 用於替代程序寫的SQL語句,實現程序與sql解耦
2. 基於網絡傳輸,傳別名的數據量小,而直接傳sql數據量大
缺點:程序員擴展功能不方便
程序與數據庫結合使用的三種方式:
方式一:MySQL:存儲過程程序:調用存儲過程
方式二:MySQL:無 程序:純SQL語句
方式三:MySQL:無 程序:類和對象,即ORM(本質還是純SQL語句)
索引原理與慢查詢優化
01 為什麽要用索引
對於一個應用來說,對數據庫的讀寫比例基本上是10:1,即讀多寫少
而且對於寫來說極少出現性能問題,大多數性能問題都是慢查詢
提到加速查,就必須用到索引
02 什麽是索引
索引就相當於書的目錄,是mysql中一種專門的數據結構,稱為key,
索引的本質原理就是通過不斷地縮小查詢範圍,來降低io次數從而提升查詢性能
強調:一旦為表創建了索引,以後的查詢都會先查索引,再根據索引定位的結果去找數據
03 索引的影響
1、在表中有大量數據的前提下,創建索引速度會很慢,
2、在索引創建完畢後,對表的查詢性能會大幅度提升,但是寫性能會降低
04 聚集索引(primary key)
特點:葉子節點存放的一整條數據
05 輔助索引(unique,index)
特點:
如果是按照這個字段創建的索引,
那麽葉子節點存放的是:{名字:名字所在那條記錄的主鍵的值}
覆蓋索引:只在輔助索引的葉子節點中就已經找到了所有我們想要的數據
select name from user where name=‘egon‘;
select age from user where name=‘egon‘;
mysql之視圖,觸發器,存儲過程,事物,函數