1. 程式人生 > >12.MYSQL高階(二)

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();