目录
- 类型分类
- 整数类型
- 有符号和无符号的区别
- 除char默认都是有符号
- 声明
- 区别
- Tinyint
- Smallint
- Mediumint
- Int
- Bigint
- 浮点数类型
- Float
- Double
- 定点数类型
- Decimal(M,D)
- 日期/时间类型
- Yeay
- Date
- Datetime
- Timestamp
- 字符串类型
- Char
- Varchar
- Char 与 Varchar的区别
- Tinytext
- Text
- Mediumtext
- Longtext
- Enum
- Set
- 二进制类型
- Binary
- Varbinary
- TINYBLOB
- Bolb
- Mediumblob
- Longblobl
- Bit(M)
类型分类
三类六种
- 数值类型
- 整数类
- 浮点数
- 定点数
- 日期/时间类型
- 字符串(字符)类型
- 字符串
- 二进制
整数类型
整数类型细分为5种,每种整数类型所占用的字节数和取值范围长度不同;
有符号和无符号的区别
整型的每一种都分为:
- 无符号(unsigned)
- 有符号(signed)(float和double总是带符号的)
除char默认都是有符号
在除char以外的数据类型中,默认情况下声明的整型变量都是有符号的类型;
声明
如果需声明无符号类型的话就需要在类型前加上unsigned。
区别
无符号版本和有符号版本的区别
就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个short能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
Tinyint
Smallint
Mediumint
Int
Bigint
浮点数类型
存储的小数都用浮点数和定点数类型,浮点数分为单精度和双进度;
Float
Double
定点数类型
Decimal(M,D)
Decimal类型的长度取值范围和Double类型的一样,不同的是Decimal(M,D) M决定数据的长度,D决定小数点后面的长度;
Example:
Decimal(6,2)类型的数据 3.1415插入数据库后,显示结果为3.14
日期/时间类型
细分为5种,每种类型就是字节数、取值范围、日期格式、零值不同;
如果插入的数值不合法,系统会自动将对应的零值插入数据库中;
Yeay
Date
Datetime
Timestamp
字符串类型
存储字符串
Char
默认使用无符号;
适合存储用户姓名这种固定长度的场景;搜索速度比Varchar快;
Varchar
适合存储用户的简介这种可长可短的场景;
Char 与 Varchar的区别
char(n)是定长格式,格式为char(n)的字段固定占用n个字符宽度,如果实际存放的数据长度超过n将被截取多出部分,如果长度小于n就用空字符填充。
varchar(n)是变长格式,这种格式的字段根据实际数据长度分配空间,不浪费对于的空间,但是搜索数据的速度会麻烦一点。
一般地说,只要一个表有一个字段定义为varchar(n)类型,那么其余用char(n)定义的字段实际上也是varchar(n)类型。
如果你的长度本身不长,比如就3~10个字符,那么使用char(n)格式效率比较高,搜索速度快。但是如果有的数据很长,有的数据有比较短,比如注册用户的简介这样的字段,实在没有办法,而且很在乎浪费的空间,那么就用varchar(n)格式。
Tinytext
Text
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
Mediumtext
Longtext
Enum
Set
二进制类型
存储图片、声音等多媒体数据;
Binary
Varbinary
TINYBLOB
Bolb
一个二进制大大对象,可以容纳可变数量的数据
Mediumblob
Longblobl
Bit(M)