12.MYSQL高级(二)
1.視圖(重點
視圖本質就是對查詢的封裝,定義視圖,建議以v_開頭
create view 視圖名稱 as select語句;
例:創建視圖,查詢學生對應的成績信息
create view v_stu_sco as
select students.*,scores.score from scores
inner join students on scores.stuid=students.id;
查看視圖:查看表會將所有的視圖也列出來
show tables;
刪除視圖
dropview 視圖名稱;
例:drop view v_stu_sco;
使用:視圖的用途就是查詢
select * from v_stu_score;
?
2.事務
事務(Transaction)是并發控制的基本單位。所謂事務,它是一個操作序列,這些操作要么都執行,要么都不執行,它是一個不可分割的工作單位。事務是數據庫維護數據一致性的單位,在每個事務結束時,都能保持數據一致性。
?
事務四大特性(簡稱ACID)
1.原子性(Atomicity):事務中的全部操作在數據庫中是不可分割的,要么全部完成,要么均不執行
2.一致性(Consistency):幾個并行執行的事務,其執行結果必須與按某一順序串行執行的結果相一致
3.隔離性(Isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的
4.持久性(Durability):對于任意已提交事務,系統必須保證該事務對數據庫的改變不被丟失,即使數據庫出現故障
?
- 查看表的創建語句show create table students;
- 開啟事務,命令如下:begin;
- 提交事務,命令如下:commit;
- 回滾事務,命令如下:rollback;
?
?
3.索引(重點
主鍵和唯一索引,都是索引,可以提高查詢速度
主鍵是數據物理存儲的位置
索引會單獨創建一個目錄,對應數據的位置
索引分單列索引和組合索引
單列索引,即一個索引只包含單個列,一個表可以有多個單列索引
組合索引,即一個索引包含多個列
?
語法
查看索引show indexfrom 表名;
創建索引
- 如果指定字段是字符串,需要指定長度,建議長度與定義字段時的長度一致
- 字段類型如果不是字符串,可以不填寫長度部分
create index 索引名稱 on 表名(字段名稱(長度))
- 刪除索引:
drop index 索引名稱 on 表名;
缺點
雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行INSERT、UPDATE和DELETE,因為更新表時,MySQL不僅要保存數據,還要保存一下索引文件
- 建立索引會占用磁盤空間的索引文件
?
?
示例
?
創建測試表testindex
create table test_index(titlevarchar(10));
向表中加入十萬條數據
- 創建存儲過程proc_test,在存儲過程中實現插入數據的操作
?
- step1:定義分割符
delimiter //
- step2:定義存儲過程
create procedureproc_test()
begin
declare i int default 0;
while i < 100000 do
insert into test_index(title) values(concat('test',i));
set i=i+1;
end while;
end //
- step3:還原分割符
delimiter ;
- 執行存儲過程proc_test
call proc_test();
總結
以上是生活随笔為你收集整理的12.MYSQL高级(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 中操作 MySQL 步骤
- 下一篇: 原生态HTML文件上传与下载