1.整形
Size | mysql | sqlserver |
---|---|---|
1字节 | tinyint | tinyint(0-255)/bit(只能是0或1) |
2字节 | smallint | smallint |
3字节 | mediumint | 无 |
4字节 | int / integer | int |
8字节 | bigint | bigint |
mysql 可以在定义时加上 unsigned,可实现无符号整数。(在navicat上有勾选项)。 sqlserver 不支付无符号选择
2.浮点
mysql | |
float(m,d) | 单精度浮点4字节 m表示总个数 d表示小数位 |
double(m,d) | 双精度浮点8字节 m表示总个数 d表示小数位 |
sqlserver | |
float | 单精度浮点(实质是float(24) 4字节,float(53) 8字节,系统自动转换) 存在精度损失 |
real | 双精度浮点8字节 |
decimal(p,s) | m表示总个数 d表示小数位 所占内存按总个数计算 |
numeric(p,s) | m表示总个数 d表示小数位 所占内存按总个数计算 |
moeny | 用来表示货币 精确到小数点后4位 -9220亿到9220亿之间 |
3.日期
mysql | |
date | 3字节 YYYY-MM-DD 日期值 |
time | 3字节 HH:MM:SS 时间或持续时间 |
year | 1字节 YYYY 年份 |
datetime | 8字节 YYYY-MM-DD HH:MM:SS 日期加时间 |
timestamp | 4字节 YYYYMMDD HHMMSS 日期加时间 2038年就到期了有限制 |
sqlserver | |
datetime | 8字节 日期时间 精确到 3.33毫秒(前面4字节存储1900年1月1日以来的天数 后面4字节存储当前当天经过的毫秒值) |
smalldatetime | 4字节 日期时间 精确到分钟 |
datetime2(n) | 动态字节n表示一秒的精度 |
date | 3字节YYYY-MM-DD日期类型 |
time | 时间类型 hh:mm:ss.nnnnnnn |
4.二进制
mySql | |
binary(M) | M(1-8000)固定M字节 最大可存储M字节数据(前面补0)占用M+4字节 |
varbinary(M) | 可变二进制数据 最大可存储M字节数据 占用M+4字节 前面存储实际存储字节数 |
bit(M) | M位二进制数据,M值最大64(也就是8字节) |
tinyblob | 可变长二进制(255)字节 |
blob | 可变长二进制(2^16-1)字节 |
mediumblob | 可变长二进制(2^24-1)字节 |
longblob | 可变长二进制(2^32-1)字节 |
sqlServer | |
bit | 存储 0/1 1表示true 0表示false |
binary(M) | M(1-8000)固定M字节 最大可存储M字节数据 (前面补0) 占用 M+4字节 |
varbinary(M) | M(1-8000)可变二进制, |
image | 存储数据量大的二进制数据 |
5.字符串
mysql | 数字表示的都是字符串长度而非字节数,mysql要注意编码 |
char(M) | 定长为M的字符串,不足M末尾补空字符串 M为0-255 |
varchar(M) | 可变长字符串 M为字节最大值 M为0-65535 |
tinytext | 可变字符串(0-255) |
text | 可变字符串(2^16-1) |
mediutext | 可变字符串(2^24-1) |
longtext | 可变字符串(2^32-1) |
sqlserver | n是字符串长度,不是字节数 |
char(n) | 定长为n的字符串 n为(1-8000) 纯英文使用 |
varchar | 可变长字符串 n为(1-8000) |
nchar(n) | 定长为n的字符串unicode编码 n为(1-4000) 占用大小为n*2 中文使用带n的 |
nvarchar(n) | 可变长字符串unicode编码 n为(1-4000) |
text | 可变长度字符串 最大存储2^32-1长度字符串 |
ntext | 可变长度字符串unicode编码 最大存储2^16-1长度字符串 |