MYSQL 事務和用戶權限
一、 什麽是事務:簡單說,所謂事務就是一組操作,要麽操作都成功要麽都不成功。
二、事務的使用流程
1. 第一步:開啟一個事務,start transaction;
2. 第二步:正常的SQL語句操作,但是這些SQL語句並沒有真正的更改數據庫信息
3.第三步:提交事務,commit,當提交事務後,SQL語句才會被真正的執行,數據庫中的信息會被改變如果,如果要取消第二步的操作可以用 rollback(回滾)語句;
三、事務的特性:原子性(Atomicity)一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
1.原子性:一個事務中的所有操作,要麽全部完成,要麽全部不完成,不會結束在中間的某個環節。如果事務執行的過程中發生錯誤會 回滾到事務開始之前的狀態,就像這個事務從來沒有被執行過一樣。
2.一致性:數據在事務前後保持一致
3.隔離線:某個事務的操作對其他事務不可見
4.持久性:當事務完成後,其影響會被保留下來,不能撤銷。
四、事務使用的註意事項:存儲引擎必須是innodb,因為myisam不支持事務。
五、視圖
1.定義:視圖是由查詢結果形成的一張虛擬表
2.格式:create view 視圖名稱 as select 語句
3.什麽時候用視圖:如果某個查詢結果頻繁的出現並需要使用這個做子查詢,則創建這個視圖。
4.視圖的作用:
1)簡化操作不用進行多表查詢
2)可以進行權限控制把表的權限封閉,但是開放相對應的視圖權限,視圖裏只開放部分數據,比如goods商品表,如果我們不想讓別人看到我們的銷售價格,這時候我們就可以把查看商品的權限封閉,創建一張視圖 create view showGoods as select goods_id,goods_name from goods;不出現銷售價格列表就可以了。
5.視圖的修改:alter view 視圖名 as select 語句;
6.刪除視圖:drop view 視圖1,視圖2;
7.視圖與基本表的關系
1)視圖是表的查詢結果,基本表變了,會影響視圖表的結果
2)從單表中獲取的視圖增改山會影響基本表
3)多表視圖時,可以通過 視圖給某個表插入數據
4)多表視圖時不可以通過視圖刪除數據
5)多表視圖時,可以通過視圖更改數據,註意:在更改時,被更改的數據必須是在視圖中有所體現的,如果在視圖中沒有體現出來,語法沒有錯誤,那麽真實的表也不會被改變
6)註意:包含distinct,group by ,having, union,union all , 聚合函數等 視圖是不可更新的。
一、MySQL常見操作
- 創建用戶:Create user ‘用戶名’@’允許登錄的地址/服務器’ identified by ‘密碼’
- 刪除用戶:drop user ‘用戶名’@’服務器地址’;註意:需要管理員才可以刪除
- 更改密碼
1) 用戶更改自己的密碼:Set password=password(‘密碼’);
2) 管理員更改用戶密碼:Set password for ‘用戶名’@’允許登錄的地址’=password(‘密碼’);
- 為用戶授予權限
1) 格式:grant 權限1,權限2.. on 某庫.某個對象 to ‘用戶名’@’允許登錄的位置’ 【identified by ‘密碼’】;
2) 說明:
l 權限列表,就是,多個權限的名詞,相互之間用逗號分開,比如: select, insert, update
l 也可以寫:all
l 某庫.某個對象,表示,給指定的某個數據庫中的某個“下級單位”賦權;
l 下級單位有:表名,視圖名等
l 其中,有2個特殊的語法:
l *.*: 代表所有數據庫中的所有下級單位;
l 某庫.* :代表指定的該庫中的所有下級單位;
l 3,【identified by ‘密碼’】是可省略部分,如果不省略,就表示賦權的同時,也去修改它的密碼;
l 但:如果該用戶不存儲,此時其實就是創建一個新用戶;並此時就必須設置其密碼了
- 剝奪權限:revoke 權限列表 on 某庫.某個對象 from ‘用戶名’@’允許登錄的位置’
二、忘記登錄密碼的解決方法
- 進入命令行界面,輸入net stop mysql
- mysqld --skip-grant-tables
- 此時可以免密碼登錄:mysql -u root –p
- 登錄後設置新密碼:update mysql.user set authentication_string=password(‘msh8888‘) where user=‘root‘ and Host = ‘localhost‘;
- 刷新權限表flush privileges;
三、SQL語句的分類
- 數據定義語言(DDL):用於創建、修改、和刪除數據庫內的數據結構,如:
1) 創建和刪除數據庫(CREATE DATABASE || DROP DATABASE);
2) 創建、修改、重命名、刪除表(CREATE TABLE || ALTER TABLE|| RENAME TABLE||DROP TABLE);
3) 創建和刪除索引(CREATEINDEX || DROP INDEX)
- 數據查詢語言(DQL):從數據庫中的一個或多個表中查詢數據(SELECT)
- 數據操作語言(DML):修改數據庫中的數據,包括插入(INSERT)、更新(UPDATE)和刪除(DELETE)
- 數據控制語言(DCL):用於對數據庫的訪問,如:
1) 給用戶授予訪問權限(GRANT);
2) 取消用戶訪問權限(REMOKE)
MYSQL 事務和用戶權限