MYSQL資料庫高階用法
文章目錄
檢視
什麼是檢視
當我們在關聯多個表進行操作的時候,往往需要一大串程式碼。這時候我們就可以建立一個虛表
我們還可以在子表關聯主表時建立檢視,讓子表直接關聯檢視,這樣的話當我們對主表進行修改時只需要更改檢視的關聯程式碼即可,而不需要再對所有子表進行一一修改。
建立檢視:
建立檢視的語句是:create view 檢視名 as select語句;
create view 檢視名 as select * from students;
這樣,我們就建立了一個和students表一模一樣的虛表。
檢視檢視
show tables;
使用檢視
select * from 檢視名
刪除檢視
drop view 檢視名
事務
什麼是事務
事務Transaction,是指作為一個基本工作單元執行的一系列SQL語句的操作,要麼完全地執行,要麼完全地都不執行。
簡單的說,事務會把處在事務語句中的程式碼快取起來暫不執行。到所有程式碼讀取完畢會一起執行,從而能保證資料不會丟失。
事務的四大特性ACID
原子性(Atomicity)
一個事務將會像原子一樣被視為一個不可分割的整體。事務中的所有語句組合在一起就相當於是一條語句。
一致性(Consistency)
資料庫總是從一種狀態直接轉換到另一種狀態,事務中的語句,要麼都被執行,要麼都不被執行。其狀態是一致的。
隔離性(Isolation)
如果事務還沒有結束,那麼前邊做過的修改將不會被其他地方檢視到。
永續性(Durability)
只要事務結束時提交確認,那麼修改將不可撤回。若在事務結束時rollback,那麼資料將回滾到事務執行前的狀態。
事務的使用
使用事務前,應先確認表的引擎型別,必須是innodb型別的表才可以使用事務。MySQL表格預設的引擎型別就是innodb。
事務的使用形式是:
- 開啟事務
- sql語句
- 提交或回滾
開啟事務
begin; 或 start transaction;
提交事務
commit;
回滾事務
rollback;
索引
給資料庫新增索引可以大大減少查詢資料是的時間消耗,但是索引相當於額外添加了一個欄位,會增加空間消耗。
檢視已有索引
show index from 表名;
建立索引
create index 索引名 on 表名(欄位名(長度));
刪除索引
drop index 索引名 on 表名;
使用者管理
在MySQL資料庫中:根據賬戶所具有的許可權的不同,MySQL的賬戶可以分為以下幾種
- 服務例項級賬號:,啟動了一個mysqld,即為一個數據庫例項;如果某使用者如root,擁有服務例項級分配的許可權,那麼該賬號就可以刪除所有的資料庫、連同這些庫中的表
- 資料庫級別賬號:對特定資料庫執行增刪改查的所有操作
- 資料表級別賬號:對特定表執行增刪改查等所有操作
- 欄位級別的許可權:對某些表的特定欄位進行操作
- 儲存程式級別的賬號:對儲存程式進行增刪改查的操作
注意:進行賬戶操作時,需要使用root賬戶登入,這個賬戶擁有最高的例項級許可權。賬戶的操作主要包括建立賬戶、刪除賬戶、修改密碼、授權許可權等。
- 進入mysql
use mysql;
- 檢視user表結構
desc user;
- 檢視所有使用者,允許訪問的主機及密碼
select user,host,authentication_string from user;
- 建立使用者
grant 許可權列表 on 資料庫 to ‘使用者名稱’@‘訪問主機’ identified by ‘密碼’;
- 修改使用者許可權
grant 許可權名稱 on 資料庫 to 賬戶@主機 with grant option;
- 修改密碼
update user set authentication_string=password(‘新密碼’) where user=‘使用者名稱’;
修改完成後,需要用 flush privileges 來重新整理許可權.
- 刪除使用者
drop user ‘使用者名稱’@‘主機’;
delete from user where user=‘使用者名稱’;
以上兩種方法任一都可以,刪除後用 flush privileges 來重新整理許可權.