MYSQL各字段的长度是多少
Mysql数据类型(字段)介绍
MySql数据库的列类型(字段类型)MySQL数据库的表是一个二维表,由一个或多个数据列构成。
每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,我们可以把整型数值存放到字符类型的列中,MySQL则会把它看成字符串来处理。
MySQL中的列类型有三种:数值类、字符串类和日期/时间类。
从大类来看列类型和数值类型一样,都是只有三种。
但每种列类型都还可细分。
下面对各种列类型进行详细介绍。
数值类的数据列类型数值型的列类型包括整型和浮点型两大类。
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38 DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308DECIMAL:M+2字节以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。
整型数据列类型MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。
它们之间的区别是取值范围不同,存储空间也各不相同。
在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。
php数据库,mysql字段类型,字段属性详解
本文由lchengm贡献 doc1。
MySQL 字段类型详解 MySQL 提 供 了 整 数 和 浮 点 数 的 数 值 类 型 。
可 根 据 所 要 表 示 的 值 的 范 围 选 择 相 应 的 类 型 。
对 于 整 数 类 型 , 如 果 指 定 了 AUTO_INCREMENT 属 性 , 则 列 必 须 为 PRIMARY KEY 或 UNIQUE 索 引 。
将 NULL 插 入 AUTO_INCREMENT 列 将 会 插 入 一 个 大 于 该 列 中 当 前 最 大 值 的 值 。
如 果 指 定 了 UNSIGNED 属 性 , 则 相 应 的 整 数 类 型 不 允 许 取 负 值 。
如 果 指 定 了 ZEROFILL 属 性 , 则 用 前 导 零 填 充 数 值 类 型 值 以 达 到 列 的 显 示 宽 度 。
1. TINYINT[(M)] 说明:非常小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 128 到 127( - 27 到 27- 1) 或 者 如 果 为 U N S I G N E D, 则 0 到 2 5 5 , ( 0 到 2 8-1) 缺 省 值 : 如 果 列 可 为 NULL; 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:1 字节 2. SMALLINT[(M)] 说明:小整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 32768 到 3 27 6 7( - 215 到 215- 1) 或 者 如 果 为 U N S I G N E D, 则 , 0 到 6 5 5 3 5( 0 到 216- 1) 缺 省 值 : 如 果 列 可 为 NULL; 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:2 字节 3. MEDIUMINT[(M)] 说明:中等大小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : -8388608 到 8 3 8 8 6 07( - 22 3 到 22 3- 1) 或 者 如 果 为 U N S I G N E , D, 则 0 到 16 7 7 2 15( 0 到 22 4- 1) 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:4 字节 4. INT[(M)] 说明:标准大小的整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 2147483648 到 2 14 7 4 8 3 6 4 7( - 231 到 2 3 1- 1) 或 者 如 果 为 U N , S I G N E D, 则 0 到 4 2 9 4 9 6 7 2 9 5( 0 到 2 3 2- 1) 缺 省 值 : 如 果 列 为 NULL, 则 为 NULL; 如 果 列 为 NOT FULL, 则 为 0 存储需求:4 字节 同 义 词 : I N T E G E R [(M)] 5. BIGINT[(M)] 说明:大整数 允 许 的 属 性 : AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL 取 值 范 围 : - 9223372036854775808 到 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07( - 263 到 2 6 3- 1) 或 者 如 果 为 U N S I G N E D, 则 0 到 18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 , 15( 0 到 26 4 -1) 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:8 字节 6. FLOAT [(M, D)] 说 明 : 小 浮 点 数 ; 单 精 度 ( 精 度 小 于 D O U B L E) 允许的属性:Z E R O F I L L 取 值 范 围 : 最 小 非 零 值 为 ±1.75494351E -38; 最 大 非 零 值 为 ±3 . 4 0 2 8 2 3 4 6 6 E + 3 8 缺 省 值 : 如 果 列 可 为 NULL, 则 为 NULL; 如 果 列 为 NOT NULL, 则 为 0 存储需求:4 字节 同 义 词 : MySQL3.23 版 以 前 , FLOAT(4) 为 具 有 缺 省 M 和 D 值 的 FLOAT 的 同 义 词 。
MySQL数据库varchar到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚
MySQL数据库varchar到底可以存多少个汉字,多少个英⽂呢?我们来搞搞清楚⼀、关于UTF-8UTF-8 Unicode Transformation Format-8bit。
是⽤以解决国际上字符的⼀种多字节编码。
它对英⽂使⽤8位(即⼀个字节) ,中⽂使⽤24位(三个字节)来编码。
UTF-8包含全世界所有国家需要⽤到的字符,是国际编码,通⽤性强。
UTF-8编码的⽂字可以在各国⽀持UTF8字符集额的浏览器上显⽰。
如果是UTF8编码,则在外国⼈的英⽂IE也能显⽰中⽂,他们⽆需下载IE的中⽂语⾔⽀持包。
⼆、关于GBKGBK是国家标准GB2312基础上扩容后兼容GB2312的标准。
GBK的⽂字编码是⽤双字节来表⽰的,即不论中、英⽂字符均使⽤双字节来表⽰,为了区分中⽂,将其最⾼位都设定成1。
GBK包含全部中⽂字符,是国家编码,通⽤性⽐UTF8差,不过UTF8占⽤的⽐GBK⼤。
三、关于utf8mb45.5 之前,UTF8 编码只⽀持1-3个字节,只⽀持BMP这部分的unicode编码区,BMP是从哪到哪?基本就是 0000 ~ FFFF 这⼀区。
从 5.5 开始,可⽀持4个字节UTF编码utf8mb4,⼀个字符最多能有4字节,所以能⽀持更多的字符集。
utf8mb4 is a superset of utf8tf8mb4兼容utf8,且⽐utf8能表⽰更多的字符。
⾄于什么时候⽤,看你做的什么项⽬了。
在做移动应⽤时,会遇到⽤户在⽂本的区域输⼊emoji表情,如果不做⼀定处理,就会导致插⼊数据库异常。
四、汉字长度与编码有关MySql 5.0 以上的版本:1、⼀个汉字占多少长度与编码有关:UTF-8:⼀个汉字 = 3个字节,英⽂是⼀个字节GBK:⼀个汉字 = 2个字节,英⽂是⼀个字节2、varchar(n) 表⽰n个字符,⽆论汉字和英⽂,MySql都能存⼊n个字符,仅实际字节长度有所区别。
3、MySQL检查长度,可⽤SQL语⾔SELECT LENGTH(fieldname) FROM tablename五、实际测试1、⾸先使⽤utf8创建str_test表。
MySQL中varchar最大长度是多少
MySQL中varchar最⼤长度是多少⼀. v ar char存储规则:4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)5.0版本以上,varchar(20),指的是20字符,⽆论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最⼤⼤⼩是65532字节⼆. v ar char和char 的区别:char是⼀种固定长度的类型,varchar则是⼀种可变长度的类型,它们的区别是: char(M)类型的数据列⾥,每个值都占⽤M个字节,如果某个长度⼩于M,MySQL就会在它的右边⽤空格字符补⾜.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列⾥,每个值只占⽤刚好够⽤的字节再加上⼀个⽤来记录其长度的字节(即总长度为L+1字节).在MySQL中⽤来判断是否需要进⾏对据列类型转换的规则1、在⼀个数据表⾥,如果每⼀个数据列的长度都是固定的,那么每⼀个数据⾏的长度也将是固定的.2、只要数据表⾥有⼀个数据列的长度的可变的,那么各数据⾏的长度都是可变的.3、如果某个数据表⾥的数据⾏的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表⾥的固定长度类型的数据列转换为相应的可变长度类型.例外:长度⼩于4个字符的char数据列不会被转换为varchar类型ps :被问到⼀个问题:MySQL中varchar最⼤长度是多少?这不是⼀个固定的数字。
本⽂简要说明⼀下限制规则。
1、限制规则字段的限制在字段定义的时候有以下规则:a) 存储限制varchar最多能存储65535个字节的数据。
varchar 的最⼤长度受限于最⼤⾏长度(max row size,65535bytes)。
65535并不是⼀个很精确的上限,可以继续缩⼩这个上限。
65535个字节包括所有字段的长度,变长字段的长度标识(每个变长字段额外使⽤1或者2个字节记录实际数据长度)、NULL标识位的累计。
mysql中int(20)和char(20)以及varchar(20)的区别
mysql中int(20)和char(20)以及varchar(20)的区别在MySQL中,INT(20)、CHAR(20) 和 VARCHAR(20) 分别表示不同的数据类型,它们的用途和存储方式有一些区别。
1. INT(20):•数据类型:• INT 表示整数。
•宽度(Display Width):• INT(20) 中的(20) 并不影响存储范围,而是表示在显示时的宽度。
•在数字显示时,如果数字的位数不够,会在左侧填充空格,使其宽度达到 20。
•存储空间:• INT 类型在MySQL中占用 4 个字节。
•适用场景:•用于存储整数值,不限定宽度。
2. CHAR(20):•数据类型:• CHAR 表示定长字符串。
•宽度:• CHAR(20) 表示存储固定长度为 20 的字符串。
•存储空间:• CHAR 类型会占用固定长度的存储空间,即使字符串长度小于指定长度。
•适用场景:•适用于存储长度固定的字符串,如果实际存储的字符串长度小于指定长度,会在右侧用空格填充。
3. VARCHAR(20):•数据类型:• VARCHAR 表示可变长度字符串。
•宽度:• VARCHAR(20) 表示存储最大长度为 20 的可变长度字符串。
•存储空间:• VARCHAR 类型只占用实际存储的字符串长度加上一些额外的长度信息,不会占用固定的存储空间。
•适用场景:•适用于存储可变长度的字符串,节省存储空间。
总结:• INT(20) 用于存储整数值,(20) 表示显示时的宽度,不影响存储范围。
• CHAR(20) 用于存储固定长度的字符串,占用固定的存储空间。
• VARCHAR(20) 用于存储可变长度的字符串,根据实际存储的字符串长度动态分配存储空间。
在选择使用这些数据类型时,需要考虑存储的数据特性和对存储空间的要求。
mysqlint类型的长度值mysql在建表的时候int类型后的长度代表什么
mysqlint类型的长度值mysql在建表的时候int类型后的长度代表什么详解mysql int类型的长度值 mysql在建表的时候int类型后的长度代表什么是该列允许存储值的最⼤宽度吗为什么我设置成int(1), 也⼀样能存10,100,1000呢. 当时我虽然知道int(1),这个长度1并不代表允许存储的宽度,但却没有⼀个合理的解释. 或者说对这个长度也没有真正的研究过到底代表什么, 平时都⽤int(11), 也不知道为什么要11位. 所以我在⽹上查阅了⼀些资料, 也仔细的看了mysql⼿册关于int data type的说法. 以下是每个整数类型的存储和范围(来⾃mysql⼿册) 类型 字节 最⼩值 最⼤值 (带符号的/⽆符号的) (带符号的/⽆符号的) TINYINT 1 -128 127 0 255 SMALLINT 2 -32768 32767 0 65535 MEDIUMINT 3 -8388608 8388607 0 16777215 INT 4 -2147483648 2147483647 0 4294967295 BIGINT 8 -9223372036854775808 9223372036854775807 0 18446744073709551615 表格⼀共有四列分别表式:字段类型, 占⽤字节数, 允许存储的最⼩值, 允许存储的最⼤值. 我们拿int类型为例: int类型, 占⽤字节数为4byte, 学过计算机原理的同学应该知道, 字节(byte)并⾮是计算机存储的最⼩单位, 还有⽐字节(byte)更⼩的单位, 也就是位(bit),⼀个位就代表⼀个0或1; 8个位组成⼀个字节; ⼀般字节⽤⼤写B来表⽰byte, 位⽤⼩写b来表⽰bit. 计算机存储单位的换算: 1B=8b 1KB=1024B 1MB=1024KB 那么根据int类型允许存储的字节数是4个字节, 我们就能换算出int UNSIGNED(⽆符号)类型的能存储的最⼩值为0, 最⼤值为4294967295(即4B=32b, 最⼤值即为32个1组成); 接下来我们再说说我们建表时的字段长度到底是怎么⼀回事. CREATE TABLE `test` (`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,`number` INT( 5 ) NOT NULL) ENGINE = MYISAM ; 以test表的number字段为例, ⼤家看到我建的是int(5)990x58 mysql⼿册中这个长度/值⽤"M"来表⽰的. 细⼼的朋友应该有注意到过mysql⼿册上有这么⼀句话: M指⽰最⼤显⽰宽度。
mysql中常用的字段类型
mysql中常用的字段类型
以下是MySQL中常用的字段类型:
1. INT (整型):用于存储整数值,可以指定长度。
常见的INT类型有INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT等。
2. DECIMAL (定点数):用于存储精确的小数值,可以指定总共的位数和小数的位数。
3. FLOAT (浮点数):用于存储近似的小数值,可以指定总共的位数和小数的位数。
4. VARCHAR (可变长度字符串):用于存储可变长度的字符串,可以指定最大长度。
5. CHAR (固定长度字符串):用于存储固定长度的字符串,需要指定固定长度。
6. TEXT (文本):用于存储较长的文本数据,可以存储较大的数据量。
7. DATE (日期):用于存储日期,包括年、月、日。
8. TIME (时间):用于存储时间,包括小时、分钟、秒。
9. DATETIME (日期时间):用于存储日期和时间,包括年、月、日、小时、分钟、秒。
10. TIMESTAMP (时间戳):用于存储记录被创建或修改的时间,使用特定的格式进行存储。
这些是MySQL中常用的字段类型,根据实际需求选择合适的字段类型来存储数据。
MySQL数据类型及字段设置指南
MySQL数据类型及字段设置指南MySQL是一个流行的关系型数据库管理系统,广泛用于开发各种类型的应用程序。
在MySQL中,数据类型和字段设置是非常重要的,决定了数据库的性能和数据的完整性。
本文将为您介绍MySQL中常见的数据类型及字段设置指南,帮助您优化数据库设计和管理。
一、数据类型选择1. 整数类型在MySQL中,我们可以选择多种整数类型来存储不同范围的整数数据。
常见的整数类型有:TINYINT、SMALLINT、INT、BIGINT。
选择适当的整数类型可以有效地节约存储空间和提高查询效率。
例如,如果你需要存储0到9之间的整数,可以选择TINYINT类型,因为TINYINT只占用1个字节的存储空间,远远小于INT类型占用的4个字节。
2. 浮点数类型在MySQL中,我们可以使用FLOAT和DOUBLE来存储浮点数数据。
FLOAT 占用4个字节,DOUBLE占用8个字节。
FLOAT适用于小范围的浮点数数据,而DOUBLE适用于大范围的浮点数数据。
需要注意的是,浮点数类型存在精度问题。
如果对数据的精度要求较高,可以考虑使用DECIMAL类型,它可以指定精度和小数位数。
3. 字符串类型在MySQL中,我们可以使用多种字符串类型存储字符数据。
常见的字符串类型有:CHAR、VARCHAR、TEXT。
CHAR类型适用于固定长度的字符数据。
例如,如果你要存储一个长度为10的用户名,可以选择CHAR(10)类型,这样可以提高查询效率。
VARCHAR类型适用于可变长度的字符数据。
例如,如果你要存储不定长度的文章内容,可以选择VARCHAR类型。
需要注意的是,CHAR和VARCHAR类型的区别在于CHAR类型会为每个记录分配固定长度的存储空间,而VARCHAR类型只为实际存储的数据分配足够的空间。
4. 日期和时间类型在MySQL中,我们可以使用DATE、TIME、DATETIME等类型存储日期和时间数据。
DATE类型用于存储日期数据。
数据库 字段长度 规则
数据库字段长度规则
数据库字段长度规则是指在设计数据库表时,对字段的数据类
型及长度进行规定的一种约束。
不同的数据库管理系统(DBMS)有
不同的字段长度规则,以下是一些常见的规则:
1. 字符型字段长度规则,在大多数DBMS中,字符型字段的长
度规则是以字符为单位进行计算的。
例如,在MySQL中,VARCHAR
类型的字段可以指定长度,表示该字段可以存储的最大字符数;而
在Oracle中,VARCHAR2类型的字段长度则是以字节为单位计算的,需要根据字符集来确定实际存储的最大字符数。
2. 数值型字段长度规则,数值型字段的长度规则通常是指定整
数部分和小数部分的位数。
例如,DECIMAL或NUMERIC类型的字段
可以指定总位数和小数位数,以控制存储精度。
3. 日期时间型字段长度规则,日期时间型字段的长度规则通常
是固定的,例如在大多数DBMS中,DATE类型的字段长度是固定的,表示日期部分的存储;而TIMESTAMP类型的字段长度则可能包括日
期和时间部分,长度规则也会有所不同。
4. 其他类型字段长度规则,除了字符型、数值型和日期时间型字段外,还有一些其他特殊类型的字段,如二进制类型的字段,其长度规则可能是以字节为单位计算的。
在设计数据库时,合理地应用字段长度规则可以有效地控制数据存储的空间,并确保数据的完整性和准确性。
需要根据具体的业务需求和数据特点来选择合适的字段长度规则,以充分利用数据库的存储资源,同时避免数据存储和处理的不必要复杂性。
mysqlblob长度_使用Mysql的Blob要注意Blob最大限制到65K字节
mysqlblob长度_使⽤Mysql的Blob要注意Blob最⼤限制到65K字
节
BLOB[(M)]
最⼤长度为65,535(216–1)字节的BLOB列。
可以给出该类型的可选长度M。
如果给出,则MySQL将列创建为最⼩的但⾜以容纳M字节长的值的BLOB类型。
· TEXT[(M)]
最⼤长度为65,535(216–1)字符的TEXT列。
可以给出可选长度M。
则MySQL将列创建为最⼩的但⾜以容纳M字符长的值的TEXT类型。
· MEDIUMBLOB
最⼤长度为16,777,215(224–1)字节的BLOB列。
· MEDIUMTEXT
最⼤长度为16,777,215(224–1)字符的TEXT列。
· LONGBLOB
最⼤长度为4,294,967,295或4GB(232–1)字节的BLOB列。
LONGBLOB列的最⼤有效(允许的)长度取决于客户端/服务器协议中配置最⼤包⼤⼩和可⽤的内存。
· LONGTEXT
最⼤长度为4,294,967,295或4GB(232–1)字符的TEXT列。
LONGTEXT列的最⼤有效(允许的)长度取决于客户端/服务器协议中配置最⼤包⼤⼩和可⽤的内存
也就是说Blob,Clob类型只能放65K的数据,longblob,longtext能放4G的数据。
所以正确的⽅式是修改类型为longblob,或者插⼊65k以下的数据。
数据库字符长度单位
数据库字符长度单位
在数据库中,字符长度是指字符串的长度,也就是字符串中字符的个数。
不同的数据库系统中,对于字符长度的计算方式可能会有所不同,因此我们需要了解数据库字符长度的单位。
在大多数数据库系统中,字符长度的单位是“字符”或“字节”。
在英文字符中,一个字符占用一个字节的空间;而在中文字符中,一个字符通常占用两个字节。
在MySQL数据库中,字符长度的单位是“字符”,且一个字符的长度为1,不管是中文还是英文字符。
例如,一个包含100个中文字符的字符串,在MySQL中的字符长度为100。
在Oracle数据库中,字符长度的单位可以是“字符”或“字节”,默认是“字符”。
如果要指定使用“字节”作为长度单位,可以在定义字段时使用“BYTE”关键字。
例如,如果要定义一个最大长度为10个字节的VARCHAR2字段,可以这样写:
VARCHAR2(10 BYTE)
在SQL Server数据库中,字符长度的单位默认为“字符”,但是如果将字段的数据类型定义为“nchar”或“nvarchar”,那么字符长度的单位就变成了“双字节字符集”(Unicode编码)。
例如,一个包含100个中文字符的nvarchar字段,在SQL Server中的字符长度为200。
总之,在设计数据库时,我们需要根据具体的需求来选择合适的字符长度单位,以确保数据的存储和查询都能够得到正确的结果。
MySQL字段数据类型长度
MySQL字段数据类型长度分类: 2010-09-27 16:30 105⼈阅读 (0)⼀、MySQL 字段数据类型/长度1、数值类型列类型需要的存储量 TINYINT 1 字节SMALLINT 2 个字节MEDIUMINT 3 个字节INT 4 个字节INTEGER 4 个字节BIGINT 8 个字节FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53FLOAT 4 个字节DOUBLE 8 个字节DOUBLE PRECISION 8 个字节REAL 8 个字节DECIMAL(M,D) M字节(D+2 , 如果M < D)NUMERIC(M,D) M字节(D+2 , 如果M < D)MySQL 的数值数据类型可以⼤致划分为两个类别,⼀个是整数,另⼀个是浮点数或⼩数。
许多不同的⼦类型对这些类别中的每⼀个都是可⽤的,每个⼦类型⽀持不同⼤⼩的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者⽤零填补。
表列出了各种数值类型以及它们的允许范围和占⽤的内存空间。
类型⼤⼩范围(有符号)范围(⽆符号)⽤途TINYINT 1 字节(-128,127)(0,255)⼩整数值SMALLINT 2 字节(-32 768,32 767)(0,65 535)⼤整数值MEDIUMINT 3 字节(-8 388 608,8 388 607)(0,16 777 215)⼤整数值INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)⼤整数值BIGINT8 字节(-9 233 372 036 854 775 808,9 223372 036 854 775 807)(0,18 446 744 073 709 551 615)极⼤整数值FLOAT 4 字节(-3.402 823 466 E+38,1.175 494 351E-38),0,(1.175 494 351 E-38,3.402823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823466 E+38)单精度浮点数值DOUBLE8 字节(1.797 693 134 862 315 7E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度浮点数值DECIMAL 对DECIMAL(M,D),如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值⼩数值INT 类型 在 MySQL 中⽀持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。
MYSQL各字段的长度是多少?
3
TIMESTAMP
4个字节
4
TIME
3个字节
5
YEAR
1字节
串类型
序号
列类型
需要的存储量
1
CHAR(M)
M字节,1 <= M <= 255
2
VARCHAR(M)
L+1字节,在此L <= M和1 <= M <= 255
3
TINYBLOB,TINYTEXT
L+1字节,在此L< 2 ^ 8
4
BLOB, TEXT
1,2,3,4或8个字节,取决于集合成员的数量(最多64个成员)
序号列类型需要的存储量1tinyint1字节2smallint2个字节3mediumint3个字节4int4个字节5integer4个字节6bigint8个字节7floatx4如果x24或8如果25x538float4个字节9double8个字节11doubleprecision8个字节12real8个字节13decimalmdm字节d2如果md14numericmdm字节d2如果md日期和时间类型序号列类型需要的存储量1date3个字节2datetime8个字节3timestamp4个字节4time3个字节5year1字节串类型序号列类型需要的存储量1charmm字节1m2552varcharml1字节在此lm和1m2553tinyblobtinytextl1字节在此l284blobtextl2字节在此l2165mediumblobmediumtextl3字节在此l2246longblobl4字节在此l232longtext7enumvalue1value2
L+2字节,在此L< 2 ^ 16
数据库字符长度单位
数据库字符长度单位
数据库字符长度单位包括字节和字符两种。
在大多数情况下,这两种长度单位是等价的,因为一个字符通常占用一个字节。
但是,在某些语言和字符集中,一个字符可能占用多个字节,因此在这种情况下,字符长度和字节长度就会有所不同。
在 MySQL 数据库中,字符长度单位包括字符和字节两种。
在定义 VARCHAR 类型的列时,可以指定该列的最大长度,可以使用字符长度单位,也可以使用字节长度单位。
例如,定义一个最大长度为 10 的 VARCHAR 列可以使用以下两种方式:
VARCHAR(10) -- 使用字符长度单位
VARCHAR(30) -- 使用字节长度单位,相当于 VARCHAR(10*3) 在 Oracle 数据库中,字符长度单位为字符。
在定义 VARCHAR2 类型的列时,必须指定该列的最大长度,最大长度使用字符个数表示。
例如,定义一个最大长度为 10 的 VARCHAR2 列可以使用以下方式: VARCHAR2(10)
总之,数据库字符长度单位的选择取决于具体情况,需要根据实际需要和数据库的支持情况来确定。
在设计数据库表时,应当考虑到不同字符集和语言的特性,以免长度不足或者浪费空间。
- 1 -。
INT类型知多少
INT类型知多少前⾔:整型是MySQL中最常⽤的字段类型之⼀,通常⽤于存储整数,其中int是整型中最常⽤的,对于int类型你是否真正了解呢?本⽂会带你熟悉int类型相关知识,也会介绍其他整型字段的使⽤。
1.整型分类及存储范围整数类型字节有符号范围⽆符号范围TINYINT1-128 ~ 1270 ~ 255SMALLINT2-32768 ~ 327670 ~ 65535MEDIUMINT3-8388608 ~ 83886070 ~ 16777215INT/INTEGER4-2147483648 ~ 21474836470 ~ 4294967295BIGINT8-9223372036854775808 ~ 92233720368547758070 ~ 18446744073709551615表格⼀共有四列分别表⽰:字段类型, 占⽤字节数, 有符号范围, ⽆符号范围。
我们拿int类型为例:int类型, 占⽤字节数为4byte, 学过计算机原理的同学应该知道, 字节(byte)并⾮是计算机存储的最⼩单位, 还有⽐字节(byte)更⼩的单位, 也就是位(bit),⼀个位就代表⼀个0或1; 8个位组成⼀个字节; ⼀般字节⽤⼤写B来表⽰byte, 位⽤⼩写b来表⽰bit.计算机存储单位的换算:1B=8b1KB=1024B1MB=1024KB那么根据int类型允许存储的字节数是4个字节, 我们就能换算出int UNSIGNED(⽆符号)类型的能存储的最⼩值为0, 最⼤值为4294967295(即4B=32b, 最⼤值即为32个1组成,即4294967295换算成⼆进制则是32个1)。
2.存储范围测试mysql> CREATE TABLE test_int (-> col1 TINYINT,-> col2 SMALLINT,-> col3 MEDIUMINT,-> col4 INT,-> col5 BIGINT-> ) ENGINE = INNODB DEFAULT CHARSET = utf8;Query OK, 0 rows affected (0.01 sec)mysql> show create table test_int\G*************************** 1. row ***************************Table: test_intCreate Table: CREATE TABLE `test_int` (`col1` tinyint(4) DEFAULT NULL,`col2` smallint(6) DEFAULT NULL,`col3` mediumint(9) DEFAULT NULL,`col4` int(11) DEFAULT NULL,`col5` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)mysql> insert into test_int values (1234,123456,12345678,12345678901,12345678901234567890);Query OK, 1 row affected, 5 warnings (0.00 sec)mysql> insert into test_int values (-1234,-123456,-12345678,-12345678901,-12345678901234567890);Query OK, 1 row affected, 5 warnings (0.01 sec)mysql> show warnings;+---------+------+-----------------------------------------------+| Level | Code | Message |+---------+------+-----------------------------------------------+| Warning | 1264 | Out of range value for column 'col1' at row 1 || Warning | 1264 | Out of range value for column 'col2' at row 1 || Warning | 1264 | Out of range value for column 'col3' at row 1 || Warning | 1264 | Out of range value for column 'col4' at row 1 || Warning | 1264 | Out of range value for column 'col5' at row 1 |+---------+------+-----------------------------------------------+5 rows in set (0.01 sec)mysql> select * from test_int;+------+--------+----------+-------------+----------------------+| col1 | col2 | col3 | col4 | col5 |+------+--------+----------+-------------+----------------------+| 127 | 32767 | 8388607 | 2147483647 | 9223372036854775807 || -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 |+------+--------+----------+-------------+----------------------+从上述测试中我们可以看出:有符号时,各种整型类型最⼤的存储范围,当存储数字⼤⼩不在存储范围时,MySQL会产⽣告警,但数字可以插⼊,默认截取为可存储的最⼤值或最⼩值。
mysql中enum的用法
mysql中enum的⽤法字段类型长度/值*1整理属性Null默认2额外注释enum说明:enum类型的字段,若长度值写长度1/2,报错(1) 数据长度为1,则为0,1,2…(2) 数据长度为2,则为00,01,02…长度值:表⽰的值,⽽不是值得长度1. 数据长度为1,长度值‘0’,‘1’,‘2’2.数据长度为2,长度值‘00’,‘01’,‘02’alter table test_enum change is_flag is_flag enum('0','1')注意:如果你的系统中真的已经使⽤了mysql的enum字段类型,请在查询的时候直接查询值(并加上单引号),这样就不会使⽤enum⾃⾝隐藏的索引值来获取结果了。
【顺便说⼀下,enum的默认索引是从NULL开始,如果你允许NULL并default NULL】之所以提起这个,是在⽤shopnc系统的时候发现⼤量这样的字段,让⼈⾮常郁闷,⼏乎没有办法优化(如果是纯数值型,还是建议采⽤tinyint 字段吧,毕竟它也只占⼀个字节,即使出现赃数据,也可以被接受,不象enum,如果纯数字型范围,更改了索引,你就不知道你查询的值是否正确了)建议:如果字段是字符串,并且长度固定,可以尝试⽤char如果是数值型,还是⽤tinyint吧,⽐较安全稳定,⽽且即使迁移,问题也不⼤。
MYSQL中 ENUM 类型的详细解释ENUM 类型ENUM 是⼀个字符串对象,其值通常选⾃⼀个允许值列表中,该列表在表创建时的列规格说明中被明确地列举。
在下列某些情况下,值也可以是空串("") 或 NULL:如果将⼀个⽆效值插⼊⼀个 ENUM (即,⼀个不在允许值列表中的字符串),空字符串将作为⼀个特殊的错误值被插⼊。
事实上,这个字符串有别于⼀个"普通的"空字符串,因为这个字符串有个数字索引值为 0。
稍后有更详细描述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L+2字节,在此L< 2 ^ 16
5
MEDIUMBLOB,
MEDIUMTEXT
L+3字节,在此L< 2 ^ 24
6
LONGBLOB, LONGTEXT
L+4字节,在此L< 2 ^ 32
7
ENUM('value1','value2',...)
1或2个字节,取决于枚举值的数目(最大值65535)
8
SET('value1','value2',...)
8个字节
3
TIMESTAMP
4个字节
4
TIME
3个字节
5
YEAR
1字节
串类型
序号
列类型
需要的存储量
1
CHAR(M)
M字节,1 <= M <= 255
2
VARCHAR(M)
L+1字节,在此L <= M和1 <= M <= 255
3
TINYBLOB,TINYTEXT
L+1字节,在此L< 2 ^ 8
4
BLOB, TEXT
8
FLOAT
4个字节
9
DOUBLE
8个节
11
DOUBLE PRECISION
8个字节
12
REAL
8个字节
13
DECIMAL(M,D)
M字节(D+2 ,如果M < D)
14
NUMERIC(M,D)
M字节(D+2 ,如果M < D)
日期和时间类型
序号
列类型
需要的存储量
1
DATE
3个字节
2
DATETIME
MYSQL各字段的长度是多少?
MYSQL各字段的长度是多少?
见下表:
序号
列类型
需要的存储量
1
TINYINT
1字节
2
SMALLINT
2个字节
3
MEDIUMINT
3个字节
4
INT
4个字节
5
INTEGER
4个字节
6
BIGINT
8个字节
7
FLOAT(X)
4如果X < = 24或8如果25 < = X < = 53