1. 程式人生 > 資料庫 >Mysql資料庫高階用法之檢視、事務、索引、自連線、使用者管理例項分析

Mysql資料庫高階用法之檢視、事務、索引、自連線、使用者管理例項分析

本文例項講述了Mysql資料庫高階用法之檢視、事務、索引、自連線、使用者管理。分享給大家供大家參考,具體如下:

檢視

檢視是對若干張基本表的引用,一張虛表,只查詢語句執行結果的欄位型別和約束,不儲存具體的資料(基本表資料發生了改變,檢視也會跟著改變),方便操作,特別是查詢操作,減少複雜的SQL語句,增強可讀性。

1.————建立檢視:

create view 檢視名稱(一般以v_開頭) as 查詢語句;

2.————檢視檢視:

select * from 檢視名稱;

3.————刪除檢視:

drop view 檢視名稱;

事務

1.特性:四大特性ACID

(1)原子性(Atomicity):一個事務必須被視為一個不可分割的最小工作單元,整個事務 中的所有操作要麼全部提交成功,要麼全部失敗回滾,對於一個事務來說,不可能只執行其中的一部分操作。

(2)一致性(Consistency):資料庫總是從一個一致性的狀態轉換到另一個一致性的狀態。

(3)隔離性(Isolation):一個事務所做的修改在最終提交以前,對其他事務是不可見的。

(4)永續性(Durability):一旦事務提交,則其所做的修改會永久儲存到資料庫。

2.使用:

(1)開啟事務:開啟事務後執行修改命令,變更會為護到本地快取,而不是物理表中。
begin;或者start transaction;

(2)回滾事務:放棄快取中變更的資料,表示事務執行失敗,回到開始事務的狀態。
rollback;

(3)提交事務:將快取中的資料變更維護到物理表中。
commit;

索引

索引是一種特殊的檔案(InnoDB資料表上的索引是表空間的一個組成部分),它們包含著對資料表裡所有記錄的位置資訊,更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。

1.使用:

(1)————檢視索引:

show index from 表名;

(2)————建立索引:

create index 索引名稱 on 表名(欄位名稱(長度));

(3)————刪除索引:

drop index 索引名稱 on 表名;

2.驗證效能:

(1)開啟執行時間檢測:

set profiling=1;

(2)查詢第十萬條資料:

select * from test_index where title='ha-99999';

(3)為表建立索引:

create index title_index on test_index(title(10));

(4)查詢第十萬條資料:

select * from test_index where title='ha-99999';

(5)檢視執行時間:

show profiles; 

總結:索引可以極大提升查詢速度,但是建立索引的時間比查詢的速度要慢很多,所以 資料表經常更新時,不適合使用索引,當資料表資料很大時,並且長時間不更新時,建 議使用索引,其他情況不建議使用。

使用者管理

1.————檢視使用者:

select host,user,authentication_string from user;

————檢視使用者許可權:

show grants for 使用者名稱@主機;

2.————建立使用者並賦予許可權:'

grant 許可權名稱 on 資料庫名.* to ‘使用者名稱'@'主機' identified by ‘密碼';

3.————修改許可權:

grant 許可權名稱 on 資料庫名.* to ‘使用者名稱'@'主機' where grant option;

重新整理許可權:

flush privileges;

4.————修改密碼:

update user set authentication_string=password(‘新密碼') where user='使用者名稱';

5.————刪除使用者:
解除安裝:

drop drop user ‘使用者名稱'@'主機';

手動刪除:

delete from user where user='使用者名稱';

重新整理許可權:

flush privileges;

自連線

將多張相似表的資料彙總到一個表中,將自己與自己相連線進行查詢。

1.————用法:

select * from 表名 as 別名1 inner join 表名 as 別名2 on 條件;

2.————案例:


aid為編號,pid為所屬編號
查詢山西省的所有城市:

select city.* from areas as cityinner join areas as province 
on city.pid=province.aidwhere province.atitle='山西省'; 

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL查詢技巧大全》、《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》

希望本文所述對大家MySQL資料庫計有所幫助。