程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL字段約束null, not null, default, auto_increment

MySQL字段約束null, not null, default, auto_increment

編輯:MySQL綜合教程

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),因為這是 “規定”。

[sql] 
/*  
創建好友表,其中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 會自動為您設置上該字段的默認值。
[sql] 
/*  
創建im表,將name字段設置為默認值'QQ'  
*/  
create table im (  
id int(3) not null,  
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 為每條記錄創建唯一的標識符。
[sql] 
/*  
您運行的 SQL 語句已經成功運行了。 ( 查詢花費 0.0170 秒 )  
*/  
CREATE TABLE items(  
id int( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
label varchar( 255 ) NOT NULL  
);  
  
/*  
插入三條數據,不指定id,采用默認值,加上AUTO_INCREMENT  
您運行的 SQL 語句已經成功運行了。  
*/  
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 也允許表級的約束,比如主鍵和外鍵、索引和惟一約束。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved