数据类型
- 整数类型
- 浮点数类型
- 定点数类型
- 日期类型
- 时间类型
- 字符串类型
- 二进制类型
- ...
整数类型
- MySQL 中 整数类型有5种
整数类型 | 字节数 | 无符号取值范围 | 有符号取值范围 |
---|---|---|---|
tinyint | 1 | 0~255 | -128-127 |
smallint | 2 | 0~65 535 | -32 768-32 768 |
mediumint | 3 | 0~16 777 215 | -8 388 608-8 388 608 |
int | 4 | 0~4 294 967 295 | -2 147 483 648-2 147 483 648 |
bigint | 5 | 0~18 446 744 073 709 551 615 | -9 223 372 036 775 808 -9 223 372 036 775 808 -32 768 |
浮点数和定点数类型
- MySQL 中使用浮点数和定点数存储小数
- 浮点数类型
- 单精度浮点数:float
- 双精度浮点数:double
- 定点数类型:decimal
数据类型 | 字节数 | 有符号的取值范围 | 无符号的取值范围 |
---|---|---|---|
float | 4 | -3.402823466E+38~1.175 494 351E-38 | 0和1.175494351E-38~3.402 823 466E+38 |
double | 8 | -1797 693134 862 315 7E+308~2.225 073 858 507 2014E-308 | 022250738585072014E-308~1.797 693 134 862 315 7E+308 |
decimal | M+2 | -1.797 693 134 862 315 7E+308~2.225 073 858 507 201 4E-308 | 0和22250738585072014E-308~1.797 693 134 862 315 7E+308 |
- 注意:decimal的有效范围是由 M 和 D决定的
- M:表示数据的长度
- D:表示小数点后的长度
- 例如:数据类型为decimal(6,2)的数据6.2353,插入后的数据为6.23
字符串类型
- MySQL 中 常用 char 和 varchar 表示字符串
- varchar:存储可变长度的字符串
- 例如:char(M) 或 varchar(M)
- M:字符串的最大长度
- 为char(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节。
- 为 varchar(M)类型时,所对应的数据所占用的字节数为实际长度加1。
插入值 | char(4) | 存储需求 | varchar(4) | 存储需求 |
---|---|---|---|---|
'' | '' | 4个字节 | '' | 1个字节 |
'ab' | 'ab' | 4个字节 | 'ab' | 3个字节 |
'abc' | 'abc' | 4个字节 | 'abc' | 4个字节 |
'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
'abcdef' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
文本类型
- 表示文本数据,如:文章内容,评论/详情等
数据类型 | 存储范围 |
---|---|
tinytext | 0~255字节 |
text | 0~65535字节 |
mediumtext | 0~16777215字节 |
longtext | 0~4294967295字节 |
日期与时间类型
- 日期:YEAR、DATE、TIME、DATETIME
- 时间:timestamp
数据类型 | 字节数 | 取值范围 | 日期格式 | 零值 |
---|---|---|---|---|
year | 1 | 1901-2155 | YYYY | 0000 |
date | 4 | 1000-01-01-9999-12-3 | YYYY-MMDD | 0000-00-00 |
time | 3 | 838.59:59~838:59.59 | HH:MM:SS | 00:00:00 |
datetime | 8 | 1000-01-0100:00:00~9999-12-31 23:5959 | YYYY-MMDDHH:MMSS | 0000-00-0000:00:00 |
timestamp | 4 | 1970-01-0100:00:01 ~2038-01-1903:14:07 | YYYYMM-DDHH:MM:SS | 0000-00-0000:00:00 |
1.year 类型
- 三种格式 指定类型的值
(1)4位字符串
- 范围:'1901'---'2155'或1901---2155
- 例如:输人 '2019'或2019插人到数据库中的值均为2019。
(2)2位字符串
- 范围:'00'---'99
- '00'---'69'范围的值会被转换为 2000---2069范围的YEAR值
- '70'---'99'范围的值会被转换为1970---1999范围的YEAR 值
- 例如:输人'19'插人到数据库中的值为2019。
(3)2位数字
- 范围:1---99
- 1---69范围的值会被转换为2001--- 2069范围的YEAR值
- 70---99范围的值会被转换为1970---1999范围的YEAR值
- 例 如:输人19插入到数据库中的值为2019。
2.date类型
- 日期值,4种 格式指定DATE类型的值
(1)'YYYY-MM-DD'或者'YYYYMMDD'字符串格式
- 输人'2019-01-21'或'20190121',插人数据库中的日期都为2019-01-21
(2)'YY-MM-DD'或者'YYMMDD'字符串格式
- YY:表示的是年
- 范围:'00'---'99
- '00'---'69'范围的值会被转换为 2000---2069范围的YEAR值
- '70'---'99'范围的值会被转换为1970---1999范围的YEAR 值
- 范围:'00'---'99
- 例如:输人'19-01-21'或'190121',插人数据库中的日期都为2019-01-21
(3)YY-MM-DD或者YYMMDD数字格式
- 例如:输入19-01-21或190121,插人数据库中的日期都为2019-01-21。
(4)CURRENT_DATE或者NOW()
- 表示当前系统日期。
3.time类型
- 时间值
- 形式,HH:MM:SS
- HH:表示小时
- MM:表示分
- SS:表示秒
- 三种格式指定time类型的值
(1)'D HH:MM:SS'字符串格式
- D:表示日可取0---34之间的值
- 例如:输入'2 11:30:50'插人数据库中的日期为59:30:50。
(2)'HHMMSS'字符串格式或者HHMMSS数字格式
- 例如:输人'115454'或115454,插入数据库中的日期为11:54:54
(3)CURRENT_TIME或NOW()
- 输人当前系统时间
3.datetime类型
- 表示日期和时间
- 形式为'YYYY-MM-DD HH: MM:SS'
- YYYY:表示年
- MM:表示月
- DD:表示日
- HH:表示小时
- MM:表示分
- SS: 表示秒
- 4种格式指定DATETIME类型的值
(1)'YYYY-MM-DD HH:MM:SS'或者'YYYYMMDDHHMMSS'字符串格式
- 表示的日期和时间
- 例如:输人'2019-01-22 09:01:23'或 '20140122_0_90123'插人数据库中的 DATETIME 值都为 2019-01-22 09:01:23。
(2)'YY-MM-DD HH:MM:SS'或者'YYMMDDHHMMSS'字符串格式
- 表示的日期和时间
- YY:表示年,范围为'00'---'99',与date类型中的YY相同
(3)YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式
- 表示日期
- 例如:插入20190122090123或者190122090123,插人数据库中的DATETIME值都 为 2019-01-22 09:01:23。
(4)NOW
- 输人当前系统的日期和时间
4.timestamp类型
- 表示日期和时间
- 显示形式与DATETIME相同但取值范围比DATETIME小
(1)CURRENT_TIMESTAMP
- 使用CURRENT_TIMESTAMP输人系统当前日期和时间
(2)NULL
- 输人NULL时系统会输人系统当前日期和时间
(3)无任何输人时系统会输入系统当前日期和时间
二进制类型
- MySQL 中常用 blob村粗二进制类型的数据
- 例如:图片、PDF文档等
数据类型 | 存储范围 |
---|---|
tinyblob | 0~255字节 |
blob | 0~65 535字节 |
mediumblob | 0~16 777 215字节 |
longblob | 0~4 294 967 295字节 |