溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

詳解MySQL中default的使用

發(fā)布時間:2020-10-03 17:50:29 來源:腳本之家 閱讀:190 作者:子不語_wj 欄目:MySQL數(shù)據(jù)庫

NULL 和 NOT NULL 修飾符、DEFAULT 修飾符,AUTO_INCREMENT 修飾符。

NULL 和 NOT NULL 修飾符

可以在每個字段后面都加上這 NULL 或 NOT NULL 修飾符來指定該字段是否可以為空(NULL),

還是說必須填上數(shù)據(jù) (NOT NULL)。MySQL 默認(rèn)情況下指定字段為 NULL 修飾符,如果一個字段指定為NOT NULL,

MySQL 則不允許向該字段插入空值(這里面說的空值都為 NULL),因為這是 “規(guī)定”。

/* 
創(chuàng)建好友表,其中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 字段中,這個規(guī)則并不適用。

向這些字段中插入 NULL 值將會導(dǎo)致插入下一個自動增加的值或者當(dāng)前的時間戳。

DEFAULT 修飾符

可以使用 DEFAULT 修飾符為字段設(shè)定一個默認(rèn)值。

當(dāng)插入記錄時,您老人家忘記傳該字段的值時,MySQL 會自動為您設(shè)置上該字段的默認(rèn)值。

/* 
創(chuàng)建im表,將name字段設(shè)置為默認(rèn)值'QQ' 
*/ 
create table im ( 
id int(3) not null, 
name varchar(25) not null default 'QQ' 
); 
/* 
插入數(shù)據(jù),不傳name字段的值,MySQL會為其設(shè)置默認(rèn)值的 
您運行的 SQL 語句已經(jīng)成功運行了。 
*/ 
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 會依據(jù)這個字段是 NULL 還是 NOT NULL 自動設(shè)置默認(rèn)值。

如果指定字段可以為 NULL,則 MySQL 為其設(shè)置默認(rèn)值為 NULL。

如果是 NOT NULL 字段,MySQL 對于數(shù)值類型插入 0,字符串類型插入空字符串,

時間戳類型插入當(dāng)前日期和時間,ENUM 類型插入枚舉組的第一條。

AUTO_INCREMENT 修飾符

AUTO_INCREMENT 修飾符只適用于 INT 字段,表明 MySQL 應(yīng)該自動為該字段生成一個數(shù)

(每次在上一次生成的數(shù)值上面加 1)。對于主鍵(稍候介紹),這是非常有用的。

因為其允許開發(fā)者使用 MySQL 為每條記錄創(chuàng)建唯一的標(biāo)識符。

/* 
您運行的 SQL 語句已經(jīng)成功運行了。 ( 查詢花費 0.0170 秒 ) 
*/ 
CREATE TABLE items( 
id int( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
label varchar( 255 ) NOT NULL 
); 
/* 
插入三條數(shù)據(jù),不指定id,采用默認(rèn)值,加上AUTO_INCREMENT 
您運行的 SQL 語句已經(jīng)成功運行了。 
*/ 
insert into items(label) values ('xxx'); 
insert into items(label) values ('yyy'); 
insert into items(label) values ('zzz'); 
/* 
全顯示出來,看一下數(shù)據(jù),注意看id的變化 
*/ 
select * from items; 
/* 
id label 
1 xxx 
2 yyy 
3 zzz 
*/ 

MySQL 表中只能有一個 AUTO_INCREMENT 字段,而且這個字段必須被定義為鍵。

除了字段的約束,MySQL 也允許表級的約束,比如主鍵和外鍵、索引和惟一約束。

總結(jié)

以上所述是小編給大家介紹的MySQL中default的使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI