mysql列类型(数据类型)
[用的多用👾标志]
数值类型
bit(M)[M可以指定范围1~64 默认为1]
tinyint[1个字节]【有符号是-128~127 无符号即是0~255 默认有符号】
smallint[2个字节]
mediumint[3个字节]
int [4个字节]👾
bigint[8个字节]
小数类型
float[单精度 4个字节]
double[双精度 8个字节]👾
decimal[M长度,D小数点精确个数] (不确定大小)👾
文本类型(字符串类型)
char(size) [0-255]👾
varchar(size) [0-65535]即(0~2^16-1)0~二的十六次方 -1👾
text[0~2^16-1](与varchar等价)👾
longtext[ 0 ~ 2^32 -1]
二进制数据存放(不多)
blob[0~2^16-1]
longblob[0~2^32-1]
日期类型
date[日期类型 年月日]3字节
time[时间 时分秒]3字节
datetime[年月日时分秒 YYYY-MM-DD HH:mm:ss] 8字节👾
timestamp[表示时间戳,可自动更新,用于自动记录insert、update操作时间]3字节👾
year[存放年]1字节
使用规范 :在能满足需求的情况下,尽量选择占空间小的类型
如果没有指定 unsinged 则 该字段是有符号的【tinyint -128~127】
如果指定 unsinged 则 该字段是没有符号的【tinyint 0~255】
bit(m) 1<m<64 范围按照给的位数来确定 m=8 表示一个字节=0~255(0~2^8-1)
输出到表是二进制写法
查询时仍然可以用数字来查询
01的数据存储适合使用
create table t1(num bit(8))
数值型(小数)
float/double[unsigned]分有无符号
decimal[M小数位数(精度)的总数,D小数点(表数)后的位数]
decimal可以存放超大的数 比bigint还大
D=0 则没有小数部分 即是一个整数
M最大为65 D最大为30
如果省略D 默认为0
省略M 默认为10
字符串基本使用
char(size)
size固定长度字符串 最大255字符 不是字节数 不管中英文都是4个 按字符计算
就是 插入'aa' 但是分配了4字符 那么就会占用4字符空间
varchar(size)
size 可变 长度字符串 最大65535字节 不是字节数 不管中英文都是4个
就是 插入'aa' 但是分配了4字符 那么就只会占用 'aa' 的 2 字符空间 不会造成空间浪费
varchar本身还需要1~3字节来记录存放内容的长度
即varchar真实占用的空间是 L (数据实际大小) + (1~3)字节
按照固定好的编码来存放数据 计算方式如下 ↓
可变长度字符串 最大65535字节【utf8编码最大21844字符 1~3个字节用于记录大小】
21844字符=[65535-3(用于记录字段大小 不可用) ]/3(1字符=3字节)
[gbk编码是2字节=1字符 即 (65535-3)/2] 字段类型 charset gbk
char查询速度比varchar快
时间类型
timestamp 时间戳
t3 timestamp not null default current_timestamp on update current_timestamp
时间戳语句↑ 不为空 默认当前时间 修改时自动以当前时间更新
如果更新该表某条记录 t3列会自动以当前时间进行更新
[弹幕:只更新对应位置的时间戳,不是整个logintime列的所有时间戳]