一、資料庫四大特性五大約束
資料庫四大特性是指:原子性、一致性、隔離性和持久性,下文將根據這四大特性詳細探討五大約束。
1. 實體完整性約束
實體完整性約束用來保證每張表都有一個主鍵,而且不允許為空。它還可以用來防止出現重複的記錄。
<create table students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL,
Address varchar(255),
CLass varchar(255) NOT NULL,
Sex varchar(255) NOT NULL,
Phone varchar(255)
);>
2. 參照完整性約束
參照完整性約束用來保證在一個表中的外鍵使用的參照表中的主鍵是唯一的。它可以防止以後刪除一些記錄帶來的問題。
<create table class(
Class varchar(255) PRIMARY KEY NOT NULL,
HeadTeacher varchar(255) NOT NULL
);
create table students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL,
Address varchar(255),
CLass varchar(255) NOT NULL,
Sex varchar(255) NOT NULL,
Phone varchar(255),
foreign key(CLass) references class(Class)
);>
3. 域完整性約束
域完整性約束用來限制每一個屬性的取值範圍,比如年齡不能小於0。
<create table students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL CHECK (Age > 0),
Address varchar(255),
CLass varchar(255) NOT NULL,
Sex varchar(255) NOT NULL,
Phone varchar(255)
);>
4. 用戶定義完整性約束
用戶定義完整性約束用來進行內容上的限制,比如手機號必須是11位純數字。
<create table users(
Name varchar(255) PRIMARY KEY NOT NULL,
Password varchar(255) NOT NULL,
Email varchar(255) NOT NULL,
Phone varchar(11) NOT NULL CHECK (Phone LIKE '[0-9]%')
);>
5. 觸發器約束
觸發器約束在一張表上設置一個觸發器,在該表中添加、修改或刪除記錄時,觸發器會按照一定規則執行相應操作。
<CREATE TRIGGER update_salary
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
IF NEW.salary > OLD.salary THEN
INSERT INTO record VALUES(OLD.ID, OLD.salary, NEW.salary)
END IF;
END;>
二、資料庫四大特性三大範式
三大範式是指:第一範式(1NF)、第二範式(2NF)和第三範式(3NF),它們屬於逐步消除數據冗餘的策略。下面我們分別簡單介紹一下這三個範式。
1. 第一範式(1NF)
第一範式指每個屬性都是原子性的,不可再分,這是消除重複數據的第一步。
<create table students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL,
Address varchar(255),
CLass varchar(255) NOT NULL,
Sex varchar(255) NOT NULL,
Phone varchar(255)
);>
2. 第二範式(2NF)
第二範式指消除非主屬性對主鍵的部分依賴,即表中任何非主屬性都不能只依賴於主鍵的部分,而應該依賴於整個主鍵。
<create table orders(
OrderID int PRIMARY KEY NOT NULL,
CustomerID varchar(255) NOT NULL,
OrderDate date NOT NULL,
ProductID int NOT NULL,
Quantity int NOT NULL,
Price decimal(18,2) NOT NULL,
foreign key(CustomerID) references customers(CustomerID)
foreign key(ProductID) references products(ProductID)
);>
3. 第三範式(3NF)
第三範式指消除非主屬性對主鍵的傳遞依賴,即當一個非主屬性依賴於另一個非主屬性時,應該將這些非主屬性分別放到獨立的關係中。
<create table orders(
OrderID int PRIMARY KEY NOT NULL,
CustomerID varchar(255) NOT NULL,
OrderDate date NOT NULL,
foreign key(CustomerID) references customers(CustomerID)
);
create table order_details(
OrderID int NOT NULL,
ProductID int NOT NULL,
Quantity int NOT NULL,
Price decimal(18,2) NOT NULL,
foreign key(OrderID) references orders(OrderID)
foreign key(ProductID) references products(ProductID)
);>
三、資料庫四大特性及資料庫隔離級別
資料庫隔離級別用來解決多個事務之間產生的一致性問題,下面我們選擇四種隔離級別來介紹。
1. 讀未提交(read uncommitted)
事務中的改變會馬上被其他事務所見,容易造成臟讀、不可重複讀和幻讀等問題。優點是效率高,缺點是不安全不穩定。
2. 讀已提交(read committed)
事務中的改變只有在提交以後其他事務才能看到,可以避免臟讀,但仍然存在不可重複讀和幻讀的問題。
3. 可重複讀(repeatable read)
在這種隔離級別下,讀取過的數據會被緩存,直到事務結束,保證了事務中所讀取的數據的一致性,同時可以避免臟讀和不可重複讀的問題,但仍然有可能發生幻讀。
4. 序列化(serializable)
將所有事務串列執行,可以避免所有的並發問題,但同時也犧牲了系統的性能。
<SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;
SELECT * FROM students WHERE Age < 20;
COMMIT;>
四、資料庫四大類型
資料庫類型指的是在關係模型中使用到的數據類型。下面我們介紹四種主要的資料庫類型。
1. 數值類型
數值類型分為整型和浮點型,常見的整型有int、bigint、tinyint等,常見的浮點型有float、double等。
<create table students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL,
Score float NOT NULL
);>
2. 字元串類型
字元串類型常見的有char、varchar、text等,char是固定長度的字元串,varchar是變長的字元串,text用來存放更長的字元串。
<create table students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL,
Address text NOT NULL
);>
3. 時間類型
時間類型主要包含date、time、datetime、timestamp等,用來存儲時間或日期相關的數據。
<create table orders(
OrderID int PRIMARY KEY NOT NULL,
OrderDate date NOT NULL,
OrderTime time NOT NULL,
DateTime datetime NOT NULL,
TimeStamp timestamp NOT NULL
);>
4. 二進位類型
二進位類型主要用來存儲二進位數據,如圖片、音頻等。
<create table images(
ImageID int PRIMARY KEY NOT NULL,
ImageData longblob NOT NULL
);>
五、資料庫四大語言
資料庫語言包含DQL(數據查詢語言)、DML(數據操作語言)、DDL(數據定義語言)和DCL(數據控制語言),下面我們將按照不同語言進行介紹。
1. 數據查詢語言(DQL)
數據查詢語言主要用來查詢數據,包括SELECT、FROM、WHERE等關鍵字。
<SELECT * FROM students WHERE Age < 20;>
2. 數據操作語言(DML)
數據操作語言主要用來對數據進行增、刪、改,包括INSERT、UPDATE、DELETE等關鍵字。
<INSERT INTO students(ID, Name, Age) VALUES(1, 'Tom', 20);>
3. 數據定義語言(DDL)
數據定義語言主要用來定義或修改資料庫中的對象,包括CREATE、ALTER、DROP等關鍵字。
<CREATE TABLE students(
ID int PRIMARY KEY NOT NULL,
Name varchar(255) NOT NULL,
Age int NOT NULL
);>
4. 數據控制語言(DCL)
數據控制語言主要用來對資料庫進行控制,包括GRANT、REVOKE等關鍵字。
<GRANT SELECT, UPDATE ON students TO user1;
REVOKE SELECT, UPDATE ON students FROM user2;>
六、資料庫四大範式與資料庫四大原則
資料庫四大範式和四大原則是資料庫設計中的重要概念,下面我們將按照不同範式和原則進行介紹。
1. 第一範式(1NF)
第一範式指每個屬性都是原子性的,不可再分,這是消除重複數據的第一步。在資料庫設計中,應該儘可能使每一列數據都是原子型的數據,也就是不可再分的數據。
2. 第二範式(2NF)
第二範式指消除非主屬性對主鍵的部分依賴,即表中任何非主屬性都不能只依賴於主鍵的部分,而應該依賴於整個主鍵。在資料庫設計中,應該將表中的某一行數據作為一個整體來理解,同時要保證每個表都有一個主鍵。
3. 第三範式(3NF)
第三範式指消除非主屬性對主鍵的傳遞依賴,即當一個非主屬性依賴於另一個非主屬性時,應該將這些非主屬性分別放到獨立的關係中。在資料庫設計中,應該避免表之間的冗餘,保證每個表只存儲相關的數據,不要存儲無關的數據。
4. 資料庫四大原則
資料庫四大原則是指:原子性、一致性、隔離性和持久性,下面我們分別來介紹一下。
5. 原子性
原子性指一個事務
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/204548.html