SQLite 約束
約束數據表列執行的規則。這些是用來限製可以去到一個表中的不同的數據。這確保數據庫中的數據的準確性和可靠性。
約束可以是列級或表級。僅適用於表級約束被應用到整個表的一列列級約束。
以下是可在SQLite常用的約束。
-
NOT NULL Constraint: 確保一列不能有NULL值。
-
DEFAULT Constraint : 提供一列冇有指定時的默認值。
-
UNIQUE Constraint: 確保所有列中的值是不同(唯一)的。
-
PRIMARY Key: 唯一標識數據庫表中的各行/記錄。
-
CHECK Constraint: CHECK約束,確保一列中的所有值滿足一定條件。
NOT NULL 約束
默認情況下,列可以保存NULL值。如果你不想一列有一個NULL值,那麼需要定義現在不允許該列在此列指定NULL約束。
NULL是不一樣的,因為冇有數據,而是它代表著未知的數據。
示例:
例如,以下的SQLite語句創建一個新的表COMPANY,並增加了五列,其中三個ID和姓名和年齡,指定不接受空值(NULL):
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL );
DEFAULT 約束
DEFAULT約束提供了一個默認值一列INSERT INTO語句時不提供一個特定的值。
示例:
例如,以下的SQLite語句創建一個新的表COMPANY,並增加了五列。在這裡,工資列設置為5000.00默認情況下,INSERT INTO語句不提供此列的值,則默認情況下,該列將被設定為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 );
UNIQUE 約束
唯一約束防止兩個記錄在一個特定的列具有相同的值。在COMPANY表,例如,您可能要防止兩個或兩個以上的人具有相同的年齡。
示例:
例如,以下的SQLite語句創建一個新的表稱為COMPANY,並增加了五列。在這裡,年齡列設置為唯一的,所以不能有兩個同年齡記錄:
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 約束
數據庫表中的主鍵約束唯一標識每個記錄。可以有多個UNIQUE的列,但在一個表中隻有一個主鍵。在設計數據庫表的主鍵是重要的。主鍵是唯一的ID。
我們用他們來引用表中的行。通過主鍵成為其他表的外鍵,在創建表之間的關係。由於“長期存在編碼監督”,可以為NULL的主鍵在SQLite。這是與其他數據庫的情況下
主鍵是唯一標識數據庫表中的各行/記錄表中的一個字段。通過主鍵必須包含唯一值。主鍵列不能有NULL值。
一個表隻能有一個主鍵,它可以由一個或多個字段。當多個字段作為主鍵,它們被稱為複合鍵。
如果一個表有任何字段上定義一個主鍵,那麼不能有兩個記錄具有相同的值在該字段。
示例:
已經看到了我們創建COMAPNY表ID作為主鍵上麵的各種例子:
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL );
CHECK約束
CHECK約束允許的條件進入一條記錄檢查值。如果條件值為false,記錄違反了約束,並冇有進入到表。
示例:
例如,以下的SQLite創建一個新的表COMPANY,並增加了五列。在這裡,我們添加CHECK薪金列,所以不能有任何的零工資:
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) );
刪除約束:
SQLite支持ALTER TABLE的有限子集。在SQLite ALTER TABLE命令允許用戶重命名表或現有表添加一個新的列。這是不可能的重命名列,刪除一列,或從一個表中添加或刪除的約束。