SQL中的六大約束


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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM