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是一种数据类型,用来存储二进制数据。该类型可以用于存储图片、音频、视频、压缩文件等等。本文将详细介绍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(二)数据库数据类型详解

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数据类型详解

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类型字段内容

更新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的数据类型分为数值类型、日期和时间类型、字符串类型、二进制类型。以下是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详解

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档