文章目录
常用数据类型
整型
tinyint
**取值范围:**只允许 -128 ~127 (默认有正负数)
使用tinyint unsigned 时取值范围是 0~255
根据实际需求使用,使用例子:
create table tabtest(
id int primary key auto_increment, -- auto_increment让该字段自增,无需传值,并设为主键。
name varchar(16),
age int tinyint unsigned --不需要负数
)default charset=utf8;
int
取值范围:
int 取值范围 -2147483648 ~ 2147483647
int unsigne 取值范围 0 ~ 4294967295
bigint
bigint 取值范围 -922337203654775808 ~ 922337203654775807
bigint unsigne 取值范围 0 ~ 18446744073709551615
浮点型
decimal
decimal(m,d)
-- 准确的小数值,m为数字长度(最小值1 最大值65),d为小数点后几位(最小值0 最大值30) ,如果小数位超过限制,则四舍五入。
例如:
create table tabtest(
id int primary key auto_increment, -- auto_increment让该字段自增,无需传值,并设为主键。
name varchar(16),
age int,
salary decimal(8,2) -- 定义一个salary字段为浮点型总长度8,小数位2位小数。
)default charset=utf8;
实际使用中主要使用decimal较多
在存储同样范围的值时,通常比decimal使用更少的空间,float使用4个字节存储,double使用8个字节 ,
而 decimal依赖于M和D的值,所以decimal使用更少的空间
decimal类型的数据存储形式是,将每9位十进制数存储为4个字节,如果设置的位数不是9的倍数,则按一下表的对应关系计算。
位数 | 字节占用 |
---|---|
0 | 0 |
1-2 | 1 |
3-4 | 2 |
5-6 | 3 |
7-9 | 4 |
如:字段decimal(20,6),20-6=14,其中小数部分为6,就对应上表中的3个字节,而整数部分为14,14-9=5,就是占4个字节再加上表中的3个字节
float
float单精度小数部分只能精确到后面6位,加上小数点前的一位,即有效数字为7位
double
double双精度小数部分能精确到小数点后的15位,加上小数点前的一位 有效位数为16位
double 和float也可以像decimal一样限制长度:
-
float(M,D) unsigned 中的M代表可以使用的数字位数,D则代表小数点后的小数位数, unsigned 代表不允许使用负数
-
double(M,D) unsigned 中的M代表可以使用的数字位数,D则代表小数点后的小数位数
字符串
char
定长字符串
固定11个字符串存储,如果不够11位字符串则按11位,超过报错。由于是固定长度,所以比varchar查询速度快。
char(n) -- n最大为255
create table tabtest(
id int primary key auto_increment,
name varchar(16),
age int,
salary decimal(8,2),
mobile char(11) -- 规定mobile字段最长为11位
)default charset=utf8;
varchar
边长字符串
限制字符串长度,按实际长度存储。相对char更节省空间。
varchar(n) -- n最大占用65535字节,如一个中文占用3个字节,则n最大就是65535/3=n
create table tabtest(
id int primary key auto_increment,
name varchar(16),
age int,
salary decimal(8,2),
mobile varchar(11) -- 规定mobile字段最长为11位
)default charset=utf8;
text
text(n) -- n最大占用65535 (字符)
-- 一般用于长文本,文章等
create table tabtest(
id int primary key auto_increment,
name varchar(16),
age int,
salary decimal(8,2),
mobile varchar(11),
article text -- 规定article字段为text类型
)default charset=utf8;
mediumtext
最大可以使用16777215个字符。不常用
langtext
最大可以使用4294967295个字符,或者4G的数据。不常用
datetime 时间字符串
格式:YYYY-MM-DD HH:MM:SS
如:2022-07-18 22:00:00
date 时间字符串
格式:YYYY-MM-DD
如:2022-07-18
其他更多数据类型可以参照官方文档。