索引
定義:索引是由數(shù)據(jù)庫表中一列或者多列組合而成,其作用是提高對表中數(shù)據(jù)的查詢速度摩梧;
類似于圖書的目錄物延,方便快速定位,尋找指定的內(nèi)容障本;
分類:
1教届,普通索引:這類索引可以創(chuàng)建在任何數(shù)據(jù)類型中;
2驾霜,唯一性索引:使用 UNIQUE 參數(shù)可以設置案训,在創(chuàng)建唯一性索引時,限制該索引的值必須是唯一的粪糙;
3强霎,全文索引:使用 FULLTEXT 參數(shù)可以設置,全文索引只能創(chuàng)建在 CHAR蓉冈,VARCHAR城舞,TEXT 類型的字段上。主要作用就是提高查詢較大字符串類型的速度寞酿;只有 MyISAM 引擎支持該索引家夺,Mysql 默認引擎不支持;
4伐弹,單列索引:在表中可以給單個字段創(chuàng)建索引拉馋,單列索引可以是普通索引,也可以是唯一性索引惨好,還可以是全文索引煌茴;
5,多列索引:多列索引是在表的多個字段上創(chuàng)建一個索引日川;
6蔓腐,空間索引:使用 SPATIAL 參數(shù)可以設置空間索引×渚洌空間索引只能建立在空間數(shù)據(jù)類型上回论,這樣可以提高系統(tǒng)獲取空間數(shù)據(jù)的效率;只有 MyISAM 引擎支持該索引分歇,Mysql 默認引擎不支持透葛;
目的:就是為了提高數(shù)據(jù)的檢索速度。
數(shù)據(jù)庫的索引類似于書籍的索引卿樱。在書籍中僚害,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息。在數(shù)據(jù)庫中,索引也允許數(shù)據(jù)庫程序迅速地找到表中的數(shù)據(jù)萨蚕,而不必掃描整個數(shù)據(jù)庫.
索引的優(yōu)點:1.創(chuàng)建唯一性索引靶草,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性??2.大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因??3.減少磁盤IO(向字典一樣可以直接定位)
索引的缺點:1.創(chuàng)建索引和維護索引要耗費時間岳遥,這種時間隨著數(shù)據(jù)量的增加而增加??2.索引需要占用額外的物理空間??3.當對表中的數(shù)據(jù)進行增加奕翔、刪除和修改的時候,索引也要動態(tài)的維護浩蓉,降低了數(shù)據(jù)的維護速度
視圖
1派继,視圖是一種虛擬的表,是從數(shù)據(jù)庫中一個或者多個表中導出來的表捻艳。
2驾窟,數(shù)據(jù)庫中只存放了視圖的定義,而并沒有存放視圖中的數(shù)據(jù)认轨,這些數(shù)據(jù)存放在原來的表中绅络。刪除視圖是指刪除數(shù)據(jù)庫中已存在的視圖。刪除視圖時嘁字,只能刪除視圖的定義恩急,不會刪除數(shù)據(jù);
3纪蜒,使用視圖查詢數(shù)據(jù)時衷恭,數(shù)據(jù)庫系統(tǒng)會從原來的表中取出對應的數(shù)據(jù)。
作用:
1纯续,使操作簡便化随珠;
2,增加數(shù)據(jù)的安全性杆烁;
3,提高表的邏輯獨立性简卧;
提供了另外一種級別的表安全性:隱藏了一些關(guān)鍵的字段兔魂;簡化的用戶的SQL命令;隔離基表結(jié)構(gòu)的改變
存儲過程(函數(shù))
可以包含邏輯判斷的sql語句集合举娩。是經(jīng)過預編譯析校,存在于數(shù)據(jù)庫中。通過調(diào)用指定存儲過程的名字(可有參铜涉,可無參)來執(zhí)行智玻。
存儲過程和函數(shù)是在數(shù)據(jù)庫中定義一些 SQL 語句的集合,然后直接調(diào)用這些存儲過程和函數(shù)來執(zhí)行已經(jīng)定義好的 SQL 語句芙代。存儲過程和函數(shù)可以避免開發(fā)人員重復的編寫相同的 SQL 語句吊奢。而且,存儲過程和函數(shù)是在 MySQL服務器中存儲和執(zhí)行的纹烹,可以減少客戶端和服務器端的數(shù)據(jù)傳輸页滚;
優(yōu)點:
簡化了復雜的業(yè)務邏輯召边,根據(jù)需要可重復使用;
屏蔽了底層細節(jié)裹驰,不暴露表信息即可完成操作隧熙;
降低網(wǎng)絡的通信量,多條語句可以封裝成一個存儲過程來執(zhí)行幻林;
設置訪問權(quán)限來提高安全性贞盯;
提高執(zhí)行效率,因為它是預編譯以及存儲在數(shù)據(jù)庫中沪饺。
缺點:
可移植性差躏敢,相同的存儲過程并不能跨多個數(shù)據(jù)庫進行操作;
大量使用存儲過程后随闽,首先會使服務器壓力增大父丰,而且維護難度逐漸增加。
觸發(fā)器
觸發(fā)器(TRIGGER)是由事件來觸發(fā)某個操作掘宪。這些事件包括 INSERT 語句蛾扇、UPDATE 語句和 DELETE 語句。
當數(shù)據(jù)庫系統(tǒng)執(zhí)行這些事件時魏滚,就會激活觸發(fā)器執(zhí)行相應的操作镀首。
具體舉例:
1、 在一個表中定義的語句級的觸發(fā)器鼠次,當這個表被刪除時更哄,程序就會自動執(zhí)行觸發(fā)器里面定義的操作過程。這個就是刪除表的操作就是觸發(fā)器執(zhí)行的條件了腥寇。
2成翩、 在一個表中定義了行級的觸發(fā)器,那當這個表中一行數(shù)據(jù)發(fā)生變化的時候赦役,比如刪除了一行記錄麻敌,那觸發(fā)器也會被自動執(zhí)行了。
如:在發(fā)表日志成功后自動推送到好友的朋友圈