對(duì)于數(shù)據(jù)庫的開發(fā)者來說,實(shí)施數(shù)據(jù)完整性是一個(gè)非常重要的任務(wù)。一方面,它可以防止錯(cuò)誤數(shù)據(jù)的插入并保證數(shù)據(jù)的準(zhǔn)確性,另一方面,它還可以整合數(shù)據(jù)庫中的各個(gè)數(shù)據(jù)部分,從而簡化數(shù)據(jù)管理。
MySQL中有一種約束列的機(jī)制,其中包括了完整性約束,它可以在列上設(shè)置一個(gè)規(guī)則,以確保數(shù)據(jù)在插入時(shí)遵守規(guī)則。 在下面的例子中,我們創(chuàng)建了一個(gè)表,其中包含了兩個(gè)列,其中一個(gè)列提供的數(shù)據(jù)必須是10或20:
CREATE TABLE books ( id INT(11) NOT NULL AUTO_INCREMENT, price INT(11) NOT NULL CHECK (price IN (10, 20)), title VARCHAR(255), PRIMARY KEY (id) );
在上面的代碼中,關(guān)鍵字CHECK用于在price列上強(qiáng)制使用完整性約束。 CHECK約束條件的規(guī)則可以是任何可在WHERE子句中使用的規(guī)則,MySQL將檢查約束條件并強(qiáng)制其成立,否則就會(huì)拒絕插入數(shù)據(jù)。如果price列是10或20,即符合約束條件,則MySQL將接受數(shù)據(jù)。
另外一種完整性約束是NOT NULL,它用于指定一個(gè)列不能為空。如果試圖在該列上插入空值,則MySQL將拒絕該操作并返回錯(cuò)誤消息。
因此,在MySQL中設(shè)置約束列是一個(gè)非常好的做法,并且它可以確保數(shù)據(jù)完整性并促進(jìn)數(shù)據(jù)管理。