SQLite – CONSTRAINTS(約束)
約束是數據列在表上執行的規則。這些是用來限制的數據類型可以進入一個表。這樣可以確保數據的准確性和可靠性在數據庫中。
級或表級約束可以列。列級約束是僅適用於一個列在表級約束應用於整個表。
以下是常用的約束在SQLite。
-
NOT NULL Constraint: 確保列不能為空值。
-
DEFAULT Constraint : 提供了一個列的默認值時沒有指定。
-
UNIQUE Constraint: 確保列中的所有值是不同的。
-
PRIMARY Key: 惟一地標識每個行/記錄在一個數據庫表中。
-
CHECK Constraint: 檢查約束確保列中的所有值滿足某些條件。
Not Null Constraint約束
默認情況下,一個列可以容納NULL值。如果你不想要一個列有一個空值,那么您需要定義這些約束在這列指定NULL列現在不允許。
空不等於沒有數據,相反,它代表了未知數據。
例子:
例如,下面的SQLite語句創建一個新的表稱為公司,增加了五列,三,ID和姓名和年齡,不接受指定null:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
DEFAUL約束
默認約束提供了一個默認值時,一列插入語句不提供一個特定的值。
例子:
例如,下面的SQLite語句創建一個新的表稱為公司和5列補充道。這里,薪水列默認設置為5000.00,所以如果插入語句為本專欄不提供一個值,那么默認情況下,本專欄將被設置為5000.00。
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL DEFAULT 50000.00
);
UUNIQUE(唯一)約束
獨特的約束阻止兩個記錄有相同的值在一個特定的列。公司的表,例如,您可能想要阻止兩個或兩個以上的人擁有相同的年齡。
例子:
例如,下面的SQLite語句創建一個新的表稱為公司和5列補充道。列在這里,年齡是獨一無二的,所以你不能有兩個記錄相同的年齡:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL UNIQUE,
ADDRESS CHAR(50),
SALARY REAL DEFAULT 50000.00
);
PRIMARY KEY約束
主鍵約束惟一地標識每個記錄在一個數據庫表中。可以有更多獨特的列,但只有一個表中的主鍵。主鍵是重要的在設計數據庫表。主鍵是唯一的id。
我們用它們來參考表行。主鍵成為其他表的外鍵,當創建表之間的關系。由於長期存在的編碼監督,主鍵在SQLite可以為空。與其他數據庫情況並非如此。
主鍵是表中的一個字段唯一地標識每一行/記錄在一個數據庫表中。主鍵必須包含唯一的值。一個主鍵列不能為空值。
一個表只能有一個主鍵,可能由單個或多個字段。當使用多個字段主鍵,他們被稱為一個composite key(復合鍵)。
如果一個表定義一個主鍵字段(s),那么你不能有兩個記錄有相同的值,字段(s)。如果一個表上定義一個主鍵
例子:
你已經看過上面各種示例,我們創造了公司的表與ID主鍵:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Check約束
檢查約束使條件檢查進入一個記錄的值。如果條件的求值結果為false,記錄違反約束,不輸入到表。
CREATE TABLE COMPANY3(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL CHECK(SALARY > 0)
);
Dropping約束:
SQLite支持有限子集的ALTER TABLE。SQLite的ALTER TABLE命令允許用戶重命名一個表或添加一個新的列到現有的表。不能重命名一個列,刪除一列,或者從一個表添加或刪除約束。