MySQL数据类型

MySQL的数据类型大致分为:数值、时间和字符串

二进制

  • bit [(M)]

二进制位(10001),m表示二进制位的长度(1-64),默认m=1

  • tinyint

小整数,数据类型用于保存一些小范围的整数值范围
有符号:-128~127(默认是有符号)
无符号:0~255
特别的:MySQL中无布尔值,使用 tinyint(1) 构造。

整数

  • smallint
  • int
  • bigint
// 验证默认int是否是有符号
create table userinfo(
  num int
);

insert into userinfo(num) values(-9); // 操作成功,说明默认是有符号的
// 设置int是无符号的
create table userinfo(
  num int unsigned;
);

insert into userinfo(num) values(-1); // 操作失败

浮点型

  • decimal

十进制小数,是精确的
内部是按字符串存取的,存入什么东西,拿出来还是什么东西

create table userinfo(
  num decimal(6),  // 表示一共6位有效数字
  nid decimal(6,2)  // 6位有效数字中,其中有两位小数
);
  • float

是不靠谱的,数值越大,越不精准,一般不使用

  • double

也是不靠谱,数值越大,越不精准,但是相对于float会是稍微精准点,一般不使用

字符串

  • char

定长,设定长度之后,无论存入值长度,最终的值都会是一个定长。最大可包含255个字符。
性能相对 varchar较高。主要体现在存取值。定长无需计算。
会存在浪费空间

create table userinfo(
  name char(7)  // 会在存储的时候开辟7个位置
);

insert into userinfo(name) values('we');  // 记录的是 we     ,后面有5个空格
insert into userinfo(name) values('12345678');  // 记录的是 1234567,超过部分舍弃
  • varchar

变长,设定长度之后,是一个最长长度。值会小于等于这个长度。最大可包含255个字符。
性能相对char 低一些
好处就是可以节省空间。

create table userinfo(
  name varchar(7),    // 最多会占7个位置
);

insert into userinfo(name) values('we');  // 记录的是 we,后面有5个空格
insert into userinfo(name) values('12345678');  // 记录的是 1234567,超过部分舍弃
  • text

变长,用于保存较大的字符串。最多可以 65535(2**16-1)个字符

  • mediumtext

变长

  • longtext

变长

二进制

  • tinyblob
  • blob
  • mediumblob
  • longblob

应用场景相对较少
例如上传图片视频等,可以使用二进制形式。但是一般做法是存到本地硬盘,数据库中记录的是一个本地地址。

时间

  • date

YYYY-MM-DD (1000-01-01/9999-12-31)

create table userinfo(
  birthday date
);

insert into userinfo(birthday) values('1998-01-22 18:37'); // 只会存入 1998-01-22
  • time

HH:MM:SS (‘-838:59:59’/’838:59:59’)

  • year

YYYY (1901/2155)

  • datetime

YYYY-MM-DD HH:MM:SS (1000-01-01 00:00:00/9999-12-31 23:59:59)

  • timestamp

YYYYMMDD HHMMSS (1970-01-01 00:00:00/2037 年某时)

枚举(enum)

只能在其中取一个值

create table shirts(
  name varchar(10),
  size enum('x-small','mall','medium','large','x-large')
);

insert into shirts(name,size) values('dress shirt','large'),('t-shirt','medium'),('polo shirt','small');

集合(set)

可以取多个值

create table myset(
  col set('a','b','c','d')
);

insert into myset(col) values('a,b'),('d,a'),('a,,d,a'),('d,a,d');
    原文作者:程序渣渣猿
    原文地址: https://www.jianshu.com/p/f3f4f2be4726
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞