数据类型"/>
【MySQL】2.0 数据类型
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数据类型
- MySQl数据类型
- 数值类型
- 整数类型
- 小数类型
- 日期类型
- 字符串类型
- 复合类型
- 二进制类型
- 一般规则
- MySQL基础系列
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约束。
MySQL基础系列
【MySQL】1.0 数据库操作
【MySQL】2.0 数据类型
【MySQL】3.0 数据表操作
【MySQL】4.0 数据与索引
更多推荐
【MySQL】2.0 数据类型
发布评论