更新時間:2021年05月26日16時58分 來源:傳智教育 瀏覽次數(shù):
為了防止數(shù)據(jù)表中插入錯誤的數(shù)據(jù),在MySQL中,定義了一些維護數(shù)據(jù)庫完整性的規(guī)則,即表的約束。下表列舉了常見的表的約束。
在MySQL中,為了快速查找表中的某條信息,可以通過設置主鍵來實現(xiàn)。主鍵約束是通過PRIMARY KEY定義的,它可以唯一標識表中的記錄,這就好比身份證可以用來標識人的身份一樣。在MySQL中,主鍵約束分為兩種,具體如下。
單字段主鍵指的是由一個字段構(gòu)成的主鍵,其基本的語法格式如下所示:
字段名 數(shù)據(jù)類型 PRIMARY KEY
【案例】
創(chuàng)建一個數(shù)據(jù)表example01,并設置id作為主鍵,SQL語句如下:
CREATE TABLE example01(id INT PRIMARY KEY, name VARCHAR(20), grade FLOAT);
上述SQL語句執(zhí)行后,example01表中創(chuàng)建了id、name和grade三個字段,其中,id字段是主鍵。
多字段主鍵指的是多個字段組合而成的主鍵,其基本的語法格式如下所示:
PRIMARY KEY (字段名1,字段名2,…,字段名n)
在上述格式中,“字段名1,字段名2,…,字段名n”指的是構(gòu)成主鍵的多個字段的名稱。
【案例】 創(chuàng)建一個數(shù)據(jù)表example02,在表中將stu_id和course_id兩個字段共同作為主鍵,SQL語句如下:
CREATE TABLE example02(stu_id INT, course_id INT, grade FLOAT, PRIMARY KEY(stu_id,course_id) );
上述SQL語句執(zhí)行后,example02表中包含stu_id、course_id和grade三個字段,其中,stu_id和course_id兩個字段組合可以唯一確定一條記錄。
注意:每個數(shù)據(jù)表中最多只能有一個主鍵約束,定義為PRIMARY KEY的字段不能有重復值且不能為NULL值。
非空約束指的是字段的值不能為NULL,在MySQL中,非空約束是通過NOT NULL定義的,其基本的語法格式如下所示:
字段名 數(shù)據(jù)類型 NOT NULL;
【案例】 創(chuàng)建一個數(shù)據(jù)表example04,將表中的name字段設置為非空約束,SQL語句如下:
CREATE TABLE example04(id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, grade FLOAT);
上述SQL語句執(zhí)行后,example04表中包含id、name和grade三個字段。其中,id字段為主鍵,name字段為非空字段。需要注意的是,在同一個數(shù)據(jù)表中可以定義多個非空字段。
唯一約束用于保證數(shù)據(jù)表中字段的唯一性,即表中字段的值不能重復出現(xiàn)。唯一約束是通過UNIQUE定義的,其基本的語法格式如下所示:
字段名 數(shù)據(jù)類型 UNIQUE;
【案例】 創(chuàng)建一個數(shù)據(jù)表example05,將表中的stu_id設置為唯一約束,SQL語句如下:
CREATE TABLE example05(id INT PRIMARY KEY, stu_id INT UNIQUE, name VARCHAR(20) NOT NULL );
上述SQL語句執(zhí)行后,example05表中包含id、stu_id和name三個字段。其中,id字段為主鍵,stu_id字段為唯一值,該字段的值不能重復,name字段的值不能為空值。
默認約束用于給數(shù)據(jù)表中的字段指定默認值,即當在表中插入一條新記錄時,如果沒有給這個字段賦值,那么,數(shù)據(jù)庫系統(tǒng)會自動為這個字段插入默認值。默認值是通過DEFAULT關(guān)鍵字定義的,其基本的語法格式如下所示:
字段名 數(shù)據(jù)類型 DEFAULT 默認值;
【案例】 創(chuàng)建一個數(shù)據(jù)表example06,將表中的grade字段的默認值設置為0,SQL語句如下:
CREATE TABLE example06(id INT PRIMARY KEY AUTO_INCREMENT, stu_id INT UNIQUE, grade FLOAT DEFAULT 0 );
上述SQL語句執(zhí)行后,example06表中包含id、stu_id和grade三個字段。其中,id字段為主鍵,stu_id字段的值唯一,grade字段的默認值為0。
外鍵約束是用來加強兩個表(主表和從表)的一列或多列數(shù)據(jù)之間的連接的,可以保證一個或兩個表之間的參照完整性,外鍵是構(gòu)建于一個表的兩個字段或是兩個表的兩個字段之間的參照關(guān)系。
創(chuàng)建外鍵約束的順序是先定義主表的主鍵,然后定義從表的外鍵。也就是說只有主表的主鍵才能被從表用來作為外鍵使用,被約束的從表中的列可以不是主鍵,主表限制了從表更新和插入的操作。
自增約束(AUTO_INCREMENT)可以約束任何一個字段,該字段不一定是PRIMARY KEY字段,也就是說自增的字段并不等于主鍵字段。
但是PRIMARY_KEY約束的主鍵字段,一定是自增字段,即PRIMARY_KEY 要與AUTO_INCREMENT一起作用于同一個字段。
當插入第一條記錄時,自增字段沒有給定一個具體值,可以寫成DEFAULT/NULL,那么以后插入字段的時候,該自增字段就是從1開始,沒插入一條記錄,該自增字段的值增加1。當插入第一條記錄時,給自增字段一個具體值,那么以后插入的記錄在此自增字段上的值,就在第一條記錄該自增字段的值的基礎(chǔ)上每次增加1。
也可以在插入記錄的時候,不指定自增字段,而是指定其余字段進行插入記錄的操作。
猜你喜歡: