精华内容
下载资源
问答
  • mysql字段的长度
    千次阅读
    2020-04-30 23:55:32

    随笔记知识

    在设计数据表时,无论通过表格设计还是sql语句设计,都会涉及到字段长度的设计,字段长度即数据类型后括号内的数值,如int(10),varchar(10),字段长度在不同的数据类型下意义是不同的,此处仅以MySQL中的int以及varchar类型做说明,其余请自行学习。

    int 类型
    int类型的长度只表示显示宽度,对实际存储无影响,如int(10)和int(11)的数据都占4个字节,只有数据显示效果的区别

    varchar类型
    varchar类型的长度即字符长度(英文字符),同时也是显示宽度,如varchar(3)最多只能存放3个字符,显示3个字符长度,varchar(3)类型字段插入一个字符所占空间和varchar(10)类型数据插入一个字符所占空间相同。

    更多相关内容
  • 修改mysql字段长度

    2022-08-26 14:14:19
    批量修改mysql字段长度

    1、需求:

            由于之前设计的数据库主键字段太小无法使用uudi等不重复主键导致项目性能问题因此需要

            将数据库所有的表字段长度小于35大于15的字段全部扩容到60,字段类型是varchar

    2、获取修改字段的sql

            注意:单纯的使用alter t_table MODIFY column column_name varchar(60);会导致字段原先的默认值和备注等信息丢失,这是已经影响到代码的逻辑了,是不能接受的

    select concat('alter table `',table_name,
        '` MODIFY column `',column_name,
        '` varchar(60) CHARACTER SET ',Character_set_name,
        ' COLLATE ',Collation_name,
         if(is_nullable='NO',' NOT NULL ',' NULL ') ,
         if(column_default is null ,' ',concat(' DEFAULT \'', column_default,'\'')) ,
        ' COMMENT \'',COLUMN_comment,'\';') as sqlz 
    from information_schema.COLUMNS 
    where 1=1
    	and table_schema = 'schema数据库名称' 
    	and data_type = 'varchar'
    	and CHARACTER_maximum_LENGTH<35
    	and CHARACTER_maximum_LENGTH>15
    	and table_name in   
        (select table_name 
                from information_schema.tables 
                where table_schema = 'schema数据库名称' 
                and  table_type = 'BASE TABLE');

     3、执行

    alter table `t_table` MODIFY column `Townid` varchar(60) 
    CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL   COMMENT '镇街';

    4、其他:

            遇到的问题:由于老版本的数据库在设计的时候时间字段默认值使用了:

            '0000-00-00 00:00:00'导致在修改其他字段报错,提示该字段默认值有误

    临时解决方案是:

    -- 获取当前sql_mode
    SELECT @@SESSION.sql_mode;
    -- 在执行修改命令的开头先执行修改sql-mode 注意需要去掉 NO_ZERO_IN_DATE,NO_ZERO_DATE
     set @@SESSION.sql_mode=
    'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

            

    展开全文
  • Mysql字段长度限制你真的了解吗?

    千次阅读 2021-01-18 19:54:00
    一、行容纳的字段长度众所周知,记录是以行的形式进行保存的,Mysql5.1以后,行的保存格式默认为Compact格式。行记录Compact格式为:变长字段NULL标志位记录头信息列1数据列2数据列3数据...第一个变长字段是记录这行...

    一行中可以容纳多少字段长度?每个字段拥有长度又可以是多少?是否数据类型的限制长度固定不变?带着这几个问题,我们开始进行一系列研究。

    一、行容纳的字段长度

    众所周知,记录是以行的形式进行保存的,Mysql5.1以后,行的保存格式默认为Compact格式。行记录Compact格式为:

    变长字段NULL标志位记录头信息列1数据列2数据列3数据...

    第一个变长字段是记录这行的总字段长度,如果行记录的字段总长小于255字节,变长字段就占一个字节(一个字节有8位,8位的二进制最多能表示到255)。当大于255时,变长字段的长度就是两个字节。Mysql规定变成字段不超过两个字节,就意味着行的段总长最多不能超过65535个字节(两个字节有16位,16位最多能表示65535)mysql> create table test_limit (idvarchar(65531),name char(1) )charset=latin1;

    Query OK, 0 rows affected (0.00 sec)

    可以看出来65531+1=65532<=65532(65535-1-2, -1是因为一个字节不存数据,-2是因为两个字节varchar的长度)

    mysql> create table test_limit  (id varchar(65531),name char(2))charset=latin1;

    ERROR 1118 (42000): Row size too large. Themaximum row size for the used table type, not counting BLOBs, is 65535. Thisincludes storage overhead, check the manual. You have to change some columns toTEXT or BLOBs

    65533>65532所以不被允许

    二、每个字段容纳长度

    每个字段长度首先要符合字符类型限制的长度,然后再看是否符合行的段总长。

    值得注意的是,对于varchar的最大长度来说要根据字符集而变化。mysql> create table varchar_var (idvarchar(65531)) charset=utf8;

    ERROR 1074 (42000): Column length too bigfor column 'id' (max = 21845); use BLOB or TEXT instead

    Utf8中一个字符相当于3个字节,所以需要65 536/3≈21845mysql> create table varchar_var (idvarchar(41843),name int )charset=gbk;

    ERROR 1074 (42000): Column length too bigfor column 'id' (max = 32767); use BLOB or TEXT instead

    Gbk中一个字符相当于2个字节,65 536/2≈32767mysql> create table varchar_var (idvarchar(75536) )charset=latin1;

    ERROR 1074 (42000): Column length too bigfor column 'id' (max = 65535); use BLOB or TEXT instead

    latin1是一个字符相当于一个字节mysql> create table extend_char (namechar(1));

    mysql> insert into extend_char values ('的我');

    ERROR 1406 (22001): Data too long forcolumn 'name' at row 1

    可见,char(1)只保存一个字符,在存储中utf8字符集的占3个字节

    int固定占的是4个字节,4个8位二进制所以表示范围为-2 147 483 648~2147 483 647。

    既然是固定占4个字节,那么Int(1),int(2)在存储空间上就差别不大。唯一的区别在于当你设置zerofill才能显现,他会用0补足显示宽度:mysql> create table extend_int_zero(name int zerofill) charset=latin1;

    Query OK, 0 rows affected (0.02 sec)

    mysql> insert into extend_int_zerovalues (1);

    Query OK, 1 row affected (0.01 sec)

    mysql> select * from extend_int_zero;

    +------------+

    | name      |

    +------------+

    | 0000000001 |

    +------------+

    当int不写显示宽度时默认为int(11)

    三、实战分析mysql> create table row_for (idvarchar(21843),name int );

    这是在utf8字符集下的,你看看这句是否会执行成功呢?

    21843*3=65529##utf8中一个字符等于三个字集

    65529+4=65533##int占4个字节

    65533+1+2=65535##前面提及的,一个字节不存数据,两个字节存放长度

    所以这一行的总字段长度65535,,因为65535正好超过了行的段规定长度所以不被允许。

    如果将varchar类型下调一个字符,那就正确了mysql> create table row_d (idvarchar(21842),name int );

    Query OK, 0 rows affected (0.02 sec)

    展开全文
  • 【解惑】mysql字段长度什么意思

    千次阅读 2021-01-19 03:33:06
    今天简单说说mysql字段不同类型的长度,显示宽度,数据存储占用硬盘大小首先来说最常用的整型,mysql的整型又分为五种小类型:1、tinyint2、smallint3、mediumint4、int5、bigint这五种整型的主要区别是数据库存储的...

    今天简单说说mysql字段不同类型的长度,显示宽度,数据存储占用硬盘大小

    首先来说最常用的整型,mysql的整型又分为五种小类型:

    1、tinyint

    2、smallint

    3、mediumint

    4、int

    5、bigint

    这五种整型的主要区别是数据库存储的时候会占用几个字节,限制的整数的范围(最大值最小值)不同。

    这五种整型的相同点是都可以设置有符号和无符号,所谓的符号就是正负号

    tinyint:

    数据存储:占用1个字节(一个字节等于8位二进制)

    取值范围:①有符号的情况下,-(2的7次方)到(2的7次方-1);②无符号的情况下,(0)到(2的8次方-1)

    tinyint(4)是什么意思?其实这里的4代表的是显示宽度,比如字段设置0填充的时候会有4个0占位例如(0000)(0001)(0011)(0255)

    tinyint(3)是什么意思?其实这里的3代表的是显示宽度,比如字段设置0填充的时候会有3个0占位例如(000)(001)(011)(255)

    tinyint(2)是什么意思?其实这里的2代表的是显示宽度,比如字段设置0填充的时候会有2个0占位例如(00)(01)(11)(255)

    所以无论是4,3,2,1哪种宽度存入的最大值和最小值是不变的,并且mysql在存数据的时候也是要占用1个字节。

    同理剩下的四中类型也是一样,我们简单说下:

    smallint:

    数据存储:占用2个字节(一个字节等于8位二进制)

    取值范围:①有符号情况下,-(2的15次方)到(2的15次方-1);②无符号的情况下,(0)到(2的16次方-1)

    smallint(5)也表示显示宽度不细说了

    mediumint:

    数据存储:占用3个字节(一个字节等于8位二进制)

    取值范围:①有符号情况下,-(2的23次方)到(2的23次方-1);②无符号的情况下,(0)到(2的24次方-1)

    int:

    数据存储:占用4个字节(一个字节等于8位二进制)

    取值范围:①有符号情况下,-(2的31次方)到(2的31次方-1);②无符号的情况下,(0)到(2的32次方-1)

    bigint:

    数据存储:占用8个字节(一个字节等于8位二进制)

    取值范围:①有符号情况下,-(2的63次方)到(2的63次方-1);②无符号正整数情况下,(0)到(2的64次方-1)

    再简单说下字符串类型:

    varchar(50)是什么意思呢? 这个50在mysql4.0版本及以下表示50个字节的长度,在5.0版本及以上表示的是50个字符,无论是数字,英文,还是utf8的汉字都是可以存储50个字符。

    那么varchar类型最多可以存储多少字符呢,mysql5.0.3之前可以存储255个字符,5.0.3之后版本理论上讲可以存储最大65535个字符,但是这取决于所有列的字符加在一起不能大于65535这个限制。

    展开全文
  • mysql字段长度不够,插入的文本数据过长 错误提示: Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'question_content' at row 1 这个错误是MySQL字段长度...
  • MySQL字段长度

    千次阅读 2021-02-05 14:50:20
    MySQL字段有多种的类型,不同的MySQL字段长度也各不一样,下面就为您介绍各种MySQL字段的长度,供您参考学习之用。 数值类型 列类型 需要的存储量 TINYINT 1 字节 SMALLINT 2 字节 MEDIUMINT 3 字节 INT 4 字节 ...
  • 解决方案 : 检查当前表 所有列字段长度乘算过后是否大于 65535 ,尽量精简字段你长度,亦或者采取分表的操作 例子 : CREATE TABLE test(id VARCHAR(20000),name VARCHAR(20000),age VARCHAR(20000),height VARCHAR...
  • Mysql 字段长度过长自动截断的机制

    千次阅读 2020-09-16 16:20:55
    sql-mode = "xx_mode"sql-mode中有STRICT_TRANS_TABLES是在数据超长的情况下会插入失败,当删除这个限制时,插入超长会MySQL会自动截断超长的字段 如果无法修改服务端的配置那么在sqlsession中设置sql-mode 也可以...
  • mysql 字段长度限制

    万次阅读 2016-10-26 17:41:18
    分析MySQL数据类型的长度  MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, ...
  • 介绍MySQL所有字段长度定义、计算方式、存储开销,包括char、varchar、int、bigint、decimal、double、boolean、date/timestamp等。 如果你疑惑于int(4)是几位,varchar应该是63还是64、double还是decimal,那么...
  • varchar类型字段,如果你设置长度为10,那么不论汉字和英文都可以存10个。
  • varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度长度超过255时需要2个字节),因此最大长度不能超过65535。 b)编码长度限制 字符类型若为gbk,每个字符最多占2个字节,最大...
  • 关于MySQL中的字段长度

    千次阅读 2021-01-19 15:46:52
    首先,sql中的长度=字节,也即是长度设置为10,则该字段长度为10个字节。 然后,就常用的数据类型说一下: 1、INT:4字节,带符号:-2147483648到2147483647,不带符号:0到4294967295; 2、FLOAT:4字节,最小非零...
  • 本文介绍一下关于mysql获取字符串长度的方法,希望此教程对各位同学会有所帮助哦。
  • 可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符).MySQL supports 4 TEXT field types (TINYTEXT, TEXT, MEDIUMTEXT and LONGTEXT) and this post looks at the ...
  • mysql字段长度

    千次阅读 2021-06-10 14:13:49
    可以用char_length() MySQL 5.0.3 之后,varchar(n)表示字符数,无论是中文还是英文都能存n个 char_length():单位为字符,不管汉字还是数字或者是字母都算是一个字符。
  • mysql修改字段长度的sql语句分享

    千次阅读 2021-04-20 07:56:16
    摘要 腾兴网为您分享:mysql修改字段长度的sql语句分享,掌上公交,粤警民通,优酷,永辉生活等软件知识,以及财神管家,嘀嗒番茄钟,宁夏,澄海3c5.56,今日十大热点新闻,多屏幕管理软件,主题商店,易罐,lol速度...
  • 注意:在MySQL早期的版本中n指的是字节数,但那是十多年前的版本,无需关心。占用空间1、CHAR(定长字符串)以的字段为例,表示该字段固定容纳4个字符。如果存入字符不满4个时用自动用空格补齐4个字符,比如:我们...
  • mysql字段类型和长度的解释

    千次阅读 2021-01-18 20:03:24
    在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段长度。这个11代表显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了...
  • MySQL 修改字段类型和字段长度

    千次阅读 2020-06-19 14:46:51
    1、修改字段类型 格式:alter table 表名 modify column ...2、修改字段长度 格式:alter table 表名 modify column 字段名 类型(长度); 实例: 将users表的username字段改为varchar类型,长度为30个字节; alte
  • char_length(str) 1、单位为字符 2、不管汉字还是数字或者是字母都算是一个字符 length(str) 1、字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。 2、gbk下,一个汉字两个字节,一个数字或字母一个字节...
  • 修改字段长度命令 alter table 表名 modify column 列名 类型(要修改的长度); alter table post modify column img_url varchar(5000);
  • 常见MySql字段的默认长度

    千次阅读 2021-02-04 13:44:51
    下面为您介绍了一些常见的MySql字段的默认长度,供您参考学习,如果您对MySql字段方面感兴趣的话,不妨一看,相信对您会有所帮助。整型:TINYINT 1 字节SMALLINT 2 个字节MEDIUMINT 3 个字节INT 4 个字节INTEGER 4 ...
  • Mysql是存在表字段总长度限制的: 每行允许最多4096字节长度,超过了最大长度是不行的 mySQL对列限制比较宽松,...但每行记录字段长度有限制。 当然也可能受到版本和大环境的影响,建议看下官网每个对应的说明 ...
  • Mysql数据库字段数据类型、长度详解

    千次阅读 2021-01-19 13:21:06
    TEXT 和 BLOB 类型 对于字段长度要求超过 255 个的情况下,MySQL 提供了 TEXT 和 BLOB 两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。 ...
  • mysql修改字段长度命令_值得收藏:一份非常完整的 MySQL 规范 一、数据库命令规范 二、数据库基本设计规范 三、数据库字段设计规范 四、索引设计规范 五、常见索引列建议 六、如何选择索引列的顺序 七、...
  • 字段长度是字节还是字符还是位?
  • (1)MySQL要求一个行的定义长度不能超过65535。 (2)单个字段如果大于65535,则转换为TEXT 。 (3)单行最大限制为65535,这里不包括TEXT、BLOB。 (4)utf8: 1character=3bytes, 1汉字=1character 也就是说一个...
  • mysql 查询字段长度

    万次阅读 2017-06-24 13:03:38
    查询字段长度,不同数据库,方法不同: MySQL: LENGTH( ) Oracle: LENGTH( ) SQL Server: LEN( )对于MySQL,使用length函数 例如: 查询messge长度大于56k的记录SELECT * FROM apple where length(message)>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,549
精华内容 74,619
关键字:

mysql字段的长度

mysql 订阅