一、MySQL数据库结构
一 | 二 | 三 | 四 |
名字 Field | 类型 Type | 长度/值 | 默认 |
| Numeric TINYINT SMALLINT MEDIUMINT INT BIGINT — DECIMAL FLOAT DOUBLE REAL - BIT BOOLEAN SERIAL DATE and TIME DATE DATETIME TIMESTAMP TIME YEAR STRING CHAR VARCHAR - TINYTEXT TEXT MEDIUMTEXT LONGTEXT - BINARY VARBINARY - TINYBLOB MEDIUMBLOB BLOB LONGBLOB - ENUM SET SPATIAL GEOMETRY POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON GEOMETRYCOLLECTION | (M,D) (M,D) (M,D) (BOOL) [(M)] (“男”, “女”, ...) (“value 1”,“value 2”, ...) | 无 定义 NULL CURRENT_TIMESTAMP |
五 | 六 | 七 | 八 | 九 | 十 |
整理 | 属性 | 空 | 索引 | A_I | 注释 extra |
Gbk_bin Gbk_chinese_ci Utf8_bin | BINARY UNSIGNED UNSIGNED ZEROFILL On update CURRENT-TIMESTAMP | Null | Primary Unique Index Fulltext | | Key Default |
二、类型 Type
A. NUMERIC(numeric)数值数据类型
整数型:
TINYINT 小的整数型 1个字节 整数 tinyint
SMALLINT 较小的整数型 2个字节 整数 smallint
MEDIUMINT 中等大小整数型 3个字节 整数 mediumint
INT 标准大小的整数 4个字节 整数 int(或integer)
BIGINT 大整数型 8个字节 整数 bigint
浮点型(小数型):
DECIMAL 精度可变浮点型 小数 decimal(M,D)
FLOAT 单精度浮点型 4个字节 小数 float(M,D)
DOUBLE 双精度浮点型 8个字节 小数 double(M,D)
REAL 浮点型 4字节 小数 real
BIT 位字段 1-64位 bit
BOOLEAN(BOOL)布尔标志 0或1 开关 boolean(bool)
SERIAL
B. DATEand TIME 日期和时间类型
DATE 日期型 YYYY-MM-DD 3字节 date
DATETIME 混合日期时间型 YYYY-MM-DDhh:mm:ss 8字节 datetime
TIMESTAMP [(M)] 混合日期时间型 YYMMDDHHMMSS 8字节 datestamp
TIME 时间型 hh :mm : ss 3字节 time
YEAR 年份值 2位数字70-69,4位数字 1字节 year
如果保存的时间数据不需要做去处可以使用日期时间型的数据,如果保存的时间是需要做运算的,最好使用INT来保存,方便运算。
C.STRING 字符串类型 常用来存储文本 string
CHAR 定长字符串 1到255 之间 整数 char
VARCHAR 变长字符串 1到255 之间 整数 varchar
TINYTEXT 短文本字符串 255字节 文本 tinytext
TEXT 变长文本 64k 文本 text
MEDIUMTEXT 中等长度文本数据 16k 文本 mediumtext
LONGTEXT 极大文本数据 4GB 文本 longtext
BINARY
VARBINARY
D.二进制数据类型:
TINYBLOB 二进制字符串 255字节 tinyblob
MEDIUMBLOB 二进制中等长度文本数据 16MB mediumblob
BLOB 二进制长文本数据 64KB blob
LONGBLOB 二进制极大文本数据 4GB longblob
ENUM 枚举类型(只允许从一个集合中取得一个值)64K enum
SET 集合(从一个集合中取得任意多个值) 64K set
SPATIAL 空间的
GEOMETRY 几何形状 geometry
POINT
LINESTRING
POLYGON
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
四、默认
无
定义
NULL 零;空
CURRENT_TIMESTAMP
六、属性
BINARY 二进制 Binary
UNSIGNED 应用于数值型 表示无符号类型 定义的时候必须加在not null/null前面 unsigned
UNSIGNED ZEROFILL填零,补零,前导0 unsigned(zerofill)
On updateCURRENT-TIMESTAMP更新为当前UPDATE操作时的时间
九、索引
Primary 主键索引
Unique 唯一
Index 标志
Fulltext 全文搜索
MySQL字段类型
按下列约定给出类型名说明:
[ ] 可选信息。
M 最大显示宽度。除非另有说明,否则M 应该是一个1到255 之间的整数。
D 有小数部分的类型的小数位数。D 为一个0 到30 之间的整数。D 应该小于等于M - 2。否则,M 的值将调整为D + 2。
在ODBC 术语中,M 和D 称为“精度”和“小数位数”。
为了描述每种类型,提供下列一个或多个信息:
说明 该类型的简短说明。
允许的属性 在CREATE TABLE 或ALTER TABLE 语句中与该类型相关的可选属性关键字。属性按字母顺序列出,但这个顺序并不一定与CREATE TABLE 或ALTE R TABLE 中使用的顺序相对应。关于这些语句的语法请参阅附录D。每种列类型在说明中列出的属性为通用属性之外的属性。
允许的长度 串类型的列值所允许的最大长度。
取值范围 对于数值或日期与时间类型,该类型可表示的值的范围。对于整数数值类型,给出两个取值范围,因为整数列可以是有符号或无符号的,有符号或无符号的取值范围是不同的。
零值 对于日期和时间类型,如果将非法值插入该列,则存入一个“零”值。
缺省值 类型说明中不明确给出D E FA U LT 属性时的缺省值。
存储需求 存储该类型的值所需的字节数。对于有的类型,这个值是固字的。而这个值在有些类型中根据存放在列中的值的不同是可变的。
比较 对于串类型,比较是否是区分大小写的。这对排序和索引有效,因为这些操作根据比较进行的。
同义词 该类型名的同义词。
注释 关于该类型的一些杂项说明。
通用属性 有的属性对所有类型或对于几乎所有类型都适用。它们列在这里,而不是列在每种类型的说明中。可对任何类型指定NULL 或NOT NULL 属性。还可对所有类型指定D E FA U LT default_value。
数值类型
MySQL提供了整数和浮点数的数值类型。可根据所要表示的值的范围选择相应的类型。
对于整数类型,如果指定了AUTO_INCREMENT 属性,则列必须为PRIMARY KEY 或UNIQUE 索引。将NULL 插入AUTO_INCREMENT 列将会插入一个大于该列中当前最大值的值。如果指定了UNSIGNED 属性,则相应的整数类型不允许取负值。
如果指定了ZEROFILL 属性,则用前导零填充数值类型值以达到列的显示宽度。
1. TINYINT[(M)]
说明:非常小的整数
允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范围:-128 到127(-27 到27-1),或者如果为U N S I G N E D,则0 到2 5 5(0 到2 8-1)
缺省值:如果列可为NULL;则为NULL;如果列为NOT NULL,则为0
存储需求:1字节
2. SMALLINT[(M)]
说明:小整数
允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范围:-32768 到3 27 6 7(-215 到215-1),或者如果为U N S I G N E D,则0 到6 5 5 3 5 (0 到216-1)
缺省值:如果列可为NULL;则为NULL;如果列为NOT NULL,则为0
存储需求:2 字节
3. MEDIUMINT[(M)]
说明:中等大小的整数
允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范围:-8388608 到8 3 8 8 6 07(-22 3 到22 3-1),或者如果为U N S I G N E D,则0 到16 7 7 2 15(0 到22 4-1)
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0
存储需求:4 字节
4. INT[(M)]
说明:标准大小的整数
允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范围:-2147483648 到2 14 7 4 8 3 6 4 7(-231到2 3 1-1),或者如果为U N S I G N E D,则0 到4 2 9 4 9 6 7 2 9 5(0 到2 3 2-1)
缺省值:如果列为NULL,则为NULL;如果列为NOT FULL,则为0
存储需求:4 字节
同义词:I N T E G E R [(M)]
5. BIGINT[(M)]
说明:大整数
允许的属性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范围:-9223372036854775808 到9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07(-263 到2 6 3-1),或者如果为U N S I G N E D,则0 到18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 15(0 到26 4 -1)
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0
存储需求:8 字节
6. FLOAT [(M, D)]
说明:小浮点数;单精度(精度小于D O U B L E)
允许的属性:Z E R O F I L L
取值范围:最小非零值为±1.75494351E -38; 最大非零值为±3 . 4 0 2 8 2 3 4 6 6 E + 3 8
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0
存储需求:4 字节
同义词:MySQL3.23 版以前,FLOAT(4) 为具有缺省M 和D 值的FLOAT的同义词。
注释:在MySQL3.23 以后,FLOAT(4) 为真浮点类型(值存储为硬件所允许的完整精度,而不四舍五入为缺省的小数位数)
7. DOUBLE[(M, D)]
说明:大浮点数;双精度(比FLOAT更精确)
允许的属性:Z E R O F I L L
取值范围:最小非零值为±2 . 2 2 5 07 3 8 5 8 5 07 2 0 14 E -308; 最大非零值为±1。7 9 7 6 9 3 13 - 4 8 6 2 3 15 7 E + 3 0 8
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0
存储需求:8 字节
同义词:DOUBLE PRECISION[(M, D)] 和R E A L [ (M, D)] 为D O U B L E [(M, D)] 的同义词。MySQL3.23 版以前,FLOAT(8) 为具有缺省M 和D 值的FLOAT的同义词。
注释:在MySQL3.23 以后,FLOAT(8) 为真浮点类型(值存储为硬件所允许的完整精度,而不四舍五入为缺省的小数位数)。
8. DECIMAL(M, D)
说明:存储为串的浮点数(每位数字、小数点或“-”号都占1字节)。
允许的属性:Z E R O F I L L
取值范围:最大取值范围与DOUBLE 相同;给定DECIMAL 类型的有效取值范围由M和D 决定。如果D 为零,则列值无小数点或小数部分。
缺省值:如果列可为NULL,则为NULL,如果列为NOT NULL,则为0
存储需求:对于MySQL3.23 前的版本,为M 字节,而MySQL3.23 以后的版本,为M + 2 字节。
同义词:N U M E R I C (M, D)
注释:在MySQL3.23 以后,M 的值为符合ANSI SQL 标准,不包括符号字符或小数点所占的字节数。
MYSQL串类型
MySQL的串类型常用来存储文本,它不但是通用的而且还能存储任何数据。可用串类型来存储最大长度可变的值,而且可以选择在处理值时是否区分大小写。
1. CHAR(M)
说明:0 到M 字节长的定长字符串。在MySQL3.23 版以前,M 应该为一个1到255 之间的整数。而MySQL3.23 版以后,M 应该为一个0 到255 之间的整数。短于M 个字符的串存储进右边补空格。长于M 个字符的串存储时剪断为长度是M 的串。在检索值时,去掉后跟的空格。
允许的属性:B I N A RY
允许的长度:0 到M 字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:M 字节
比较:不区分大小写(如果具有B I N A RY 属性,则区分大小写)
2. VARCHAR(M)
说明:0 到M 字节长的可变长字符串。M 应该为1到255 之间的一个整数,或者自MySQL3.23 后为0 到255 之间的一个整数。存储时后跟的空格被去掉。存储时,大于M 个字符的串剪断为M 个字符。
允许的属性:B I N A RY
允许的长度:0 到M 字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度,加上1字节用来记录长度
比较:不区分大小写(如果具有B I N A RY 属性,则区分大小写)
3. TINYBLOB
说明:小BLOB 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到2 5 5(0 到28-1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的1个字节
比较:区分大小写
4. BLOB
说明:常规大小的BLOB 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到6 5 5 3 5(0 到216-1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的2 个字节
比较:区分大小写
5. MEDIUMBLOB
说明:中等大小的BLOB 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到16 7 7 7 2 15(0 到224 -1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的3 个字节
比较:区分大小写
6. LONGBLOB
说明:大BLOB 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到4 2 9 4 9 6 7 2 9 5(0 到23 2-1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的4 个字节
比较:区分大小写
7. TINYTEXT
说明:小TEXT 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到2 5 5(0 到2 8 -1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的2 个字节
比较:不区分大小写
8. TEXT
说明:常规大小的TEXT 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到6 5 5 3 5(0 到216-1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的2 个字节
比较:不区分大小写
9. MEDIUMTEXT
说明:中等大小的TEXT 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到16 7 7 7 2 15(0 到22 4-1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的3 个字节
比较:不区分大小写
10. LONGTEXT
说明:大TEXT 值
允许的属性:除通用属性外无其他属性
允许的长度:0 到4 2 9 4 9 6 7 2 9 5(0 到23 2-1)字节
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”
存储需求:值的长度加上用于记录长度的4 个字节
比较:不区分大小写
11. ENUM(“v a l ue
说明:枚举,列值可赋予值列表中的某个成员
允许的属性:除通用属性外无其他属性
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为第一个枚举值
存储需求:对1到255 个成员的枚举1个字节,对255 到65535 个成员的枚举2 个字节
比较:不区分大小写(MySQL
12. SET(“v a l ue
说明:集合,列值可赋予值列表中的零个或多个成员
允许的属性:除通用属性外无其他属性
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“”(空集)
存储需求:1字节(1到8个成员的集合),2字节(9 到16个成员的集合),3字节(17到2 4个成员的集合),4 字节(2 5到3 2个成员的集合)或8字节(3 3到6 4个成员的集合)
比较:不区分大小写(MySQL3.22.1版以前区分大小写)
MYSQL日期和时间类型
MySQL提供以各种形式表示时间数据的类型。这些数据有日期和时间类型。有一种特殊的时间戳类型,它在记录更改时自动更新。还有一种用于存储年份的类型,在不需要完全的日期时使用。
1. DATE
说明:“Y Y Y Y- M M - D D”格式的日期
允许的属性:除通用属性外无其他属性
取值范围:“10 0 0 - 0 1- 0
零值:“0 0 0 0 - 0 0 - 0
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“0 0 0 0 - 0 0 - 0
存储需求:3 字节(MySQL3.22 版以前为4 字节)
2. TIME
说明:“H H : M M : S S”格式的时间(负值为“ - HH:MM:SS”);表示占用的时间,但也可以作为日常时间
允许的属性:除通用属性外无其他属性
取值范围:“- 8 3 8 : 5 9 : 5
零值:“0 0 : 0 0 : 0
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“0 0 : 0 0 : 0
存储需求:3 字节
注释:虽然在非法值插入TIME 列时,“0 0 : 0 0 : 0
3. DATETIME
说明:以“Y Y Y Y-MM-DD hh:mm:ss”格式表示的日期和时间(两个部分都需要)
允许的属性:除通用属性外无其他属性
取值范围:“1000-01-0100:00:
零值:“0000-00-00 00:00:
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为“ 0 0 0 0 - 0 0 - 0 0 0 0 : 0 0 : 0
存储需求:8 字节
4. TIMESTAMP [(M)]
说明:以YYYYMMDDHHMMSS 格式表示的时间(日期和时间)
允许的属性:除通用属性外无其他属性
取值范围:19700101000000 到2037 年的某个时刻
缺省值:当前日期和时间。注意DESCRIBE 和SHOW COLLUMNS 报告缺省值为NULL
存储需求:4 字节
注释:插入NULL 到表的第一个T I M E S TAMP 列将会插入当前日期和时间。更改行中其他列的值使第一个T I M E S TAMP 列被更新为这个修改的日期和时间。在内部计算中存储和使用的值全都为14 位字符精度,与显示宽度无关。如果指定了NOT NULL属性,则此属性不起作用
5. YEAR
说明:YYYY 格式表示的年份
允许的属性:除通用属性外无其他属性
取值范围:1900 到2 15 5
零值:0 0 0 0
缺省值:如果列可为NULL,则为NULL;如果列为NOT NULL,则为0 0 0 0
存储需求:1字节
注释:YEAR 是在MySQL3.22 版中引入的
联系客服