MySQL的學習筆記:數據類型
實例:
Teacher(Teacher_id, Teacher_name, age, Enter_time ,professional)
Teacher_id |
Teacher_name |
age |
Enter_time |
professional |
10101 |
潘多拉 |
35 |
1998-7-2 |
副教授 |
10102 |
吉米 |
27 |
2013-7-5 |
講師 |
10103 |
郝本 |
45 |
1995-8-10 |
副教授 |
10201 |
田野 |
42 |
1994-7-15 |
副教授 |
10202 |
趙瑾 |
32 |
2012-7-12 |
講師 |
20201 |
錢多多 |
50 |
1996-7-2 |
教授 |
MySQl數據類型
數值類型
整數類型
類型 |
大小 |
範圍(有符號) |
範圍(無符號) |
用途 |
TINYINT |
1 字節 |
(-128,127) |
(0,255) |
小整數值 |
SMALLINT |
2 字節 |
(-32 768,32 767) |
(0,65 535) |
大整數值 |
MEDIUMINT |
3 字節 |
(-8 388 608,8 388 607) |
(0,16 777 215) |
大整數值 |
INT或INTEGER |
4 字節 |
(-2 147 483 648,2 147 483 647) |
(0,4 294 967 295) |
大整數值 |
BIGINT |
8 字節 |
(-9223372036854775808,9223372036854775 807) |
(0,18 446 744 073709 551 615) |
極大整數值 |
例如:定義年齡字段age爲無符號數,可以使用SQL片段:
age tinyint unsigned
其中用unsigned約束年齡age的取值不能爲負數
小數類型
類型 |
大小 |
範圍(有符號) |
範圍(無符號) |
用途 |
FLOAT |
4 字節 |
-3.402 823 466 E+38~-1.175 494 351 E-38 |
0和1.175 494 351 E-38~3.402 823 466 E+38 |
單精度浮點數值 |
DOUBLE |
8 字節 |
-1.797 693 134 862 315 7 E+308~-2.225 073 858 507 201 4 E-308) |
0和2.225 073 858 507 201 4 E- 308~1.797 693 134 862 315 7E+308 |
雙精度浮點數值 |
DECIMAL |
DECIMAL(length,precision) |
length決定小數的最大位數precision用於設置小數位數 |
length決定小數的最大位數precision用於設置小數位數 |
小數值 |
decimal(length, precision)用於表示精度確定(小數點後數字的位數確定)的小數類型,length決定該小數的最大位數,precision用於設置精度(小數點後數字的位數)。
例如:
decimal (5,2)表示小數取值範圍:-999.99~999.99
decimal (5,0)表示: -99999~99999的整數。
日期類型
類型 |
字節大小 |
範圍 |
格式 |
用途 |
DATE |
3 |
‘1000-01-01’ ~’9999-12-31’ |
YYYY-MM-DD |
日期值 |
TIME |
3 |
'-838:59:59‘ ~‘838:59:59’ |
HH:MM:SS |
時間值或持續時間 |
YEAR |
1 |
‘1901’~’2155’ |
YYYY |
年份值 |
DATETIME |
8 |
‘1000-01-01 00:00:00’ ~’9999-12-31 23:59:59’ |
YYYY-MM-DD HH:MM:SS |
混合日期和時間值 |
TIMESTAMP |
4 |
‘1970-01-01 00:00:00’ ~’2038’ |
YYYY-MM-DD HH:MM:SS |
混合日期和時間值,時間戳 |
字符串類型
類型 |
大小 |
用途 |
CHAR(n) |
0-255字節 |
定長字符串 |
VARCHAR(n) |
0-65535 字節 |
變長字符串 |
TINYTEXT |
0-255字節 |
短文本字符串 |
TEXT |
0-65 535字節 |
長文本數據 |
MEDIUMTEXT |
0-16 777 215字節 |
中等長度文本數據 |
LONGTEXT |
0-4 294 967 295字節 |
極大文本數據 |
- char是定長,無論實際字段多長,佔用空間總爲n
- varchar是變長,只要實際字段長度小於n,那麼長度爲實際長度
複合類型
類型 |
最大值 |
說 明 |
備註 |
Enum (“value1”,“value2”, …) |
65535 |
該類型的列只可以容納所列值之一或爲NULL |
類似單選框 |
Set (“value1”,“value2”, …) |
64 |
該類型的列可以容納一組值或爲NULL |
類似複選框 |
二進制類型
類型 |
大小 |
用途 |
Binary(n) |
0-255字節 |
較短的二進制 |
VARBinary(n) |
0-65535 字節 |
較長的二進制 |
Bit(n) |
0-64字節 |
短二進制 |
TINYBLOB |
0-255字節 |
較短的二進制 |
BLOB |
0-65 535字節 |
圖片、聲音等文件 |
MEDIUMBLOB |
0-16 777 215字節 |
圖片、聲音、視頻等文件 |
LONGBLOB |
0-4 294 967 295字節 |
圖片、聲音、視頻等文件 |
一般規則
- 在符合應用要求(取值範圍、精度)的前提下,儘量使用“短”數據類型
- 數據類型越簡單越好
- 在MySQL中,應該用內置的日期和時間數據類型,而不是用字符串來存儲日期和時間。
- 儘量採用精確小數類型(例如decimal),而不採用浮點數類型。
- 儘量避免NULL字段,建議將字段指定爲NOT NULL約束。