mysql整理2-MySQL数据类型以及char与varchar的区别

MySQL数据类型

数值类型:
整型
int: 4个字节 21亿
浮点数:
float(m,n):m总长度 n小数点位数 (默认值10,2)
精度24位
double(m,n): 默认值16,4
精度53位
decimal(m,n):经常用于金融数据保存,必须声明长度和精度

字符串类型:
char(n):定长长度字符串
varchar(n):可变长度字符串
text: 大文本

日期类型:
date: 日期 YYYY-MM-DD
time: 时间 HH:MM:SS
datetime: 日期时间 YYYY-MM-DD HH:MM:SS
1000-01-01 00:00:00 – 9999-12-31 23:59:59
timestamp:时间戳 YYYYMMSSHHMMSS
1970-01 – 2037-12
year:

其他类型:
blob: 存放二进制数据
enum: 枚举
set:集合类型
json: json数据

char和varchar的区别?

区别一,定长和变长
char 表示定长,长度固定,varchar表示变长,即长度可变。当所插入的字符串超出它们的长度时,视情况来处理,如果是严格模式,则会拒绝插入并提示错误信息,如果是宽松模式,则会截取然后插入。如果插入的字符串长度小于定义长度时,则会以不同的方式来处理,如char(10),表示存储的是10个字符,无论你插入的是多少,都是10个,如果少于10个,则用空格填满。而varchar(10),小于10个的话,则插入多少个字符就存多少个。
varchar怎么知道所存储字符串的长度呢?实际上,对于varchar字段来说,需要使用一个(如果字符串长度小于255)或两个字节(长度大于255)来存储字符串的长度。但是因为他需要有一个prefix来表示他具体bytes数是多少(因为varchar是变长的,没有这个长度值他不知道如何读取数据)。

区别之二,存储的容量不同
对 char 来说,最多能存放的字符个数 255,和编码无关。
而 varchar 呢,最多能存放 65532 个字符。VARCHAR 的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节

你可能感兴趣的:(数据库)