前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 数据类型

MySQL 数据类型

作者头像
技能锦囊
发布2020-04-14 17:43:58
1.7K0
发布2020-04-14 17:43:58
举报
文章被收录于专栏:MySQL 笔记MySQL 笔记

学会自定义表中每一个字段(列)的数据类型,对学习SQL数据库以及性能调优有着很大的帮助!

数据类型是啥?

它可以用来表示某个 字段(列) 的数据内容格式是数字(例123)还是字符(例"一二三") ,可以控制字段的字符长度和硬盘占用空间;

MySQL常用数据类型:[数值]、[日期时间]和[字符串]类型。

一、数值

1、整型

MySQL数据类型

含义(有符号)

tinyint

1个字节范围(-128~127)

smallint

2个字节范围(-32768~32767)

mediumint

3个字节范围(-8388608~8388607)

int

4个字节范围(-2147483648~2147483647)

bigint

8个字节范围(+-9.22*10的18次方)

在int类型里,都是用来存储整形数据,可以根据实际需要选取数据类型。

取值范围如果加了unsigned,则最大数值范围翻倍,比如 tinyint unsigned的取值范围为(0~256)。

int(m)里的m是表示SELECT查询结果集中的显示宽度,无实际意义,不影响实际的取值范围

2、浮点型

MySQL数据类型

含义

float(m,d)

单精度浮点型8位精度(4字节)m总个数,d小数位

double(m,d)

双精度浮点型16位精度(8字节)m总个数,d小数位

decimal(m,d)

定点数总个数m<38, d小数位

设一个字段定义为float(5,2),如果插入一个数123.45678,实际数据库里存的是123.46(四舍五入)

如果不填参数,则根据硬件允许的限制来保存值,不推荐.

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值,一般用来计算或存储货币金额。如果确定数据长度以及小数点位数则采用定点数据类型。


二、字符串

MySQL数据类型

含义

char(n)

固定长度最多255个字符

varchar(n)

可变长度最多65535个字符

tinytext

短文本字符串最多255个字符

text

长文本数据最多65535个字符

mediumtext

中等长度文本数据最多2的24次方-1个字符

longtext

超长文本数据最多2的32次方-1个字符

了解:

① ASCII编码,一个英文字符占一个字节,一个中文占两个字节 ② UTF-8编码中,一个英文字符占一个字节,一个中文占三个字节 ③ Unicode编码中,一个英文字符占两个字节,一个中文占两个字节

char 和 varchar

1. char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾空格将被删除

2. char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(5),存入3个字符将占用4个字节的物理空间。

3. char类型的字符串检索速度要比varchar类型的快。

从空间上考虑,用varchar合适; 从效率上考虑,用char合适; 根据实际需求选用合适数据类型.

varchar 和 text

1. varchar可指定n(字符长度),text不能指定,内部存储空间varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。

2. text类型不能有默认值。

3. varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

总之,字符长度经常变化用varchar,固定长度用char, 超过255字符用varchar和text,能用varchar不用text


三、日期时间类型

数据类型

字节

含义

date

4字节

日期值例 '2020-02-02'

time

3字节

时间值例 '12:01:02'

datetime

8字节

日期时间例 '2020-02-02 12:02:02'

timestamp

4字节

自动存储记录修改时间

若定义一个字段为timestamp,其他字段内容修改的时候,这个字段里的时间数据会自动刷新为当前时间,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

注意日期格式,data类型分隔符为"-",time类型分隔符为":"

数据类型的附加属性

设计数据表字段属性的时候通常会在数据类型后加一些默认值

例: <字段名> char(6) not null 定义了 [字段名] 数据类型为[字符串] (字符长度小于6) ,插入数据时 [不能为空]

MySQL关键字

含义

NULL

数据列可包含NULL值

NOT NULL

数据列不允许包含NULL值

DEFAULT

默认值

PRIMARY KEY

主键

UNSIGNED

无符号

AUTO_INCREMENT

自动递增,适用于整数类型

合理选择数据类型, 可以节省物理存储空间, 有效地提升数据的计算性能...

那么如何选取数据类型?

1.按需选用‘短’数据类型2.对于int类型的,如果不需要存取负值,则加上 unsigned3.字符串优先选用char(n)和varchar(n),长度不够时选用text数据类型4.避免使用 Null,NULL是列默认的属性,通常我们要指定为NOT NULL。有NULL的列值会使得索引、索引统计和值比较更加复杂。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技能锦囊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据类型是啥?
  • MySQL常用数据类型:[数值]、[日期时间]和[字符串]类型。
  • 一、数值
    • 1、整型
      • 2、浮点型
      • 二、字符串
        • 了解:
          • char 和 varchar
            • varchar 和 text
            • 三、日期时间类型
              • 数据类型的附加属性
                • 那么如何选取数据类型?
                相关产品与服务
                云数据库 MySQL
                腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档