MySQL的開發規範-數據類型及列屬性

數據類型介紹

 
四種主要數據類型:
  • 數值類型
  • 字符類型
  • 時間類型
  • 二進制類型 (好比存放視頻,圖片等)
 
數據類型的 ABC 要素:
  • Appropriate(適當)
  • Brief(簡潔)
  • Complete(完整)
 
 

數值類型

使用數值數據類型時的注意事項:
– 數據類型所表示的值的範圍
– 列值所需的空間量
– 列精度和範圍(浮點數和定點數)
 
• 數值數據類型的類:
– 整數:整數
– 浮點數:小數
– 定點數:精確值數值
– BIT:位字段值
類型
說明
整數
TINYINT
極小整數數據類型(0-255)
整數
SMALLINT
較小整數數據類型(-2^15 到2^15-1 )
整數
MEDIUMINT
中型整數數據類型
整數
INT
常規(平均)大小的整數數據類型(-2^31 到2^31- 1)
整數
BIGINT
較大整數數據類型(-2^63到2^63-1 )
浮點數
FLOAT
小型單精度(四個字節)浮點數
浮點數
DOUBLE
常規雙精度(八個字節)浮點數
定點數
DECIMAL
包含整數部分、小數部分或同時包括兩者的
精確值數值
BIT
BIT
位字段值
 

字符類型

• 表示給定字符集中的一個字母數字字符序列
• 用於存儲文本或二進制數據
• 幾乎在每種編程語言中都有實現
• 支持字符集和整理
• 屬於如下其中一類
– 文本:真實的非結構化字符串數據類型
– 整數:結構化字符串類型
 
類型
說明
文本
CHAR
固定長度字符串,最多爲 255 個字符
文本
VARCHAR
可變長度字符串,最多爲 65,535 個字符
文本
TINYTEXT
可變長度字符串,最多爲 255 個字符
文本
TEXT
可變長度字符串,最多爲 65,535 個字符
文本
MEDIUMTEXT
可變長度字符串,最多爲 16,777,215 個字符
文本
LONGTEXT
可變長度字符串,最多爲 4,294,967,295 個 字符
整數
ENUM
由一組固定的合法值組成的枚舉
整數
SET
由一組固定的合法值組成的集
 
char和varchar的對比:
char:性能比較高,可是定義多大長度就會直接佔用多大長度,比較費空間
varchar: 性能稍微差一些,會動態調整佔用長度,比較省空間。
mysql通常不建議存儲太長的字符串,若是數據量比較大,不利於索引的掃描。
enum使用的也比較多,性能高於char和varchar,好比: create table stu (id int, name varchar(20), enum ('male','female'));
 
 

時間類型

類型
格式
示例
DATE
YYYY-MM-DD
2006-08-04
TIME
hh:mm:ss[.uuuuuu]
12:59:02.123456
DATETIME
YYYY-MM-DD hh:mm:ss[.uuuuuu]
2006-08-04
12:59:02.123
TIMESTAMP
YYYY-MM-DD hh:mm:ss[.uuuuuu]
2006-08-04 12:59:02.12
YEAR
YYYY
2006
 
datetime 和 timestamp之間建議選擇datetime
 

二進制類型

 
字節序列
– 二進制位按八位分組
• 存儲二進制值,例如:
– 編譯的計算機程序和應用程序
– 圖像和聲音文件
• 字符二進制數據類型的類:
– 二進制:固定長度和可變長度的二進制字符串
– BLOB:二進制數據的可變長度非結構化集合
 
類型
說明
二進制
BINARY
相似於 CHAR(固定長度)類型,但存儲的是 二進制字節字符串,而不是非二進制字符串
二進制
VARBINARY
相似於 VARCHAR(可變長度)類型,但存儲的是二進制 字節字符串,而不是非二進制字符串
BLOB
TINYBLOB
最大長度爲 255 個字節的 BLOB 列
BLOB
BLOB
最大長度爲 65,535 個字節的 BLOB 列
BLOB
MEDIUDMBLOB
最大長度爲 16,777,215 個字節的 BLOB 列
BLOB
LONGBLOB
最大長度爲 4,294,967,295 個字節的 BLOB 列
 
 
數據類型設置
例 1:列聲明
CREATE TABLE people ( id INT, first_name CHAR(30), last_name CHAR(30) );
 
例 2:不容許負值和未知值
CREATE TABLE people ( id INT UNSIGNED NOT NULL, first_name CHAR(30), last_name CHAR(30) );
 
 

列屬性

列屬性的類別:
• 數值:適用於數值數據類型(BIT 除外)
• 字符串:適用於非二進制字符串數據類型
• 常規:適用於全部數據類型
 
據類型
屬性
說明
數值
UNSIGNED
禁止使用負值
僅整數
AUTO_INCREMENT
生成包含連續惟一整數值的序列
字符串
CHARACTER SET
指定要使用的字符集
字符串
COLLATE
指定字符集整理
字符串
BINARY
指定二進制整理
所有*
NULL 或 NOT NULL
指示列是否能夠包含 NULL 值
所有
DEFAULT
若是未爲新記錄指定值,則爲其提供默認值
 
 
create table student(id int not null primary key AUTO_INCREMENT); create table student1(id int not null primary key AUTO_INCREMENT,name varchar(20)) charset utf8; create table teacher(id int not null ,name varchar(20) not null); create table teacher1(id int not null ,name varchar(20) not null,beizhu varchar(20) not null default "ok");
 
primary key 主鍵:非空、惟一
unique:惟一
 
 
數據類型的字符集用法
 
 
 
選擇合適的數據類型
 
具體如何選擇數據類型:
 
考慮哪些數據類型和字符集能夠最大限度地減小存儲和磁盤 I/O。
 
• 使用固定長度數據類型:
– 若是存儲的全部字符串值的長度相同
• 使用可變長度數據類型:
– 若是存儲的字符串值不一樣
– 對於多字節字符集
• 對於頻繁使用的字符,使用佔用空間較少的多字節字符集。
– 使用基本多文種平面 (Basic Multilingual Plane, BMP) 以外的其餘 Unicode 字符集。
相關文章
相關標籤/搜索