mysql可以對插入的數據進行特定得驗證,只有滿足條件才可以插入到數據表中,否則認為是非法插入;
例如:人性別只可以是男、女。年齡只能是0-100。
①主鍵約束查重-PRIMARY KEY,1表一個;
例子:id INT PARIMARY KEY,
聲明主鍵約束列上的值不能出現重復,一個表只可以有一個主鍵,設置主鍵約束不可以使用NULL值;
表中查詢的記錄會按照主鍵由小到大的順序排列--加快查找速度
②非空約束-NOT NULL,批量插入會失效
注意問題:INSERT INTO 插入時候會收到影響,起不了作用;
例子:id INT NOT NULL,
在插入數據時候,無法確定要保存的數據,例如:無法確定員工的工資,生日都可以使用NULL;
③唯一約束-UNIQUE
聲明了唯一約束的列上不能插入重復的值,允許插入NULL,甚至多個NULL.
說明:NULL這個值比較特殊,它和任何值都不相等,甚至和自身都不相等;
注意:一個表里可以有多個唯一約束UNIQUE,但是只能有一個主鍵約束 PRIMARY KEY
④檢查約束-CHECK
檢查約束可以對插入的數據進行自定義的驗證
CREATE TABLE student(score TINYINT CHECK(score>=0&scure<=100)
);
mysql 中不支持檢查約束,會降低數據的插入速度;
⑤默認值約束-DEFAULT
可以使用DEFAULT關鍵字聲明默認值,有兩種方式應用默認值
第一種設置DEFAULT方法
CREATE TABLE family(
fid INT PRIMARY KEY,
fname VARCHAR(20) UNIQUE,
XX XX DEFAULT 1
);
INSERT INTO family VALUES(50,'華碩',DEFAULT);
第二種設置DEFAULT方法
INSERT INTO family (fid,fname)VALUES(50,'華碩');第三個值自動使用默認數值
注意事項:不可以在表格后括號里加引號!!!
⑥外鍵約束-FOREIGN KEY
使用方法:
CREATE TABLE laptop(
lid INT PRIMARY KEY,
familyld INT,
FOREIGN KEY(familyId) REFERENCES laptop_family(fid)
);
注意問題:
1.必須是另一個表格的主鍵
2.列類型必須和另一個表格的一樣
3.需要加了逗號寫到下一行
聲明了外鍵約束的列,取值必須在另一個表的主鍵列上出現過,兩者的列類型要保持一致,允許使用多個NULL或者多個NULL
使用方法:
FOREIGN KEY (列名) REFERENCES 數據表(主鍵列)
mysql 中的自增列
AUTO_INCREMENT:
自動增長,假如一個列聲明了自增列,無需手動賦值,直接賦值為NULL,會獲取當前的最大值, 然后加1插入
注意: 1.只適用於整數型的主鍵列上面
2.自增列允許手動賦值
3.手動賦值后中間跳躍有缺失,還會按最大值繼續增長。
4.使用方便,可以直接給上面寫NULL,數字自動加1;
列約束匯總