mysql字段类型
查看文章
mysql数据类型
2007-01-27 20:34
1. mysql的数据类型
在mysql中有如下几种数据类型:
(1)数值型
数值是诸如32 或153.4 这样的值。mysql 支持科学表示法,科学表示法由整数或浮点数后跟“e”或“e”、一个符号(“+”或“-”)和一个整数指数来表示。1.24e+12 和23.47e-1 都是合法的科学表示法表示的数。而1.24e12 不是合法的,因为指数前的符号未给出。
浮点数由整数部分、一个小数点和小数部分组成。整数部分和小数部分可以分别为空,但不能同时为空。
数值前可放一个负号“-”以表示负值。
(2)字符(串)型
字符型(也叫字符串型,简称串)是诸如“hello, world!”或“一个馒头引起的血案”这样的值,或者是电话号码87398413这样的值。既可用单引号也可用双引号将串值括起来。
初学者往往分不清数值87398143和字符串87398143的区别。都是数字啊,怎么一个要用数值型,一个要用字符型呢?关键就在于:数值型的87398143是要参与计算的,比如它是金融中的一个货款总额;而字符型的87398143是不参与计算的,只是表示电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。
(3)日期和时间型
日期和时间是一些诸如“2006-07-12”或“12:30:43”这样的值。mysql还支持日期/时间的组合,如“2006-07-12 12:30:43”。
(4)null值
null表示未知值。比如填写表格中通讯地址不清楚留空不填写,这就是null值。
我们用create table语句创建一个表(参看前面的章节),这个表中包含列的定义。例如我们在前面创建了一个joke表,这个表中有content和writer两个列: create table
(
content varchar(20) not null,
writer varchar(10) null
)
定义一个列的语法如下:
col_name col_typy [col_attributes] [general_attributes]
其中列名由col_name 给出。列名可最多包含64个字符,字符包括字母、数字、下划线及美元符号。列名可以名字中合法的任何符号(包括数字)开头。但列名不能完全由数字组成,因为那样可能使其与数据分不开。mysql保留诸如select、delete和create这样的词,这些词不能用做列名,但是函数名(如pos 和min)是可以使用的。
列类型col_type表示列可存储的特定值。列类型说明符还能表示存放在列中的值的最大长度。对于某些类型,可用一个数值明确地说明其长度。而另外一些值,其长度由类型名蕴含。例如,char(10) 明确指定了10个字符的长度,而tinyblob值隐含最大长度为255个字符。有的类型说明符允许指定最大的显示宽度(即显示值时使用多少个字符)。浮点类型允许指定小数位数,所以能控制浮点数的精度值为多少。
可以在列类型之后指定可选的类型说明属性,以及指定更多的常见属性。属性起修饰类型的作用,并更改其处理列值的方式,属性有以下类型:
(1)专用属性用于指定列。例如,unsigned 属性只针对整型,而binary属性只用于char 和varchar。
(2)通用属性除少数列之外可用于任意列。可以指定null 或not null 以表示某个列是否能够存放null。还可以用default,def_value 来表示在创建一个新行但未明确给出该列的值时,该列可赋予值def_value。def_value 必须为一个常量;它不能是表达式,也不能引用其他列。不能对blob 或text 列指定缺省值。
如果想给出多个列的专用属性,可按任意顺序指定它们,只要它们跟在列类型之后、通用属性之前即可。类似地,如果需要给出多个通用属性,也可按任意顺序给出它们,只要将它们放在列类型和可能给出的列专用属性之后即可。
2. mysql的列(字段)类型
数据库中的每个表都是由一个或多个列(字段)构成的。在用create table语句创建一个表时,要为每列(字段)指定一个类型。列(字段)的类型比数据类型更为细化,它精确地描述了给定表列(字段)可能包含的值的种类,如是否带小数、是否文字很多。
2.1数值列类型
mysql有整数和浮点数值的列类型,如表1所示。整数列类型可以有符号也可无符号。有一种特殊的属性允许整数列值自动生成,这对需要唯一序列或标识号的应用系统来说是非常有用的。
类型 说明
tinyint 非常小的整数
smallint 较小整数
mediumint 中等大小整数
int 标准整数
bigint 较大整数
float 单精度浮点数
double 双精度浮点数
decimal 一个串的浮点数
表1:数值列类型
每种数值类型的名称和取值范围如表2所示。
类型说明 取值范围
tinyint[(m)] 有符号值:-128 到127(- 27 到27 - 1)
无符号值:0到255(0 到28 - 1)
smallint[(m)] 有符号值:-32768 到32767(- 215 到215 - 1)
无符号值:0到65535(0 到21 6 - 1)
mediumint[(m)] 有符号值:-8388608 到8388607(- 22 3 到22 3 - 1 )
无符号值:0到16777215(0 到22 4 - 1)
int[(m)] 有符号值:-2147683648 到2147683647(- 231 到231- 1)
无符号值:0到4294967295(0 到232 - 1) bigint[(m)] 有符号值:-9223372036854775808 到9223373036854775807(- 263到263-1)
无符号值:0到18446744073709551615(0到264 – 1)
float[(m, d)] 最小非零值:±1.175494351e - 38
double[(m,d)] 最小非零值:±2.2250738585072014e - 308
decimal (m, d) 可变;其值的范围依赖于m 和d
表2:数值列类型的取值范围
各种类型值所需的存储量如表3所示。
类型说明 存储需求
tinyint[(m)] 1字节
smallint[(m)] 2字节
mediumint[(m)] 3字节
int[(m)] 4字节
bigint[(m)] 8字节
float[(m, d)] 4字节
double[(m, d)] 8字节
decimal (m, d) m字节(mysql < 3.23),m+2字节(mysql > 3.23 )
表3:数值列类型的存储需求
mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。
mysql 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。
在选择了某种数值类型时,应该考虑所要表示的值的范围,只需选择能覆盖要取值的范围的最小类型即可。选择较大类型会对空间造成浪费,使表不必要地增大,处理起来没有选择较小类型那样有效。对于整型值,如果数据取值范围较小,如人员年龄或兄弟姐妹数,则tinyint最合适。mediumint能够表示数百万的值并且可用于更多类型的值,但存储代价较大。bigint在全部整型中取值范围最大,而且需要的存储空间是表示范围次大的整型int类型的两倍,因此只在确实需要时才用。对于浮点值,double占用float的两倍空间。除非特别需要高精度或范围极大的值,一般应使用只用一半存储代价的float型来表示数据。
在定义整型列时,可以指定可选的显示尺寸m。如果这样,m应该是一个1 到255的整数。它表示用来显示列中值的字符数。例如,mediumint(4)指定了一个具有4个字符显示宽度的mediumint列。如果定义了一个没有明确宽度的整数列,将会自动分配给它一个缺省的宽度。缺省值为每种类型的“最长”值的长度。如果某个特定值的可打印表示需要不止m个字符,则显示完全的值;不会将值截断以适合m个字符。
对每种浮点类型,可指定一个最大的显示尺寸m 和小数位数d。m 的值应该取1 到255。d的值可为0 到3 0,但是不应大于m - 2(如果熟悉odbc 术语,就会知道m 和d 对应于odbc 概念的“精度”和“小数点位数”)。m和d对float和double 都是可选的,但对于decimal是必须的。在选项m 和d时,如果省略了它们,则使用缺省值。
2.2字符串列类型
mysql提供了几种存放字符数据的串类型,其类型如下:
类型名 说明
char 定长字符串
varchar 可变长字符串
tinyblob 非常小的blob(二进制大对象)
blob 小blob
mediumblob 中等的blob
longblob 大blob
tinytext 非常小的文本串
text 小文本串
mediumtext 中等文本串
longtext 大文本串
enum 枚举;列可赋予某个枚举成员
set 集合;列可赋予多个集合成员
表4:字符串列类型
下表给出了mysql 定义串值列的类型,以及每种类型的最大尺寸和存储需求。对于可变长的列类型,各行的值所占的存储量是不同的,这取决于实际存放
mysql中binary的用法
mysql中binary的用法
MySQL中的binary是一种数据类型,用来存储二进制数据。该类型可以用于存储图片、音频、视频、压缩文件等等。本文将详细介绍MySQL中binary的用法。
一、binary的创建和修改
在MySQL中使用binary类型时,需要指定其长度,如下所示:
```
CREATE TABLE mytable (
id INT,
image BINARY(1024),
...
);
```
上面的代码创建了一张名为mytable的表,其中定义了一个名为image的二进制字段,长度为1024字节。
需要注意的是,binary字段的长度不要设置得过小,否则可能存储不了完整的数据。
修改binary字段的长度,也可以使用ALTER TABLE语句,如下所示:
在MySQL中,赋值和取值都是通过MySQL客户端执行的SQL语句来实现的。
1、赋值
可以通过INSERT语句向binary字段中插入二进制数据,如下所示:
2、取值
上面的代码将mytable表中id为1的记录的image字段的值取出。
需要注意的是,当binary字段的值为二进制数据时,取出的结果也是二进制数据,可能无法直接识别。可以通过HEX函数将其转换为十六进制表示,如下所示:
在MySQL中,binary类型的数据可以进行比较和排序。比较时按字节进行,排序时按照ASCII码值进行。 比较binary类型的数据时,可以使用比较运算符(如=、<、>)、逻辑运算符(如AND、OR)等等。
需要注意的是,当binary字段存储的是文件时,排序的结果可能与文件内容无关。
四、binary的应用场景
1、存储图片、音频、视频等二进制数据;
MySQL(二)数据库数据类型详解
MySQL(⼆)数据库数据类型详解
序⾔
今天去健⾝了,感觉把⾝体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这⾥讲清楚了,以后在看到什么数据类型,咱度应该认识,下⾯就跟着我的节奏去把这个拿下吧。
---WZY
⼀、数据类型
MySQL的数据类型有⼤概可以分为5种,分别是 整数类型、浮点数类型和定点数类型、⽇期和时间类型、字符串类型、⼆进制类型。现在可以来看看你对这5种类型的熟悉程度,哪个看起来懵逼了,那就说明⾃⼰哪个不熟悉,不理解。
注意:整数类型和浮点数类型可以统称为数值数据类型,这不难理解。
数值数据类型
整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
浮点数类型:FLOAT、DOUBLE
定点⼩数:DECIMAL
⽇期/时间类型
YEAR、TIME、DATE、DATETIME、TIMESTAMP
字符串类型
CHAR、VARCHAR、TEXT、ENUM、SET等
⼆进制类型
BIT、BINARY、VARBINARY、BLOB
1、整数类型
不管你学什么语⾔,在基础⽅⾯,都应该知道 1个字节= 8位⼆进制数。 每个类型的取值范围也就能够知道,⽐如TINYINT占⽤1个字节,也就是8位,2的8次⽅减1等于255,也就是说如果代表没符号的整数,该取值范围为0~255,如果是有符号的,最⾼位为符号号位,也就是2的7次⽅减1,也就是127,取值范围为-128~127, 为什么需要减1,这个问题就需要考虑临界值的问题了。⽽考虑临界值问题⼜有需要讨论原码补码反码的知识,这些度不是我们讨论的重点,所以在这就⾃⾏百度。给出⼀张范围表,给⼤家做参考。
不同整数类型的取值范围
根据⾃⼰所需去选取不同的类型名称,
例如:
CREATE TABLE aaa(
id INT(10) PRIMARY KEY,
age INT(6)
);
这个例⼦中INT(10)、INT(6) 括号中的数字表⽰的是该数据类型指定的显⽰宽度,指定能够显⽰的数值中数字的个数。这⾥要注意:显⽰宽度和数据类型的取值范围是⽆关的,显⽰宽度只是指明MySQL最⼤可能显⽰的数字个数,注意是可能。通俗点讲就是,⽐如这个age字段,显⽰宽度为6,但是如果你插⼊的数据⼤于6,达到了8,6666 6666,那也没关系,只要插⼊的数值的位数不超过该类型整数的取值范围,就⾏,如果插⼊的数值长度是4,或者3,数值的位数⼩于指定的宽度,后⾯的位数就会由空格填空,5555插⼊age字段,存的就是"5555 "后⾯⽤空格补齐。还有⼀点,这个显⽰宽度没限制,你写100度没问题,但是插⼊数据时,实际起控制作⽤的还是数据类型的取值范围。如果不写显⽰宽度,就会⽤系统默认的,⽐如,INT的默认显⽰宽度是11,看上⾯表,最⾼也就能表⽰10位⼤⼩的数值,但是要注意,有符号的,也就是负数时,符号位也占⼀位。
MySQL中blob和text数据类型详解
MySQL中blob和text数据类型详解
前⾔:
我们介绍过⼀些常⽤数据类型的⽤法,⽐如 int、char、varchar 等。⼀直没详细介绍过 blob 及 text 类型,虽然这两类数据类型不太常⽤,但在某些场景下还是会⽤到的。本篇⽂
章将主要介绍 blob 及 text 数据类型的相关知识。
1. blob 类型
blob(binary large object) 是⼀个可以存储⼆进制⽂件的容器,主要⽤于存储⼆进制⼤对象,例如可以存储图⽚,⾳视频等⽂件。按照可存储容量⼤⼩不同来分类,blob 类型可分
为以下四种:
类型可存储⼤⼩⽤途
TINYBLOB0 - 255字节短⽂本⼆进制字符串
BLOB0 - 65KB⼆进制字符串
MEDIUMBLOB0 - 16MB⼆进制形式的长⽂本数据
LONGBLOB0 - 4GB⼆进制形式的极⼤⽂本数据
其中最常⽤的就是 blob 字段类型了,最多可存储 65KB ⼤⼩的数据,⼀般可⽤于存储图标或 logo 图⽚。不过数据库并不适合直接存储图⽚,如果有⼤量存储图⽚的需求,请使
⽤对象存储或⽂件存储,数据库中可以存储图⽚路径来调⽤。
2. text 类型
text 类型同 char、varchar 类似,都可⽤于存储字符串,⼀般情况下,遇到存储长⽂本字符串的需求时可以考虑使⽤ text 类型。按照可存储⼤⼩区分,text 类型同样可分为以下四
种:
类型可存储⼤⼩⽤途
TINYTEXT0 - 255字节⼀般⽂本字符串
TEXT0 - 65 535字节长⽂本字符串
MEDIUMTEXT0 - 16 772 150字节较⼤⽂本数据
LONGTEXT0 - 4 294 967 295字节极⼤⽂本数据
不过在⽇常场景中,存储字符串还是尽量⽤ varchar ,只有要存储长⽂本数据时,可以使⽤ text 类型。对⽐ varchar ,text 类型有以下特点:
text 类型⽆须指定长度。
若数据库未启⽤严格的 sqlmode ,当插⼊的值超过 text 列的最⼤长度时,则该值会被截断插⼊并⽣成警告。
更新mysql数据库的blob类型字段内容
更新mysql数据库的blob类型字段内容
1.⾸先对于blob类型做⼀个说明:
对于mysql或者mariadb有4个可选的blob类型:
tinyblob:最⼤存储数据的长度为255字节
blob:最⼤存储的数据长度为65535字节,也就是65Kb
mediumblob:最⼤存储的数据长度为16777215字节,也就是16Mb
longblob:最⼤存储的数据长度为4,294,967,295(232 - 1)字节,也就是4Gb
2. blob类型的⽤途
通常这种类型的字段⽤于存储⼆进制⽂件,例如 图⽚、视频、⾳频、⽂档等
3. 向数据库的blob字段中插⼊数据,并查询
# -*- coding:utf-8 -*-
import mariadb
# 连接数据库
conn = mariadb.connect(
user="mysql", # 数据库账号
password="passwd", #数据库密码
host="192.168.1.101", # 数据库主机名或IP地址
database = "employee", #指定数据库(可选)
port=3306, #端⼝
autocommit = True # DB更新操作是否⾃动commit(可选参数)
)
# 打开图⽚⽂件
with open('C:\\Users\\xiaoming\\Desktop\\100001.jpg', 'rb') as file:
fp = file.read()
# 定义sql的插⼊语句
sql_insert = '''INSERT INTO staff (uid, name, photo) values(?,?,?)'''
values = [('100001','⼩明',fp)]
# 打开数据库游标
cur = conn.cursor()
# 执⾏sql语句,进⾏插⼊数据
cur.executemany(sql_insert,values) #执⾏SQL语句
mysql基本数据类型
mysql基本数据类型
MySQL是一种关系型数据库管理系统,它支持多种数据类型。MySQL的数据类型分为数值类型、日期和时间类型、字符串类型、二进制类型。以下是MySQL基本数据类型(注意:各类型数据的存储要占用的字节数,不同的数据库系统、不同的编译选项这些大小限制和取值范围有所不同):
1. 数值类型
MySQL数值类型有整数类型和小数类型两种:
1.1 整数类型
- TINYINT:有符号范围为-128~127,无符号范围0~255。占用1个字节。
- SMALLINT:有符号范围为-32768~32767,无符号范围0~65535。占用2个字节。
- MEDIUMINT:有符号范围为-8388608~8388607,无符号范围0~16777215。占用3个字节。
- INT:有符号范围为-2147483648~2147483647,无符号范围0~4294967295。占用4个字节。
- BIGINT:有符号范围为-9223372036854775808~9223372036854775807,无符号范围0~18446744073709551615。占用8个字节。
1.2 小数类型
- FLOAT:单精度浮点数,占用4个字节。
- DOUBLE:双精度浮点数,占用8个字节。
- DECIMAL:高精度浮点数,依赖于实际存储的数字大小而变化。
2. 日期和时间类型
MySQL日期和时间类型包括DATE、TIME、DATETIME、YEAR和TIMESTAMP:
- DATE:日期,存储的范围为'1000-01-01'到'9999-12-31'。占用3个字节。
- TIME:时间,存储的范围为 '-838:59:59'到 '838:59:59'。占用3个字节。
- DATETIME:日期时间,存储范围为 '1000-01-01 00:00:00'到 '9999-12-31 23:59:59'。占用8个字节。
MySQL中tinytext、text、mediumtext和longtext详解
MySQL中tinytext、text、mediumtext和longtext详解
⼀、数字类型
类型范围说明
Char(N) [binary]N=1~255 个字元binary :分辨⼤⼩写固定长度std_name cahr(32) not null
VarChar(N) [binary]N=1~255 个字元binary :分辨⼤⼩写可变长度std_address varchar(256)
TinyBlob最⼤长度255个字元(2^8-1)Blob (Binary large objects)储存⼆进位资料,且有分⼤⼩写memo text not null
TinyText最⼤长度255个字元(2^8-1)
Blob最⼤长度65535个字元(2^16-1)
Text最⼤长度65535个字元(2^16-1)
MediumBlob最⼤长度 16777215 个字元(2^24-1)
MediumText最⼤长度 16777215 个字元(2^24-1)
LongBlob最⼤长度4294967295个字元(2^32-1)
LongText最⼤长度4294967295个字元(2^32-1)
Enum集合最⼤数⽬为65535列举(Enumeration),Enum单选、Set复选sex enum(1,0)habby set(‘玩电玩’,'睡觉’,'看电影’,'听⾳乐’)Set集合最⼤数⽬为64
辨別Null与Not Null :Null为允许储存空值(Null)
⼆、数值
类型范围说明例如
TinyInt[M] [UNSIGNED]-128~127UNSIGNED : 0~255 num tinyint unsigned
SmallInt[M] [UNSIGNED]-32768~32767UNSIGNED :0~ 65535
MediumInt[M] [UNSIGNED]-8388608~8388607UNSIGNED :0~16777215
MySQL数据库中tinyint类型字段读取数据为true和false(MySQL的boo。。。
MySQL数据库中tinyint类型字段读取数据为true和false(MySQL
的boo。。。
数据库⼀个表中有⼀个tinyint类型的字段,值为0或者1,如果取出来的话,0会变成false,1会变成true。MySQL保存boolean值时⽤1代表TRUE,0代表FALSE。boolean在MySQL⾥的类型为tinyint(1)。MySQL⾥有四个常量:true,false,TRUE,FALSE分别代表1,0,1,0。
场景:
字段:status (值为1,2,3)
类型:tinyint 长度:1(有符号的)
结果:查询出来的数据列表,状态值不管是1还是2还是3,都是"boolean true"
分析并解决:
分析:由于MySql中没有boolean类型,所以会⽤到tinyint[1]类型来表⽰,在mysql中boolean=tinyint[1]
解决:tinyint类型长度的问题,当我把长度改成4时,查询结果就正常了
猜想并使⽤新的⽅法解决:
如果不改变类型的长度,怎么让查询的结果正确呢?需要在查询语句上⾯做修改了
在你需要执⾏的sql语句中,把这个状态字段*1,结果就会得到数据库存的值了(注意:记得加别名,不然查询出来的就是status*1 => '1')SELECT id, name, status*1 AS status, add_timeFROM tableNameWHERE play_type = 0总结⼀下以上的两种解决⽅法:
1.修改tinyint类型的长度
2.在查询的sql语句上⾯做修改
所以由这⾥可以看出,当你使⽤tinyint[1]来存储超过0,1两个值以外的值,⽐如存储2,那这个2就是脏数据就⽤tinyint[4],tinyint[1]只适⽤于存储0和1两个值,也即真和假,true和false
⼀般的,咱们如果存的是纯数字的话,建议⽤tinyint,如果是字符串,且是固定长度的,建议⽤char,⽽enum的枚举字段,使⽤的使⽤需要慎重考虑,避免带来不必要的⿇烦
mysql keylen计算公式
mysql keylen计算公式
在MySQL中,索引的长度(key length)是指在索引字段上存储的字节数。对于不同类型的索引,计算 key length 的方法略有不同。以下是常见的几种情况:
1. CHAR 和 VARCHAR 类型:
- 对于 CHAR 类型,key length 等于字段的长度。
- 对于 VARCHAR 类型,key length 等于字段的最大长度加上一个额外的字节来存储长度信息。
2. BINARY 和 VARBINARY 类型:
- 对于 BINARY 类型,key length 等于字段的长度。
- 对于 VARBINARY 类型,key length 等于字段的最大长度加上一个额外的字节来存储长度信息。
3. TEXT 和 BLOB 类型:
- 对于 TEXT 和 BLOB 类型,key length 的计算取决于使用的存储引擎。
- InnoDB 存储引擎:key length 等于768字节(InnoDB的最大索引长度),而不管字段的实际长度。
- MyISAM 存储引擎:key length 等于字段的实际长度。
4. 前缀索引(Prefix Index):
- 对于 CHAR、VARCHAR、BINARY 和 VARBINARY 类型,可以创建前缀索引,只索引字段的前几个字符。
- 前缀索引的 key length 等于指定的前缀长度。
总的来说,对于不同类型的字段,key length 的计算方法是不同的。在创建表时,可以通过指定索引的长度来控制 key length,这有助于优化索引性能,尤其是在内存有限的情况下。
MySQL中採用类型varchar(20)和varchar(255)对性能上的影响
MySQL中採⽤类型varchar(20)和varchar(255)对性能上的
影响
1.MySQL建⽴索引时假设没有限制索引的⼤⼩,索引长度会默认採⽤的该字段的长度。也就是说varchar(20)和varchar(255)相应的索引长度
分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1)。当中"+2"⽤来存储长度信息,“+1”⽤来标记是否为空。载⼊索引信息时⽤varchar(255)类型会占
⽤很多其它的内存; (备注:当字段定义为⾮空的时候。是否为空的标记将不占⽤字节)
⽐如。測试sql(InnoDB引擎)例如以下:
CREATE DATABASE TestDataBase
USE TestDataBase
CREATE TABLE ABC (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
ALTER TABLE `ABC` ADD INDEX `nameIndex` (`name`)
explain select name from ABC
alter table ABC modify name varchar(255)
explain select name from ABC
结果中的ken_len表⽰索引使⽤的字节数:key_len的长度计算公式:
varchr(10)变长字段且同意NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)varchr(10)变长字段且不同意NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)+2(变长字段)char(10)固定字段且同意NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)+1(NULL)char(10)固定字段且同意NULL:10*(Character Set:utf8=3,gbk=2,latin1=1)
MySQL中tinytext、text、mediumtext和longtext等各个类型详解
MySQL中tinytext、text、mediumtext和longtext等各个类型详解
⼀、字符串类型
类型范围说明
Char(N) [ binary]N=1~255 个字节binary :分辨⼤⼩写固定长度std_name cahr(32) not null
VarChar(N) [binary]N=1~255 个字节binary :分辨⼤⼩写可变长度std_address varchar(256)
TinyBlob最⼤长度255个字节(2^8-1)Blob (Binary large objects)储存⼆进位资料,且有分⼤⼩写memo text not null
TinyText最⼤长度255个字节(2^8-1)
Blob最⼤长度65535个字节(2^16-1)
Text最⼤长度65535个字节(2^16-1)
MediumBlob最⼤长度 16777215 个字节(2^24-1)
MediumText最⼤长度 16777215 个字节(2^24-1
LongBlob最⼤长度4294967295个字节(2^32-1)
LongText最⼤长度4294967295个字节(2^32-1)
Enum集合最⼤数⽬为65535列举(Enumeration),Enum单选、Set复选sex enum(1,0)habby set(‘玩电玩’,'睡觉’,'看电影’,'听⾳乐’)Set集合最⼤数⽬为64
辨別Null与Not Null :Null为允许储存空值(Null)
⼆、数字/数值类型
类型范围说明例如
TinyInt[M] [UNSIGNED]-128~127UNSIGNED : 0~255 num tinyint unsigned
SmallInt[M] [UNSIGNED]-32768~32767UNSIGNED :0~ 65535
MediumInt[M] [UNSIGNED]-8388608~8388607UNSIGNED :0~16777215
