萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中null,not null,default,auto_increment詳解

mysql中null,not null,default,auto_increment詳解

在mysql中null,not null,default,auto_increment幾個是我們常用的內容,下面我來詳細但要msyql中null,not null,default,auto_increment的用法。

NULL 和 NOT NULL 修飾符:

可以在每個字段後面都加上這NULL 或 NOT NULL 修飾符來指定該字段是否可以為空(NULL),還是說必須填上數據(NOT NULL)。MySQL默認情況下指定字段為NULL修飾符,如果一個字段指定為NOT NULL,MySQL則不允許向該字段插入空值(這裡面說的空值都為NULL),因為這是"龜定"。

 代碼如下 復制代碼


/*
創建好友表,其中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會自動為您設置上該字段的默認值。

 代碼如下 復制代碼


/*
創建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 語句已經成功運行了。 ( 查詢花費 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也允許表級的約束,比如主鍵和外鍵、索引和惟一約束


命令:create table <表名> ( <字段名1> <類型1> [,..<字段名n> <類型n>]);

例如,建立一個名為MyClass的表,
字段名 數字類型 數據寬度 是否為空 是否主鍵 自動增加 默認值

 代碼如下 復制代碼

id int 4 否 primary key auto_increment  
name char 20 否      
sex int 4 否     0
degree double 16 是      

mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));

copyright © 萬盛學電腦網 all rights reserved