MySQL 字段限制 null,not null,default,auto_increment
【來源于】
沒有規矩,不成方圓,任何事物都是如此。在MySQL中,每個字段定義都包含附加限制或者修飾符,這些可以用來增加對所輸入資料的限制。今天我們就來看一下MySQL的字段限制:NULL和NOT NULL修飾符、DEFAULT修飾符,AUTO_INCREMENT修飾符。
NULL 和 NOT NULL 修飾符:
可以在每個字段後面都加上這NULL 或 NOT NULL 修飾符來指定該字段是否可以為空(NULL),還是說必須填上資料(NOT NULL)。MySQL預設情況下指定字段為NULL修飾符,如果一個字段指定為NOT NULL,MySQL則不允許向該字段插入空值(這裡面說的空值都為NULL),因為這是“龜定”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* 建立好友表,其中id ,name ,pass都不能為空 */ create table friends ( id int(3) not null, name varchar(8) not null, pass varchar(20) not null ); 錯誤提示,id列不能為空 #1048 - Column 'id' cannot be null INSERT INTO friends VALUES ( NULL , 'simaopig', 'simaopig' |
但是在自增列和TIMESTAMP字段中,這個規則并不适用。向這些字段中插入NULL值将會導緻插入下一個自動增加的值或者目前的時間戳。
DEFAULT 修飾符:
可以使用DEFAULT修飾符為字段設定一個預設值。當插入記錄時,您老人家忘記傳該字段的值時,MySQL會自動為您設定上該字段的預設值。
18 19 20 21 22 23 | 建立im表,将name字段設定為預設值'QQ' create table im ( name varchar(25) not null default 'QQ' 插入資料,不傳name字段的值,MySQL會為其設定預設值的 您運作的 SQL 語句已經成功運作了。 INSERT INTO im( id, name ) VALUES ( 2, 'MSN' ) ; INSERT INTO im( id ) VALUES ( 3 ) ; SELECT * FROM im LIMIT 0 , 30; id name 2 MSN 3 QQ |
如果一個字段中沒有指定DEFAULT修飾符,MySQL會依據這個字段是NULL還是NOT NULL自動設定預設值。如果指定字段可以為NULL,則MySQL為其設定預設值為NULL。如果是NOT NULL字段,MySQL對于數值類型插入0,字元串類型插入空字元串,時間戳類型插入目前日期和時間,ENUM類型插入枚舉組的第一條。
AUTO_INCREMENT 修飾符:
AUTO_INCREMENT修飾符隻适用于INT字段,表明MySQL應該自動為該字段生成一個數(每次在上一次生成的數值上面加1)。對于主鍵(稍候介紹),這是非常有用的。因為其允許開發者使用MySQL為每條記錄建立唯一的辨別符。
24 25 26 27 28 29 30 | 您運作的 SQL 語句已經成功運作了。 ( 查詢花費 0.0170 秒 ) CREATE TABLE items( id int( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , label varchar( 255 ) NOT NULL 插入三條資料,不指定id,采用預設值,加上AUTO_INCREMENT insert into items(label) values ('xxx'); insert into items(label) values ('yyy'); insert into items(label) values ('zzz'); 全顯示出來,看一下資料,注意看id的變化 select * from items; id label 1 xxx 2 yyy 3 zzz |
MySQL表中隻能有一個AUTO_INCREMENT字段,而且這個字段必須被定義為鍵。除了字段的限制,MySQL也允許表級的限制,比如主鍵和外鍵、索引和惟一限制。這些限制置于CREATE TABLE指令的字段定義的後面。稍候為您介紹。敬請期待。