視圖
視圖: view, 是一種有結構(有行有列)但是沒結果(結構中不真實存放數據)的虛擬表, 虛擬表的結構來源不是自己定義, 而是從對應的基表中產生(視圖的數據來源).
創建視圖
基本語法
create view 視圖名字 as select語句; (as不可省略)
創建單表視圖: 基表只有一個
創建多表視圖: 基表來源至少兩個

查看視圖
查看視圖: 查看視圖的結構
視圖是一張虛擬表: 表, 表的所有查看方式都適用于視圖: show tables [like]/desc 視圖名字/show create table 視圖名;

視圖一旦創建: 系統會在視圖對應的數據庫文件夾下創建一個對應的結構文件: frm文件

使用視圖
使用視圖主要是為了查詢: 將視圖當做表一樣查詢即可.( 其實本質就是執行封裝的select語句.)

修改視圖
視圖本身不可修改, 但是視圖的來源是可以修改的.
修改視圖: 修改視圖本身的來源語句(select語句)
alter view 視圖名字 as 新的select語句;


刪除視圖
drop table/view 視圖名字;

視圖意義
1. 節省SQL語句: 將一條復雜的查詢語句使用視圖進行保存: 以后可以直接對視圖進行操作(你搜索了一個好的網站,收藏下,下次就不用搜索)
2. 數據安全: 視圖操作是主要針對查詢的, 如果對視圖結構進行處理(刪除), 不會影響基表數據(相對安全).
3. 視圖往往是在大項目中使用, 而且是多系統使用: 可以對外提供有用的數據, 但是隱藏關鍵(無用)的數據(數據安全)
4. 視圖可以對外提供友好型: 不同的視圖提供不同的數據, 對外好像專門設計
5. 視圖可以更好(容易)的進行權限控制
事務
場景:張三李四銀行賬戶均有5000人民幣,一日,張三給李四轉賬2000,但是張三剛打錢,銀行系統故障。結果是:張三賬戶少了2000,但是李四賬戶還是5000。
學完事務就可以解決這個問題了
事務: transaction, 一系列要發生的連續的操作(注意存儲引擎,InnoDB支持事務)
事務安全: 一種保護連續操作同時滿足(實現)的一種機制
事務安全的意義: 保證數據操作的完整性
事務操作
事務操作分為兩種: 自動事務(默認的), 手動事務
手動事務: 操作流程
1.開啟事務: 告訴系統以下所有的操作(寫)不要直接寫入到數據表, 先存放到事務日志——start transaction;

2.進行事務操作: 一系列操作
a)張三賬戶錢減少
b)李四賬戶錢增加
3.關閉事務: 選擇性的將日志文件中操作的結果保存到數據表(同步)或者說直接清空事務日志(原來操作全部清空)
a) 提交事務: 同步數據表(操作成功): commit;


commit后結果
b) 回滾事務: 直接清空日志表(操作失敗): rollback;

rollback操作
事務原理
事務操作原理: 事務開啟之后, 所有的操作都會臨時保存到事務日志, 事務日志只有在得到commit命令才會同步到數據表,其他任何情況都會清空(rollback, 斷電, 斷開連接)

commit之前

commit之前并沒有多9.99

commit之后
回滾點
回滾點: 在某個成功的操作完成之后, 后續的操作有可能成功有可能失敗, 但是不管成功還是失敗,前面操作都已經成功: 可以在當前成功的位置, 設置一個點: 可以供后續失敗操作返回到該位置, 而不是返回所有操作, 這個點稱之為回滾點.
設置回滾點語法: savepoint 回滾點名字;
回到回滾點語法: rollback to 回滾點名字;
事務特性
事務有四大特性: ACID
A: Atomic原子性, 事務的整個操作是一個整體, 不可分割,要么全部成功,要么全部失敗;
C: Consistency, 一致性, 事務操作的前后, 數據表中的數據沒有變化
I: Isolation, 隔離性, 事務操作是相互隔離不受影響
D: Durability, 持久性, 數據一旦提交, 不可改變,永久的改變數據表數據
鎖機制: innodb默認是行鎖, 但是如果在事務操作的過程中, 沒有使用到索引,那么系統會自動全表檢索數據, 自動升級為表鎖
行鎖: 只有當前行被鎖住, 別的用戶不能操作
表鎖: 整張表被鎖住, 別的用戶都不能操作

新聞熱點
疑難解答