MySQL基礎知識分享(二)

ikestu小猪發表於2024-08-04

寫在前面

大家好,不知道前面的20題大家寫的怎麼樣,前面分享的20題是SQL中查詢的基礎題型,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下面就讓我來介紹MySQL中的TCL部分,也就是事務部分。

ACID四大特性

事務的概述

事務的ACID特性可以確保銀行不會弄丟你的錢。而在應用邏輯中,要實現這一點非常難, 甚至可以說是不可能完成的任務。一個相容ACID的資料庫系統,需要做很多複雜但可能使用者並沒有覺察到的工作,才能確保ACID的實現。

原子性(Atomicity)

單個事務,為一個不可分割的最小工作單元,整個事務中的所有操作要麼全部commit成功,要麼全部失敗rollback,對於一個事務來說,不可能只執行其中的一部分SQL操作,這就是事務的原子性。

一致性(Consistency)

資料庫總是從一個一致性的狀態轉換到另外一個一致性的狀態。在前面的例子中, 一致性確保了,即使在執行第三、四條語句之間時系統崩潰,信用卡賬戶也不會損 失100塊,因為事務最終沒有提交,所以事務中所做的修改也不會儲存到資料庫中,保證資料一致性。

隔離性(Isolation)

通常來說,一個事務所做的修改在最終提交以前,對其他事務是不可見的。在前面 的例子中,當執行完第三條語句、第四條語句還未開始時,此時有另外一個賬戶查詢餘額SQL開始執行,則其看到的信用卡賬戶的餘額並沒有被減去100元。

永續性(Durability)

一旦事務提交,則其所做的修改就會永久儲存到資料庫中。此時即使系統崩潰,修改的資料也不會丟失。

事務的執行

步驟1:開啟事務
set autocommit=0;
start transaction;可選的
步驟2:編寫事務中的sql語句(select insert update delete)
語句1;
語句2;
......
步驟3:結束事務
commit;提交事務
rollback;回滾事務
savepoint 節點名; 設定儲存點

檢視mysql引擎

show ENGINES;

檢視事務是否開啟

SHOW VARIABLES LIKE 'autocommit';

事務的隔離級別

髒讀 不可重複讀 幻讀
read uncommitted
read committed
repeatable read
serializable

mysql中預設 第三個隔離級別 repeatable read

檢視隔離級別
select @@tx_isolation;
mac中檢視:select @@transaction_isolation

設定隔離級別
set session|global transaction isolation level 隔離級別;

設定儲存點

savepoint 節點名; 設定儲存點

set autocommit=0;
START TRANSACTION;
DELETE FROM account WHERE id= 1;
SAVEPOINT a; -- 設定儲存點 
DELETE FROM account WHERE id= 2;
ROLLBACK TO a; -- 回滾到儲存點 

檢視

建立檢視

語法:

create view 檢視名
as
查詢語句;
		CREATE VIEW myv1 
AS
SELECT last_name,
			 department_name,
			 job_title
FROM
	employees e 
JOIN departments d ON e.department_id = d.department_id 
JOIN jobs j ON j.job_id = e.job_id ;

修改檢視

方式一:
create or replace view 檢視名
as 
查詢語句;

方式二:
alter view 檢視名
as 
查詢語句;

舉例:

方式一:
CREATE OR REPLACE VIEW myv1 
AS
SELECT 
	department_name,
	job_title
FROM
	employees e 
JOIN departments d ON e.department_id = d.department_id 
JOIN jobs j ON j.job_id = e.job_id ;

方式二:
ALTER VIEW myv1
as
SELECT 
			 *
FROM
	employees ;

刪除檢視

語法:

drop view 檢視名,檢視名......;
drop VIEW myv1 ;

好了,今天的分享就到這裡了,接下來我將分享一些關於MySQL部分的面試題,希望大家都能在MySQL面試中脫穎而出!

相關文章