MySQL加約束的作用非常重要,因?yàn)樗梢栽跀?shù)據(jù)庫(kù)表中強(qiáng)制執(zhí)行一些規(guī)則,從而保證數(shù)據(jù)的一致性和完整性。比如一個(gè)表中的某列必須保證唯一性或不允許為空,就可以使用約束來達(dá)到這個(gè)目的。
CREATE TABLE example ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL UNIQUE, age INT CHECK (age >= 0 AND age<= 120) );
在上面的例子中,我們創(chuàng)建了一個(gè)名為example的表,其中列id被指定為主鍵,列name被指定為唯一和不允許為空,列age被指定為允許范圍在0到120之間。這就是MySQL約束的效果。
MySQL約束包括以下幾種:
- PRIMARY KEY:主鍵約束,保證每行數(shù)據(jù)的唯一性。
- UNIQUE:唯一約束,保證該列數(shù)據(jù)的唯一性。
- NOT NULL:非空約束,保證該列數(shù)據(jù)不為空。
- FOREIGN KEY:外鍵約束,用于關(guān)聯(lián)兩個(gè)表,保證數(shù)據(jù)的一致性。
- CHECK:檢查約束,限制該列數(shù)據(jù)的取值范圍。
需要注意的是,添加約束的語(yǔ)法格式如下:
ALTER TABLE table_name ADD CONSTRAINT constraint_name CONSTRAINT_TYPE (column_name);
其中,table_name為需要添加約束的表名,constraint_name是約束的名稱,CONSTRAINT_TYPE是約束類型,column_name是需要被約束的列名。比如,要為表example中的age列添加CHECK約束可以這樣寫:
ALTER TABLE example ADD CONSTRAINT age_range CHECK (age >= 0 AND age<= 120);
這樣就能夠限制age列的取值范圍,并保證數(shù)據(jù)的正確性和一致性。