SQL中的六大約束
1、NOT NULL 非空約束
①強制字段列不接受空值
②例如,修改表時添加非空約束,ALTER TABLE student MODIFY COLUMN sname varchar(20) NOT NULL;
2、DEFAULT 默認約束
①用於向列中插入默認值;
②如果沒有規定其他的值,那么會將默認值添加到所有的新記錄中。
③語法舉例:
name varchar(20) default ‘張三’ name默認插入張三的值
ALTER TABLE 表名 ADD 列名 set DEFAULT '數值' 向已有列表中插入默認值
ALTER TABLE 表名 DROP CONSTRAINT 約束名 刪除默認約束
3、PRIMARY KEY 主鍵約束
①約束唯一標識數據庫表中的每條記錄;
②主鍵必須包含唯一的值;
③主鍵列不能為空;
④一個表中主鍵至多有一個;
⑤語法:
StudentId INT NOT NULL PRIMARY KEY 創建學生編號為主鍵
PRIMARY KEY(StudentId) 創建學生編號為主鍵
PRIMARY KEY(StudentId,Email) 創建學生編號和郵箱為聯合主鍵
⑥為已存在的列創建主鍵
ALTER TABLE 表名 ADD PRIMARY KEY(column_name)
⑦刪除主鍵約束
ALTER TABLE 表名 DROP PRIMARY KEY
⑧刪除主鍵約束
ALTER TABLE 表名 DROP CONSTRAINT 主鍵約束名
4、UNIQUE 唯一約束
①約束唯一標識數據庫表中的每條記錄;
②UNIQUE和PRIMARY KEY都為數據庫提供了唯一性約束;
③每個表中至多有一個PRIMARY KEY約束,但是可以有多個UNIQUE約束;
④語法:
name INT UNIQUE
UNIQUE(column_name)
CONSTRAINT uc_PersonID UNIQUE(Id,Name) 添加多個約束
ALTER TABLE 表名 ADD UNIQUE(column_name) 增加表中的約束
ALTER TABLE 表名 DROP CONSTRAINT 主鍵名 刪除約束
5、CHECK 檢查約束
①check約束用於限制列中的值得范圍;
②如果對單個列做check約束,那么該列只可以輸入特定數值;
③如果對一個表定義check約束,那么此約束會在特定的列對值進行限制;
④語法:
StudentID INT NOT NULL CHECK(StudentID>0) 限制StudentID輸入的值要大於0
StudentID INT NOT NULL, CHECK(StudentID>0) 限制StudentID輸入的值要大於0
sex VARCHAR(2) NOT NULL check(sex='男' or sex='女') 限制sex的性別只能是男或女
ALTER TABLE 表名 ADD CHECK(列名>0) 向已有的列加入check約束
6、FOREIGN KEY 外鍵約束
①一個表中的FOREIGN KEY指向另一個標的PRIMARY KEY;
②FOREIGN KEY約束用於預防破壞表之間連接的動作;
③FOREIGN KEY約束也能防止非法數據插入外鍵列,因為它必須是指向的那個表的值之一;
④語法:
FOREIGN KEY(column_name) REFERENCES 主表名(主鍵列名) 創建 column_name為主表名的外鍵
column_name INT FOREIGN KEY 主表名(主鍵列表) 創建column_name為主鍵名的外鍵
ALTER TABLE 表名 ADD FOREIGN KEY(列名) REFERENCES 主表名(主鍵列表) 為已存在的列創建外鍵
ALTER TABLE 表名 DROP CONSTRAINT 外鍵約束名 刪除外鍵約束(SQL Server,Oracle)
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵約束名 刪除外鍵約束(MySQL)