更新時(shí)間:2022-10-18 來(lái)源:黑馬程序員 瀏覽量:
大家都知道數(shù)據(jù)庫(kù)中的數(shù)據(jù)保存在數(shù)據(jù)表中,在表中為了更加準(zhǔn)確的存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的正確有效,可以在創(chuàng)建表的時(shí)候,為表添加一些強(qiáng)制性的驗(yàn)證,比如:數(shù)據(jù)類(lèi)型和約束。
1. 數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型是指在創(chuàng)建表的時(shí)候?yàn)楸碇凶侄沃付〝?shù)據(jù)類(lèi)型,只有數(shù)據(jù)符合類(lèi)型要求才能存儲(chǔ)起來(lái),使用數(shù)據(jù)類(lèi)型的原則是:夠用就行,盡量使用取值范圍小的,而不用大的,這樣可以更多的節(jié)省存儲(chǔ)空間。
常用數(shù)據(jù)類(lèi)型如下:
? 整數(shù):int,bit
? 小數(shù):decimal
? 字符串:varchar,char
? 日期時(shí)間: date, time, datetime
? 枚舉類(lèi)型(enum)
數(shù)據(jù)類(lèi)型說(shuō)明:
decimal表示浮點(diǎn)數(shù),如 decimal(5, 2) 表示共存5位數(shù),小數(shù)占 2 位.
char表示固定長(zhǎng)度的字符串,如char(3),如果填充'ab'時(shí)會(huì)補(bǔ)一個(gè)空格為'ab ',3表示字符數(shù)
varchar表示可變長(zhǎng)度的字符串,如varchar(3),填充'ab'時(shí)就會(huì)存儲(chǔ)'ab',3表示字符數(shù)
對(duì)于圖片、音頻、視頻等文件,不存儲(chǔ)在數(shù)據(jù)庫(kù)中,而是上傳到某個(gè)服務(wù)器上,然后在表中存儲(chǔ)這個(gè)文件的保存路徑.
字符串 text 表示存儲(chǔ)大文本,當(dāng)字符大于 4000 時(shí)推薦使用, 比如技術(shù)博客.
2. 數(shù)據(jù)約束
約束是指數(shù)據(jù)在數(shù)據(jù)類(lèi)型限定的基礎(chǔ)上額外增加的要求,常見(jiàn)的約束如下:
主鍵 primary key: 物理上存儲(chǔ)的順序. MySQL 建議所有表的主鍵字段都叫 id, 類(lèi)型為 int unsigned.
非空 not null: 此字段不允許填寫(xiě)空值.
惟一 unique: 此字段的值不允許重復(fù).
默認(rèn) default: 當(dāng)不填寫(xiě)字段對(duì)應(yīng)的值會(huì)使用默認(rèn)值,如果填寫(xiě)時(shí)以填寫(xiě)為準(zhǔn).
外鍵 foreign key: 對(duì)關(guān)系字段進(jìn)行約束, 當(dāng)為關(guān)系字段填寫(xiě)值時(shí), 會(huì)到關(guān)聯(lián)的表中查詢(xún)此值是否存在, 如果存在則填寫(xiě)成功,
如果不存在則填寫(xiě)失敗并拋出異常.