本文實例講述了Mysql數據庫高級用法之視圖、事務、索引、自連接、用戶管理。分享給大家供大家參考,具體如下:
視圖
視圖是對若干張基本表的引用,一張虛表,只查詢語句執行結果的字段類型和約束,不存儲具體的數據(基本表數據發生了改變,視圖也會跟著改變),方便操作,特別是查詢操作,減少復雜的SQL語句,增強可讀性。
1.————創建視圖:
1
|
create view 視圖名稱(一般以v_開頭) as 查詢語句; |
2.————查看視圖:
1
|
select * from 視圖名稱; |
3.————刪除視圖:
1
|
drop view 視圖名稱; |
事務
1.特性:四大特性ACID
(1)原子性(Atomicity):一個事務必須被視為一個不可分割的最小工作單元,整個事務 中的所有操作要么全部提交成功,要么全部失敗回滾,對于一個事務來說,不可能只執行其中的一部分操作。
(2)一致性(Consistency):數據庫總是從一個一致性的狀態轉換到另一個一致性的狀態。
(3)隔離性(Isolation):一個事務所做的修改在最終提交以前,對其他事務是不可見的。
(4)持久性(Durability):一旦事務提交,則其所做的修改會永久保存到數據庫。
2.使用:
(1)開啟事務:開啟事務后執行修改命令,變更會為護到本地緩存,而不是物理表中。
begin;
或者start transaction;
(2)回滾事務:放棄緩存中變更的數據,表示事務執行失敗,回到開始事務的狀態。
rollback;
(3)提交事務:將緩存中的數據變更維護到物理表中。
commit;
索引
索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的位置信息,更通俗的說,數據庫索引好比是一本書前面的目錄,能加快數據庫的查詢速度。
1.使用:
(1)————查看索引:
1
|
show index from 表名; |
(2)————創建索引:
1
|
create index 索引名稱 on 表名(字段名稱(長度)); |
(3)————刪除索引:
1
|
drop index 索引名稱 on 表名; |
2.驗證性能:
(1)開啟運行時間檢測:
1
|
set profiling=1; |
(2)查找第十萬條數據:
1
|
select * from test_index where title= 'ha-99999' ; |
(3)為表建立索引:
1
|
create index title_index on test_index(title(10)); |
(4)查找第十萬條數據:
1
|
select * from test_index where title= 'ha-99999' ; |
(5)查看執行時間:
1
|
show profiles; |
總結:索引可以極大提升查詢速度,但是創建索引的時間比查詢的速度要慢很多,所以 數據表經常更新時,不適合使用索引,當數據表數據很大時,并且長時間不更新時,建 議使用索引,其他情況不建議使用。
用戶管理
1.————查看用戶:
1
|
select host, user ,authentication_string from user ; |
————查看用戶權限:
1
|
show grants for 用戶名@主機; |
2.————創建用戶并賦予權限:'
1
|
grant 權限名稱 on 數據庫名.* to ‘用戶名 '@' 主機 ' identified by ‘密碼' ; |
3.————修改權限:
1
|
grant 權限名稱 on 數據庫名.* to ‘用戶名 '@' 主機' where grant option ; |
刷新權限:
1
|
flush privileges ; |
4.————修改密碼:
1
|
update user set authentication_string= password (‘新密碼 ') where user=' 用戶名'; |
5.————刪除用戶:
卸載:
1
|
drop drop user ‘用戶名 '@' 主機'; |
手動刪除:
1
|
delete from user where user = '用戶名' ; |
刷新權限:
1
|
flush privileges ; |
自連接
將多張相似表的數據匯總到一個表中,將自己與自己相連接進行查詢。
1.————用法:
1
|
select * from 表名 as 別名1 inner join 表名 as 別名2 on 條件; |
2.————案例:
aid為編號,pid為所屬編號
查詢山西省的所有城市:
1
2
|
select city.* from areas as cityinner join areas as province on city.pid=province.aidwhere province.atitle= '山西省' ; |
希望本文所述對大家MySQL數據庫計有所幫助。
原文鏈接:https://blog.csdn.net/zsh142537/article/details/82659409