注意 : 在建立數據表的時候,須要對數據表中的字段設置 數據類型和約束, 便於檢測用戶輸入的數據是否正確有效。數據庫
1 數據類型 服務器
數據類型的選用原則 : 夠用就行,儘可能使用取值範圍小的, 而不選用大的,這樣能夠更多的節省存儲空間。性能
經常使用數據類型以下:code
整數:int,bit視頻
小數:decimal圖片
字符串:varchar,charci
日期時間: date, time, datetime字符串
枚舉類型(enum)
it
特別說明的類型以下:table
decimal表示浮點數,如decimal(5,2)表示共存5位數,小數佔2位
char表示固定長度的字符串,如char(3),若是填充'ab'時會補一個空格爲'ab '
varchar表示可變長度的字符串,如varchar(3),填充'ab'時就會存儲'ab'
字符串text表示存儲大文本,當字符大於4000時推薦使用
對於圖片、音頻、視頻等文件,不存儲在數據庫中,而是上傳到某個服務器上,而後在表中存儲這個文件的保存路徑。
2 約束
主鍵primary key:物理上存儲的順序
非空not null:此字段不容許填寫空值
唯一unique:此字段的值不容許重複
默認default:當不填寫此值時會使用默認值,若是填寫時以填寫爲準
外鍵foreign key:對關係字段進行約束,當爲關係字段填寫值時,會到關聯的表中查詢此值是否存在,若是存在則填寫成功,若是不存在則填寫失敗並拋出異常。
說明:雖然外鍵約束能夠保證數據的有效性,可是在進行數據的crud(增長、修改、刪除、查詢)時,都會下降數據庫的性能,因此不推薦使用,那麼數據的有效性怎麼保證呢?答:能夠在邏輯層進行控制。
數值類型經常使用類型:
類型 | 字節大小 | 有符號範圍(Signed) | 無符號範圍(Unsigned) |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT/INTEGER | 4 | -2147483648 ~2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 |
字符串經常使用類型:
類型 | 字節大小 | 示例 |
---|---|---|
CHAR | 0-255 | 類型:char(3) 輸入 'ab', 實際存儲爲'ab ', 輸入'abcd' 實際存儲爲 'abc' |
VARCHAR | 0-255 | 類型:varchar(3) 輸 'ab',實際存儲爲'ab', 輸入'abcd',實際存儲爲'abc' |
TEXT | 0-65535 | 大文本 |
日期時間類型
類型 | 字節大小 | 示例 |
---|---|---|
DATE | 4 | '2020-01-01' |
TIME | 3 | '12:29:59' |
DATETIME | 8 | '2020-01-01 12:29:59' |
YEAR | 1 | '2017' |
TIMESTAMP | 4 | '1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC |