精华内容
下载资源
问答
  • 3.2.5 二进制数据类型MySQL支持的二进制数据类型主要有:BIT(M)、BINARY(M)、VARBINARY(M)、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB等7种,它们主要用来存储由“0”、“1”组成的字符串,跟字符串类型数据一样,...

    3.2.5 二进制数据类型

    MySQL支持的二进制数据类型主要有:BIT(M)、BINARY(M)、VARBINARY(M)、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB等7种,它们主要用来存储由“0”、“1”组成的字符串,跟字符串类型数据一样,不同的二进制数据类型允许的最多字符个数不一样、占用存储空间也不一样,详见下表:

    5b9ed92df9c2

    字符串类型取值范围占用字节数说明

    BIT(n)0-64最多8字节n为二进制位

    BINARY(M)0-255MM为最多允许的字节数,取值范围为0-255之间的整数

    VARBINARY(M)0-65535(216-1)L+1M为最多允许的字节数;

    L为实际保存数据中字节的个数;

    TINYBLOB0-255

    MEDIUMBLOB16777215(224-1)

    LONGBLOB4294967295(232-1)

    说明:

    1、上面几种二进制数据类型中,BIT(n)类型以二进制位为存储单位,其余均以二进制字节为存储单位,这跟前面的字符串类型数据以字符为单位是有明显不同的。

    2、BINARY(M)跟CHAR(M)类似,为定长类型,VARBINARY(M)与VARCHAR(M)、BLOB与TEXT、、TINYBLOB与TINYTEXT、MEDIUMBLOB与MEDIUMTEXT、LONGBLOB与LONGTEXT也对应类似,为变长类型。定长类型二进制数据和变长类型二进制数据的区别主要也有以下两点:

    1). 定长类型二进制数据不管其中字节数有没有达到它允许的M个字节都要占用M个字节的空间;变长类型二进制数据,其所需存储空间主要取决于该串中实际包含的字节数(此字节数在上表中用L来表示),再附加一个额外的结束字节。

    2). 定长类型二进制数据中保存字节超过其允许的M个时会对所保存的数据进行截短处理,而不足M个时会用“\0”进行补足;变长类型二进制数据保存字节超过其允许的M个时同样会对所保存的字符串进行截短处理,而不足M个时则不会用“\0”进行补足。

    2、从上表中我们也可看出:BINARY(M)允许的字节数少于VARBINARY(M)允许的字节数,TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB允许的字节数也是逐渐增多的,并且BINARY(M)和TINYBLOB允许的字节数、VARBINARY(M)和BLOB允许的字节数对应相等。

    二进制数据类型可用来表示长的字符串(二进制形式表示)、图片、音频、视频等,跟字符串类型一样,在必须使用时,二进制数据也应在满足使用要求(允许的最多字节数)的前提下尽量使用“短”的数据类型,以减少存储空间的占用、提高查询运算的效率。在实际中,更多的对二进制数据的使用是将图片、音频、视频等存入文件中,而不是将其存入数据表中,毕竟处理二进制数据不是数据库系统的强项。

    展开全文
  • 上面列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型一一介绍。CHAR和VARCHAR类型CHAR和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串在MySQL中,...

    为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。下面列举了MYSQL中的字符串和二进制类型。

    ed92e9433e37325ee23da7a513191257.png

    上面列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型一一介绍。

    CHAR和VARCHAR类型

    CHAR和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串在MySQL中,定义CHAR和VARCHAR类型的方式如下所示:

    CHAR(M) 或者 VARCHAR(M)

    上面的的定义方式中,M指的是字符串的最大长度。为了帮助读者更好地理解CHAR和VARCHAR之间的区别,下面以CHAR(4)和VARCHAR(4)为例进行说明,具体如下。

    427fc66692c864115b881b2dcba74463.png

    从上面图中可以看出,当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4个字节。而VARCHAR(4)所对应的数据所占用的字节数为实际长度加1。

    BINARY和 VARBINARY类型

    BINARY和 VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。定义 INARY和

    VARBINARY类型的方式如下所

    BINARY(M) EX VARBINARY (M)

    在上述格式中,M指的是二进制数据的最大字节长度。

    需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“\0”补齐,最终达到指定长度。例如,指定数据类型为BINARY(3),当插入a时,实际存储的数据为“a0\0”,当插入ab时,实际存储的数据为“ab\0”。

    TEXT类型

    TEXT类型用于表示大文本数据,例如,文章内容、评论等,它的类型分为4种,具体如下所示。

    BL0B类型

    BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF文档等。BLOB类型分为四种,具体如下所示。

    需要注意的是,BL0B类型与TX类型很相似,但BL0B类型数据是根据二进制编码进行比较和排序,而仼XT类型数据是根据文本模式进行比较和排序。

    ENM类型

    ENUM类型又称为枚举类型,定义ENM类型的数据格式如下所示:

    ENUM(‘值1', ’值2’, ’值33’ ,…, ’值n’)

    在上述格式中,(‘值1', ’值2’, ’值33’ ,…,

    ’值n’)称为枚举列表,ENM类型的数据只能从枚举列表中取,并且只能取一个。需要注意的是,枚举列表中的每个值都有一个顺序编号,MySQL中存入的就是这个顺序编号,而不是列表中的值。

    SET类型

    SET类型用于表示字符串对象,它的值可以零个或多个,SET类型数据的定义格式与ENUM类型类似,具体语法格式如下所示:

    SET(‘值1’,’值2’,’值3’,...,’值n’)

    与ENUM类型相同,(‘值1’,’值2’,’值3’,...,’值n’)列表中的每个值都有一个顺序编号,MySQL中存入的也是这个顺序编号,而不是列表中的值。

    BIT类型

    BIT类型用于表示二进制数据。定义BIT类型的基本语法格式如下所示:

    BIT(M)

    在上述格式中,M用于表示每个值的位数,范围为1~64。需要注意的是,如果分配的BIT(M)类型的数据长度小于M,将在数据的左边用0补齐。例如,为BIT(6)分配值b‘101’的效果与分配b“000101’相同。

    猜你喜欢:

    MySQL安装教程

    展开全文
  • MySQL二进制类型二进制类型是在数据库中存储二进制数据数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB等。MySQL的二进制类型如下表所示:整数类型取值范围BINARY(M)字节...

    MySQL二进制类型

    二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB等。

    MySQL的二进制类型如下表所示:

    整数类型

    取值范围

    BINARY(M)

    字节数为M字节,允许长度为0~M的固定长度二进制字符串

    VARBINARY(M)

    允许长度为0~M字节的可变长度二进制字符串,字节数为值的长度加1

    BIT(M)

    M位二进制数据,M最大值为64位

    TINYBLOB

    可变长度二进制数据,最多255个字节

    BLOB

    可变长度二进制数据,最多65535(216-1)个字节

    MEDIUMBLOB

    可变长度二进制数据,最多16777215(224-1)个字节

    LONGBLOB

    可变长度二进制数据,最多4294967295或4GB(232-1)个字节

    BINARY类型和VARBINARY类型

    BINARY类型和VARBINARY类型都是在创建表时指定了最大长度。基本的语法格式如下:

    字符串类型(M)

    其中,“字符串类型”指定了数据类型为BINARY类型还是VARBINARY类型;“M”指定了该二进制数的最大字节长度为M。这与CHAR类型和VARCHAR类型相似。例如,BINARY(10)就是指数据类型为BINARY类型,其最大长度为10。

    BINARY类型的长度是固定的,在创建表时就指定了。不足最大长度的空间由“\0”补全。例如,BINARY(50)就是指定BINARY类型的长度为50。

    VARBINARY类型的长度是可变的,在创建表时指定了最大长度。指定好了VARBINARY类型的最大值以后,其长度可以在0到最大长度之间。例如,VARBINARY(50)的最大字节长度是50。

    但是,不是每条记录的字节长度都是50,在这个最大值范围内,使用多少分配多少。VARBINARY类型实际占用的空间为实际长度加1。这样,可以有效的节约系统的空间。

    实例

    1. 创建数据表table14,定义BINARY(3)类型的字段b和VARBINARY(30)类型的字段vb。如下图所示:

    4362.gif

    2. 向数据表中插入数据'5'。如下图所示:

    4361.gif

    3. 查看两个字段存储数据的长度。SQL代码如下:

    SELECT length(b),length(vb) FROM table14;

    如下图所示:

    4360.gif

    从上图中代码执行的结果可以看出,b字段的值数据长度为3,而vb字段的值数据长度仅为插入的一个字符的长度1。

    4. 下面进一步确认'5'在两个字段中不同的存储方式。SQL语句代码如下:

    SELECT b,vb,b='5',b='5\0\0',vb='5',vb='5\0\0' FROM table14;

    如下图所示:

    4359.gif

    从上图中代码执行的结果可以看出,b字段和vb字段的长度是截然不同的,因为b字段不足的空间填充了'\0',而vb字段则没有填充。

    BIT类型

    BIT类型也是在创建表时指定了最大长度。基本的语法格式如下:

    BIT(M)

    其中,“M”指定了该二进制数的最大字节长度为M,M的最大值为64。例如,BIT(4)就是数据类型为BIT的类型,长度为4。

    如果字段的类型为BIT(4),存储的数据是从0~15。因为,变成二进制以后,15的值为1111,其长度为4。如果插入的值为16,其二进制数为10000,长度为5,超过了最大长度,所以,大于等于16的数是不能插入到BIT(4)类型的字段中的。

    在查询BIT数据类型的数据时,要用BIN(字段名+0)来将值转换为二进制显示。

    实例

    1. 创建数据表table15,定义BIT(4)类型的字段b。如下图所示:

    4358.gif

    2. 向数据表中插入数据2、9、15、16。如下图所示:

    4357.gif

    3. 查询插入结果。如下图所示:

    4356.gif

    b+0表示将二进制的结果转换为对应的数字的值,BIN()函数将数字转换为二进制。从结果可以看出,成功的将四个数插入到表中了。

    提示

    插入值16的二进制值为10000,在插入之后MySQL将值裁剪到指定范围的相应端点,在这里,指定BIT为4位,因此相应的端点值为1111,并且MySQL保存裁剪好的值。虽然默认情况下,MySQL可以插入超出该列允许范围的值,但是需要对数据进行裁剪,因而插入的数据可能是不正确的,所以要确保插入的值在指定的范围内。

    BLOB类型

    BLOB类型是一种特殊的二进制类型。BLOB可以用来保存数据量很大的二进制数据,如图片等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这几种BLOB类型最大的区别就是能够保存的最大长度不同。LONGBLOB的长度最大,TINYBLOB的长度最小。

    BLOB类型与TEXT类型很类似,不同点在于BLOB类型用于存储二进制数据,BLOB类型数据是根据其二进制编码进行比较和排序,而TEXT类型是文本模式进行比较和排序的。

    BLOB列没有字符集,并且排序和比较基于列值字节的数值;TEXT列有一个字符集,并且根据字符集对值进行排序和比较。

    BLOB类型主要用于存储图片、PDF文档等二进制文件。通常情况下,可以将图片、PDF文档等都保存在文件系统中,然后在数据库中存储这些文件的路径。

    展开全文
  • mysql存储二进制数据流,阅读用mysql存储二进制数据流,近日一项目遇到需要在DB中存储2进制数据流类型文件的问题,发现常用的mysql API都用不了,再研究,方知有一套专门的API来干这种数据,功能相当强大的说。...

    用mysql存储二进制数据流,阅读用mysql存储二进制数据流,近日一项目遇到需要在DB中存储2进制数据流类型文件的问题,发现常用的mysql API都用不了,再研究,方知有一套专门的API来干这种数据,功能相当强大的说。以下即为范例代码 --- 按照说明编译即可用,稍加修改即可存储2进制文件

    /* mysql数据库存储二进制数据 linux 用途: 用 mysql_stmt_send_long_data()来向blob字段写入2进制数据流. 注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符, 如:只写入一个long 数据,则用MYSQL_TYPE_LONG,写入字符流,用MYSQL_TYPE_STRING, 写入2进制数据流,用MYSQL_TYPE_BLOB 具体这个参数各字段的含义参见 mysql5.0手册 Compile: g++ -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient mysql_test.cpp 准备工作:

    create database test;

    use test;

    CREATE TABLE `bintest` (

    `id` int(11) NOT NULL default '0',

    `data` blob

    ) ENGINE=MyISAM;

    */

    #include

    #include

    #include

    #include

    #define INSERT_QUERY "INSERT INTO bintest(id, data) VALUES(4, ?)"

    void test()

    {

    MYSQL_BIND bind[1];

    unsigned long length;

    char blog_data[100] = {0};

    memset(blog_data, 0x01, sizeof(blog_data));

    char* pos = blog_data;

    int size = 50;

    MYSQL *mysql = mysql_init(NULL);

    if (!mysql) return;

    if (!mysql_real_connect(mysql,

    "192.168.xx.xxx",

    "root",

    "db_user_name",

    "test",

    3306, NULL, 0))

    {

    int ret = mysql_errno(mysql);

    mysql_close(mysql);

    return;

    }

    MYSQL_STMT *stmt = mysql_stmt_init(mysql);

    if (!stmt)

    {

    fprintf(stderr, " mysql_stmt_init(), out of memory\n");

    exit(0);

    }

    if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY)))

    {

    fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed");

    fprintf(stderr, "\n %s", mysql_stmt_error(stmt));

    exit(0);

    }

    memset(bind, 0, sizeof(bind));

    //bind[0].buffer_type= MYSQL_TYPE_STRING;

    //bind[0].buffer_type = MYSQL_TYPE_LONG;

    bind[0].buffer = blog_data;

    //bind[0].buffer_type = MYSQL_TYPE_TINY;

    bind[0].buffer_type = MYSQL_TYPE_BLOB;

    bind[0].length= &length;

    bind[0].is_null= 0;

    /* Bind the buffers */

    if (mysql_stmt_bind_param(stmt, bind))

    {

    fprintf(stderr, "\n param bind failed");

    fprintf(stderr, "\n %s", mysql_stmt_error(stmt));

    exit(0);

    }

    int rc =0;

    /* Supply data in chunks to server */

    if (mysql_stmt_send_long_data(stmt,0, pos, size))

    {

    fprintf(stderr, "\n send_long_data failed");

    fprintf(stderr, "\n %s", mysql_stmt_error(stmt));

    exit(0);

    }

    pos += size;

    /* Supply the next piece of data */

    if (mysql_stmt_send_long_data(stmt,0, pos, size))

    {

    fprintf(stderr, "\n send_long_data failed");

    fprintf(stderr, "\n %s", mysql_stmt_error(stmt));

    exit(0);

    }

    /* Now, execute the query */

    if (mysql_stmt_execute(stmt))

    {

    fprintf(stderr, "\n mysql_stmt_execute failed");

    fprintf(stderr, "\n %s", mysql_stmt_error(stmt));

    exit(0);

    }

    }

    int main()

    {

    test();

    //sleep(1);

    return 0;

    }

    展开全文
  • /*mysql数据库存储二进制数据 linux用途: 用 mysql_stmt_send_long_data()来向blob字段写入2进制数据流.注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符,如:只写入一个long 数据,则...
  • 近日一项目遇到需要在DB中存储2进制数据流类型文件的问题,发现常用的mysql API都用不了,再研究,方知有一套专门的API来干这种数据,功能.../*mysql数据库存储二进制数据 linux用途: 用 mysql_stmt_send_long_da...
  • 二进制类型是在数据库中存储二进制数据数据类型。二进制类型包括binary,varbinary,bit,tinyblob,blob,mediumblob,longblob。这篇博客这里整理一下二进制类型的特点和差异。 binary类型和varbinary类型binary...
  • bitsCN.comMySql如何插入和查询二进制数据mysql二进制Mysql:bit类型的查询与插入mysql有种字段类型是bit。1.如何插入呢?它的插入必须采用:可以使用b‘value’符号写位字段值。value是一个用0和1写成的二进制值。...
  • bitsCN.comMySql如何插入和查询二进制数据mysql二进制Mysql:bit类型的查询与插入mysql有种字段类型是bit。1.如何插入呢?它的插入必须采用:可以使用b‘value’符号写位字段值。value是一个用0和1写成的二进制值。...
  • 1. MySQL支持的二进制数据类型:tinyblob, blob, mediumblob和longblob。 2. JDBC中我们用PrepareStatement的SetBlob和GetBlob获取和设置二进制数据。 3. 创建BlobDaoImpl.java来对二进制数据进行存储和获取
  • MySql 二进制类型

    千次阅读 2015-10-25 15:04:58
    二进制类型是在数据库中存储二进制数据数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB等。 MySQL的二进制类型如下表所示: 整数类型 取值范围 BINARY...
  • 其基本形式如下:字符串类型(M),其中,‘字符串类型’参数指定了数据类型为binary类型还是varbinary类型,M参数指定了该二进制数的最大字节长度为M。这与char类型和varchar类型相似。举个例子,binary(10)就是指...
  • 进入 近日一项目遇到需要在DB中存储2进制数据类型文件的问题,发现常用的mysql API都用不了,再研究,方知有一套专门的API来干这种数据,功能相当强大的说。 以下即为范例代码 --- 按照说明编译即可用,欢迎进入...
  • 关键步骤为以下三点:最重要的一点:存储二进制数据的表的类型需要是blob类型(按长度不同分为tiny, media,long)插入二进制数据时需要利用mysql_real_escape_string函数对数据进行转换从数据库中读取二进制数据时需要...
  • MySQL支持两类字符型数据:文本字符串和二进制字符串。上一教程22中讲了文本字符串,这节来讲解二进制字符串。...下表中列出了 MySQL 中的二进制数据类型,括号中的M表示可以为其指定长度。类型名称说明存...
  • mysql日志的种类二进制日志(binary log):记录数据更新的操作,mysqlbinlog 可查看二进制日志文件错误日志(error log):记录mysql服务进程mysqld的启动、关闭和运行时的错误信息慢查询日志(slow query log):记录...
  • 1.二进制日志二进制日志存储修改数据库中表数据的所有动作,包含了所有更新了数据或者已经潜在更新了数据的所有语句。潜在跟新了数据的SQL语句例如:无法匹配行的DELETE语句;设置列为当前值的UPDATE语句。除此之外...
  • 由于在数据表中定义了一个字段是varbinary,需要利用C API进行插入操作,但是试了N种方法均不行,下面列举一下我们使用过的方式:(bina为char数组,也即待插入的二进制数据,其中可能含有各种字符;)1.sprintf(str,...
  • 1、【错误日志ErrorLog】---记录...如果没有给定file_name值,mysqld使用错误日志名host_name.err并在数据目录中写入日志文件。如果你执行FLUSHLOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件...
  • 1.下载MySQL的通用二进制压缩包,并创建mysql用户及组useradd mysqlid mysqluid=500(mysql) gid=500(mysql) groups=500(mysql)2.创建MySQL数据目录/mydata/data,此目录建议使用LVM实现,方便以后随时扩容和基于LVM...
  • mysql数据库存储二进制数据 linux用途: 用 mysql_stmt_send_long_data()来向blob字段写入2进制数据流.注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符,如:只写入一个long 数据,则用...
  • 一、二进制类型二进制字段类型是在MySQL数据库中存储二进制数据数据类型。二进制类型包括binary,varbinary,bit,tinyblob,blob,mediumblob,longblob整数类型取值范围BINARY(M)字节数为M字节,允许长度为0~M...
  • Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)2021-01-23 19:18:284在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试//测试文件c:\\test.iso,你可以找任何一个文件修改为...
  • MySql支持多种不同的数据类型,选择正确的类型对于获得高性能至关重要,下面原则有助于做出选择:1、更小通常更好一般来说,要试着使用能正确的存储和表示数据的最小类型,更小的数据类型通常会更快,因为他们使用了...
  • MySQL-二进制类型

    2020-06-24 11:40:01
    二进制数据和文本数据在mysql 中的最大区别在于: 二进制类型存储原始的二进制数据(如图片,视频,exe文件等)。文本类型(TEXT)用来存储字符字符串(如由英文字符、中文字符或其它语言字符组成的字符串)。 二进制...
  • C++ MySQL存储二进制数据

    千次阅读 2016-05-12 23:27:46
    0x01 首先MySQL支持二进制的类型有Blob: MySQL的四种BLOB类型 类型 大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K ...插入二进制数据时需要利用mysql_real_escape_string函数对...读取二进制数据时需要利用mysql
  • mysql 存储二进制数据

    2015-05-02 17:02:00
    最重要的一点:存储二进制数据的表的类型需要是blob类型(按长度不同分为tiny, media, long) 插入二进制数据时需要利用mysql_real_escape_string函数对数据进行转换 从数据库中读取二进制数据时需要利用mysql_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,462
精华内容 984
热门标签
关键字:

mysql二进制数据类型

mysql 订阅