檢視、事物、索引
阿新 • • 發佈:2018-12-10
1.檢視: 1.什麼是檢視,有什麼用? 檢視是通過select查詢出來的結果集,是一個虛擬的表,當在檢視複雜的表時 可建立檢視方便二次檢視,檢視封裝了對多張基本表的複雜操作,簡化使用者操作 2.檢視的特點: 檢視是對若干張基本表的引用,一張虛表,查詢語句執行的結果,不儲存具體的 資料(基本表資料發生了改變,檢視也會跟著改變) 3.定義檢視: 語法:create view 檢視名稱 as 查詢語句 例:create view v_goods as (select g.id,g.name,c.name as "cate_name",b.name as "brand_name",g.price,g.is_show from goods as g inner join goods_cates as c inner join goods_brands as b on g.cate_id=c.id and g.brand_id=b.id); 4.使用檢視: 1.使用檢視: select * from 檢視名稱 2.刪除檢視:drop view 檢視名稱 5.檢視的優缺點:(面試題) 1.優點: 1.簡化查詢操作,對於複雜的查詢,往往是由多個數據表進行關聯而得到, 對於這個複雜的查詢結果儲存為一個檢視,便於下一次查詢時簡化查詢操作 2.邏輯上的獨立性,遮蔽了真實表結構更改帶來的影響 3.檢視能夠對機密資料提供一定的安全保護,因為檢視是虛擬的,物理上是 不存在的,我們可以將基表中重要的欄位不給使用者檢視 2.不足: 1.效能差,對檢視的查詢最終轉換為對基表的查詢,如果這個檢視由多個復 雜的表查詢所定義,那麼即使是檢視查詢一個簡單的,也會花費一定時間 2.額外增加資料庫的複雜度,比如有50個基本表,就得要50 個檢視 一共 就有100個表了 2.事物: 1.事物是什麼? 事物是一個操作序列,這些操作要麼都執行,要麼都不執行,他是一個不可分割 的執行單位 2.事物的ACID特性(面試題) 1.原子性(Atomic):語句不可分割,要麼同時執行,要麼同時不執行 2.一致性(Consistency):資料庫總是從一個一致性的狀態轉換到另一個一致性 的狀態,(也可以說是從一個預期性的狀態到另一個預期性的狀態,比如銀行取錢,兩個賬戶預期總和都是600,一個使用者有100,另一個有500,現在要從有500的使用者轉100給另一個100的使用者,到最後他們兩者的預期總和應該還是600,這就是所謂的一致性,要麼都有,要麼都沒有) 3.隔離性(lsolation):一個事物所做的修改在最終提交前,對其他事物是不可 見的 4.永續性(Durability):一旦事物提交,其所做的修改會永久儲存到資料庫中 3.mysql事物的使用: 1.在python訪問mysql資料庫中,預設開啟事物,所以對於增刪改。只要提交事 物即可(connection.commit) 2.開啟事物命令: 1.start transaction; 2.begin; 3.提交事物命令:commit:把修改的資料持久化的儲存在資料庫中 4.事物的回滾: rollback:回滾到事物執行的初始狀態(指還沒有永續性的儲存在資料庫 中,只是在快取區中) 當我們不需要mysql命令列自動提交的時候 鍵入set autocommit=0即可 5.原子的ACID特性 事務有原子性、一致性、隔離性、永續性 原子性強調事務中的多個操作時一個整體 一致性強調資料庫中不會儲存不一致狀態 隔離性強調資料庫中事務之間相互不可見 永續性強調資料庫能永久儲存資料,一旦提交就不可撤銷 3.索引: 1.何為索引: 索引是一種特殊的檔案(innoDB資料表上的索引是表空間的一個組成部分),他們 包含著對資料表中所有的記錄的引用指標,作用是能夠加快資料庫的查詢速度 2.索引的原理: 內部具體實現方案:B+數 3.索引使用: 1.檢視索引: show index from 表名; show index from goods; 2.建立索引: create index 索引名稱 on 表名(欄位名稱(長度)) create index name_index on goods(name(150)) 3.刪除索引: drop index 索引名稱 on 表名字 drop index name_index on goods; 4.索引的注意點(面試題): 1.索引最主要解決的問題:當資料量較大時,且這些資料不需要經常修改, 使用索引來加快查詢速度 2.對於較小的表,查詢開銷不是很大,也沒有必要建立另外的索引 3.建立太多索引將會影響更新和插入的速度,因為他需要同樣更新每個索引 檔案 4.對於一個經常需要更新和插入的表格,就沒有必要為一個很少使用的 where字句單獨建立索引 5.建立索引會佔用磁碟空間