首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql中常用类型长度

MySQL中的数据类型及其长度是数据库设计的重要组成部分,它们决定了数据的存储方式和存储容量。以下是一些MySQL中常用的数据类型及其长度说明:

数值类型

  1. 整型
    • TINYINT:占用1字节,范围是-128到127(有符号),或0到255(无符号)。
    • SMALLINT:占用2字节,范围是-32768到32767(有符号),或0到65535(无符号)。
    • MEDIUMINT:占用3字节,范围是-8388608到8388607(有符号),或0到16777215(无符号)。
    • INTINTEGER:占用4字节,范围是-2147483648到2147483647(有符号),或0到4294967295(无符号)。
    • BIGINT:占用8字节,范围是-9223372036854775808到9223372036854775807(有符号),或0到18446744073709551615(无符号)。
  • 浮点型
    • FLOAT:单精度浮点数,占用4字节。
    • DOUBLEDOUBLE PRECISION:双精度浮点数,占用8字节。
  • 定点型
    • DECIMALNUMERIC:用于存储精确的小数值,长度可指定。

字符串类型

  1. 定长字符串
    • CHAR:长度固定,最大长度为255个字符。
  • 变长字符串
    • VARCHAR:长度可变,最大长度为65535个字节(实际限制取决于字符集)。

日期和时间类型

  1. DATE:存储日期,格式为'YYYY-MM-DD'。
  2. TIME:存储时间,格式为'HH:MM:SS'。
  3. DATETIME:存储日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。
  4. TIMESTAMP:存储日期和时间,与时区相关,格式也为'YYYY-MM-DD HH:MM:SS'。

二进制数据类型

  1. BINARY:定长二进制字符串。
  2. VARBINARY:变长二进制字符串。
  3. BLOB:用于存储大量二进制数据。

其他类型

  1. ENUM:枚举类型,预定义一组可能的值。
  2. SET:集合类型,预定义一组可能的值,允许多选。
  3. TEXT:用于存储大量文本数据。
  4. BLOB 类型(如 TINYBLOB, MEDIUMBLOB, LONGBLOB):用于存储不同大小的二进制大对象。

应用场景

  • 整型和浮点型常用于存储数值数据,如用户ID、价格、评分等。
  • 字符串类型常用于存储文本数据,如用户名、地址、描述等。
  • 日期和时间类型常用于存储时间相关的数据,如出生日期、创建时间等。
  • 二进制数据类型常用于存储图片、音频、视频等文件。

遇到的问题及解决方法

问题:为什么使用VARCHAR而不是CHAR

原因VARCHAR是变长字符串,只占用实际存储的字符长度加上一个或两个字节的额外空间(取决于MySQL版本和配置)。而CHAR是定长字符串,无论实际存储多少字符,都会占用指定的长度。因此,使用VARCHAR可以节省存储空间,特别是当字符串长度变化较大时。

解决方法:在设计数据库表时,如果字段的字符串长度不确定或变化较大,应优先考虑使用VARCHAR类型。

参考链接MySQL官方文档 - 数据类型

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

详解 mysql int 类型的长度值问题

秉着好奇心, 打开了 google ~ 引入大神的解答. mysql 在建表的时候 int 类型后的长度代表什么? 是该列允许存储值的最大宽度吗?...所以我在网上查阅了一些资料, 也仔细的看了 mysql 手册关于 int data type 的说法. 以下是每个整数类型的存储和范围 (来自 mysql 手册) ?...每个整数类型的存储和范围.png 表格一共有四列分别表式: 字段类型, 占用字节数, 允许存储的最小值, 允许存储的最大值....mysql 我们看到现在我的 number 字段, 长度 (M)=5, 属性 =UNSIGNED ZEROFILL(无符号, 用 0 来填充位数), 设置这个属性后我往表时插入数据, 系统会自动把 number...mysql 手册上还有这么一句话 "当 mysql 为某些复杂的联结 (join) 生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度".

3.6K20
  • MySQL常用的表类型

    它是MySQL的默认数据表类型,基于了传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问方法)的缩写,一般来说,它是存储记录和文件的标准方法...MyISAM表(TYPE=MYISAM)是ISAM类型的一种延伸,具有很多优化和增强的特性。 是MySQL的默认表类型。...MyISAM支持大表文件(大于4G) 允许对BLOB和TEXT列进行索引 支持使用键前缀和使用完整的键搜索记录 表数据和表索引文件可以依存在不同的位置,甚至是不同的文件系统中。...二、InnoDB   InnoDB是MySQL 4.0之后推出的一种比较新的数据表类型,这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。...精细的(行级和表级)锁提高了MySQL事务处理的带走度,同时其也支持无锁定读操作(以前只在Oracle中包含)和多版本的特性。

    1.3K50

    MySQL中索引的长度的限制

    参考: http://dinglin.iteye.com/blog/1681332 单列索引的长度的限制     (5.6里面默认不能超过767bytes,5.7不超过3072bytes):     起因是...255×4>767, 于是增加了一个参数叫做 innodb_large_prefix     # 256的由来: 只是因为char最大是255,所以以前的程序员以为一个长度为255的index就够用了,...--- by 阿里-丁奇 在MySQL5.6里默认 innodb_large_prefix=0 限制单列索引长度不能超过767bytes    官网文档:https://dev.mysql.com/doc.../refman/5.6/en/innodb-parameters.html#sysvar_innodb_large_prefix 注意: 在MySQL5.6里面,设置了innodb_large_prefix...在MySQL5.7里默认 innodb_large_prefix=1 解除了767bytes长度限制,但是单列索引长度最大还是不能超过3072bytes 联合索引的长度的限制 (不能超过3072bytes

    5.5K30

    mysql 常用的数据类型

    常用的数据类型 int 数字范围-2**32 ~ 2**32-1 bigint 数字范围-2**63 ~ 2 ** 63-1 float float(m,d), 其中m表示的是有效位, d表示小数位 有效位就是把当前的小数..., 长度为255个字节 中文字符占据3~4个字节 varchar 表示不定长的字符串, 长度为0~65535个字节 TEXT 长文本类型, 最大长度占据64kb ---- datetime 如果当前时区发生更改..., datetime类型不会发生更改, 与存入的日期保持一致. timestamp 如果当前时区发生更改, timestamp类型会跟着时区更改....常用的运算符 算术运算符 + - * / div 取商 SELECT 5 div 3 mod 取余 SELECT 5 mod 3 比较运算符 = 类似python中的 == SELECT 1 =1 !...and 3 is null 与 is not null 用来判断当前是否有记录 逻辑运算符 NOT AND OR XOR(了解) 异或, 两个值一个True, 一个为False, 当前表达式才为True 常用的函数

    61410

    MySQL修改字段类型、字段名字、字段长度、字段小数点长度。

    文章目录 1:修改类型 2:修改长度 3: 同时修改列名和列的数据类型 4:修改字段类型text(类型) ~>mediumtext(类型) 5:修改字段长度和字段小数点长度 6: 修改字段列名和字段类型...7:指定字段之后新增字段 8:更新表content_text字段类型 9:修改字段类型,修改长度和小数点位数 1:修改类型 mysql> alter table 表名 modify column 字段名...数据库中address表 city字段是varchar(30),修改类型可以用(谨慎修改类型,可能会导致原有数据出错)。...通常可以写成 alter table 表名 modify column 列名 新的列的类型例如:student表中列sname的类型是char(20),现在要修改为varchar(20),SQL语句如下...3: 同时修改列名和列的数据类型 同时修改列名和列的数据类型的方法:通常可以写成 alter table 表名 change column 旧列名 新列名 新的列类型student表中列sname的类型是

    11.3K20

    一文搞懂MySQL表字段类型长度的含义

    不知道大家第一眼看标题的时候有没有理解,什么是“字段类型长度”,这里我来解释下,就比如我们在MySQL建表的时候,比如下面这个建表语句:CREATE TABLE `user` ( `id` int(10...+数字就是该字段的类型长度,比如int(10)就是该字段是int类型长度为10,这下大家应该能理解什么是MySQL表字段类型长度了吧(其实在后续的讲解中会发现这个并不是长度,而是宽度)那么重点问题来了,...JSON 数据类型MySQL 从5.7.8 版本开始提供 JSON 数据类型的支持,与之前将 JSON 数据以字符串形式存储在列中相比,JSON 数据类型增加了以下支持:(1)它提供了 JSON 文档的自动验证...(3)提供了相关操作JSON类型数据的函数1.3 数据类型说明MySQL的数据类型长度是固定的,而不是由建表时指定的,unsigned表示无符号类型CREATE TABLE `table01` ( `...;对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也不是为了限制那些超过该列指定宽度的值的可被显示的数字位数,因此我们得出一下结论:对于数值类型,可以不指定宽度,使用默认长度即可

    1.4K11

    MySQL中数字类型、数值类型、时间类型

    本文链接:https://blog.csdn.net/weixin_38004638/article/details/96135519 一、数字类型 类型 范围 说明 Char(...(1,0) habby set(‘玩电玩’,'睡觉’,'看电影’,'听音乐’) Set 集合最大数目为64 辨別Null与Not Null :Null为允许储存空值(Null) 二、数值 类型...Float 4 bytes,Double 8 bytes Double [(M,D)] -1.79E+308~1.79E+308( 约 ) Decimal [(M,D)] 2.1 int(2)中的...2是能存储的最小显示长度,如果插入的数据不够2位时,需要在数据前面用0补满2位。比如定义一个age字段,其数据类型为int(4),那用select查询出来的结果是“0002”。...但是我们发现,在实际查出来的结果中,并没有补全效果,这是因为系统默认不显示,如果想显示出来,增加zerofill约束即可。

    3.1K20

    数据库中varchar类型 最大长度是多少?

    中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。...二. varchar和char 的区别: char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是: char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL...(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)....类型 被问到一个问题:MySQL中varchar最大长度是多少?...c) 行长度限制 导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。

    10.8K20

    字节|字符、字段类型长度

    常用的字段数据类型: int:整型 double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99; char:固定长度字符串类型; char(10) 如果不足...datetime:日期时间类型 yyyy-MM-dd hh:mm:ssmysql字段每个类型长度大小与建表的类型长度:在创建数据库表时,例如create table user(id int(4) primary...,显示宽度只是指明Mysql最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来。...(9),int(11),bigint(20),这些默认的宽度是跟该类型的取值范围长度相关。...……mysql中 varchar 字段长度,是按照字符的长度计算, 即,name 保存有 "我是谁" , 这是三个字符。

    1.6K60

    【MySQL】MySQL常用的数据类型——表的操作

    ️1.MySQL常用的数据类型 1.1数值类型 分为整型和浮点型: 注解: BIT:这里的bit是二进制的比特位,目的是为了压缩节省空间; TINYINT--BIGINT:都是表示的整型,其大小如上述图片所示...FLOAT(M,D)与DOUBLE(M,D):都是表示浮点型数据,M表示长度,D表示小数点后面的数字个数,但是他们都是IEEE 754标准的浮点数,都有精度丢失,存在误差。...创建表 SQL执行语句:create table 表名(列名 类型,列名 类型.....); mysql> use test96; Database changed mysql> create table...,null表示表格中这个格子是没有填的,允许为空,所以是yes。...3.总结 本期小编总结了数据库MySQL的常用数据类型,以及关于它的表的简单使用,这里的表的使用是在(use 数据库名)的前提之下。 ~~~~最后希望与诸君共勉,共同进步!!!

    8710
    领券