为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL数据类型

标签:
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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消