MySQL:13---MySQL的数据类型

MySQL支持多种数据类型,主要的数据类型如下

  • 数值数据类型:整型、浮点型、定点小数类型
  • 日期/时间类型
  • 字符串类型:文件字符串、二进制字符串

一、整型

1.各个整型的信息如下

  说明 存储需求
tinyint 很小的整数 1字节
smallint 小的整数 2字节
mediumint 中等大小的整数 3字节
int(integer) 普通大小的整数 4字节
bigint 大整数 8字节
  有符号范围 无符号范围
tinyint -128--127 0--255
smallint 32768--32767 0--65535
mediumint -8388608--8388607 0--16777215
int(integer) -2177483648--2147483647 0--4294967295
bigint -9223372036854775808--9223372036854775807 0--18446744073709551615

2.整型的宽度

  • 每个整型都有各自默认的宽度,宽度指数据显示几位
  • 数据宽度与取值范围和占用空间无关

二、浮点数

1.分类

  • ①单精度浮点类型:float
  • ②双精度浮点类型:double
  • ③定点小数类型:decimal(m,n)
  说明 存储需求
float 单精度浮点数 4字节
double 双精度浮点数 8字节

decimal(m,n)

dec(m,n)

压缩的“严格”定点数 m+2个字节

说明

  • decimal(m,n)。m代表精度:表示总共的位数(不包括小数点)。n代表标度:小数的位数
  • float和double使用时也可以指定精度和标度
  • 定点小数类型实际是以字符串形式存储的,在精度要求比较高的时候使用

2.注意事项

  • 插入数据时,如果值越界了,会报错
  • 插入数据时,如果值没有越界,但是小数越界了,多余出来的小数会丢失

三、文本字符串类型

1.分类

  说明 存储需求
char(m) 固定长度非二进制字符串 m字节,1<=m<=255
varchar(m) 变长非二进制字符串 L+1字节,L<=m和1<=m<=255
tinytext 非常小的非二进制字符串 L+1字节,L<2^{8}(255)
text 小的非二进制字符串 L+2字节,L<2^{16}(65535)
mediumtext 中等大小的非二进制字符串 L+3字节,L<2^{24}(16777215)
longtext 大的非二进制字符串 L+4字节,L<2^{32}(4GB)
enum 枚举类型,只能有一个枚举字符串值 1或2个字节,取决于枚举值的数目(最大值65535)
set 一个设置,字符串对象可以有0个或者多个set成员 1,2,3,4或8个字节,取决于集合成员的数量(最多64个成员)
  • varchar和text类型是变长类型。其存储长度取决于列值的实际长度(即L),而不是取决于类型的最大可能尺寸

2.char和varchar类型

  • char是固定长度字符串。例如:name  char(10),如果name为'abc',name仍占用10字节
  • varchar是变长字符串。例如:name varchar(10),如果name为'abc',name只占用4字节(3字节字符和一个字符串结束符)

注意事项

  • char没有字符串结束符,varchar有字符串结束符
  • 插入数据时,字符串的长度都不能超出char和varchar的最大长度。
  • 如果varchar插入的字符串与最大长度相同,则结束符丢弃
  • 如果插入字符结尾有单/多个空格,char会舍弃空格,varchar会保留空格

3.text类型

  • text类型常用于保存文章内容、评论等字符多时使用
tinytext 非常小的非二进制字符串 L+1字节,L<2^{8}(255)
text 小的非二进制字符串 L+2字节,L<2^{16}(65535)
mediumtext 中等大小的非二进制字符串 L+3字节,L<2^{24}(16777215)
longtext 大的非二进制字符串 L+4字节,L<2^{32}(4GB)

4.enum类型

  • enum总有一个默认值。如果enum列声明为NULL,默认值为NULL,如果enum列声明为NOT NULL,其默认值为允许的值列表的第1个元素
  • 枚举最多有65535个元素
  • 创建

create  table  student(enm  enum('first','second','third'));

  • 插入数据

insert  into  student  values('first'),('second'),('third'),(NULL);

  • 查询

select  enm,enm+0  from  student;

5.ste类型

四、二进制字符串类型

1.分类

  说明 存储需求
bit(m) 位字段类型 大约(m+7)/8个字节
binary(m) 固定长度二进制字符串 m个字节
varbinary(m) 可变长度二进制字符串 m+1个字节
tinyblob(m) 非常小的blob L+1字节,L<2^{8}
blob(m) 小的blob L+2字节,L<2^{16}
mediumblob(m) 中等大小的blob L+3字节,L<2^{24}
longblob(m) 非常大的blob

L+4字节,L<2^{32}

2.bit类型

  • bit(m)。m为值的位数(bit位),范围为1~64。如果m省略,则默认为1位
  • 普通查看不能查看bit类型定义的字段,需要使用函数转换(bin()

创建表:create  table stduent(b  bit(4));

插入数据:insert into  student  values(2),(9),(15);

查看数据:select  bin(b)  from student;

3.binary和varbinary类型

4.blob类型

五、year类型

1.特点

  • year类型是一个单字节类型用于表示年,在存储时只需要1字节

2.使用

  • 以4位字符串或者4位数字格式:范围'1901'~'2155'。字符串与数字格式都是一样的,例如插入式输入'2019'或者2019,插入到数据库值均为2019
  • 以2位字符串格式:范围为'00'~'99',超过取值范围自动转换为2000年。其中,'00'~'69'表示2000~2069年,'70'~'99'表示1970~1999年。'0'与'00'作用相同
  • 以2位数字格式:范围为1~99,这里的0将被转换为0000。1~69代表2001~2069,70~99代表1970~1999

六、time类型

七、date类型

八、datetime类型

九、timestamp类型

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/87988521