1. 程式人生 > >mysql之視圖,觸發器,存儲過程,事物,函數

mysql之視圖,觸發器,存儲過程,事物,函數

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之視圖,觸發器,存儲過程,事物,函數