精华内容
下载资源
问答
  • mysql 存储多媒体数据
    2021-01-28 04:46:45

    类型

    大小

    特点

    优点

    用途

    CHAR

    0-255字节

    定长

    效率高,消耗空间

    定长字符串

    VARCHAR

    0-65535 字节

    可变长度

    效率低,节省空间

    变长字符串

    BLOB

    0-65 535字节

    二进制形式的长文本数据

    TEXT

    0-65 535字节

    长文本数据

    LONGBLOB

    0-4 294 967 295字节

    二进制形式的极大文本数据

    LONGTEXT

    0-4 294 967 295字节

    极大文本数据

    mysql一般不存储大型的多媒体数据,一般都存储媒体数据的地址指向其他服务器的地址。

    PS:char(10) 表示存储10个字符;int(10) 表示显示的数据长度。如下示例:

    # 创建t9表

    mysql> create table t9 (age int(3));

    Query OK, 0 rows affected (0.46 sec)

    mysql> insert into t9 values(1);

    Query OK, 1 row affected (0.04 sec)

    mysql> insert into t9 values(1111);

    Query OK, 1 row affected (0.29 sec)

    # 能插入大于3位的整数

    mysql> select * from t9;

    +------+

    | age |

    +------+

    | 1 |

    | 1111 |

    +------+

    2 rows in set (0.00 sec)

    # 更改age字段的属性

    mysql> alter table t9 modify age int zerofill;

    Query OK, 2 rows affected (0.79 sec)

    Records: 2 Duplicates: 0 Warnings: 0

    mysql> select * from t9;

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

    | age |

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

    | 0000000001 |

    | 0000001111 |

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

    2 rows in set (0.00 sec)

    # 更改age字段的属性

    mysql> alter table t9 modify age int(4) zerofill;

    Query OK, 0 rows affected (0.30 sec)

    Records: 0 Duplicates: 0 Warnings: 0

    mysql> select * from t9;

    +------+

    | age |

    +------+

    | 0001 |

    | 1111 |

    +------+

    2 rows in set (0.00 sec)

    # 由此可见,int(4)表示显示4位长度数据时,不足的部分是被填充了,再我们使用zerofill约束之后,观点得到了验证

    更多相关内容
  • 创建一个多媒体文件数据查询的Rest web service服务:VideoDBController.javapackage image;import java.sql.Date;import java.sql.Timestamp;import java.util.ArrayList;import java.util.List;import java.util....

    创建一个多媒体文件数据查询的Rest web service服务:VideoDBController.java

    package image;

    import java.sql.Date;

    import java.sql.Timestamp;

    import java.util.ArrayList;

    import java.util.List;

    import java.util.Map;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.jdbc.core.JdbcTemplate;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RestController;

    import image.storage.FileInfoBean;

    @RestController

    public class VideoDBController {

    @Autowired

    private JdbcTemplate jdbcTemplate;

    @RequestMapping("/videoList")

    public List getVideoList()

    {

    String sql = "select * from video_info";

    List> resTmp = jdbcTemplate.queryForList(sql);

    List result = new ArrayList();

    //遍历所有数据

    for(Map map:resTmp)

    {

    FileInfoBean fileInfo =new FileInfoBean();

    Object id = map.get("id");

    if(id!=null)

    {

    fileInfo.setId(Integer.valueOf(id.toString()));

    }

    Object fileName=map.get("fileName");

    if(fileName!=null)

    {

    fileInfo.setFileName(fileName.toString());

    }

    Object filePath=map.get("filePath");

    if(filePath!=null)

    {

    fileInfo.setFilePath(filePath.toString());

    }

    Object author=map.get("author");

    if(author!=null)

    {

    fileInfo.setAuthor(author.toString());

    }

    Object createDate =map.get("createDate");

    if(createDate !=null)

    {

    fileInfo.setCreatedDate((Timestamp)createDate);

    }

    result.add(fileInfo);

    }

    return result;

    }

    }

    展开全文
  • root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jpg;done;root@ytt:/var/lib/mysql-files# ls100.jpg 17.jpg 25.jpg 33.jpg 41.jpg 4.jpg 58.jpg 66.jpg 74.j...

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jpg;done;

    root@ytt:/var/lib/mysql-files# ls

    100.jpg   17.jpg  25.jpg  33.jpg  41.jpg  4.jpg   58.jpg  66.jpg  74.jpg  82.jpg  90.jpg  99.jpg  f8.tsv

    10.jpg    18.jpg  26.jpg  34.jpg  42.jpg  50.jpg  59.jpg  67.jpg  75.jpg  83.jpg  91.jpg  9.jpg   微信图片_20190711095019.jpg

    1111.jpg  19.jpg  27.jpg  35.jpg  43.jpg  51.jpg  5.jpg   68.jpg  76.jpg  84.jpg  92.jpg  f1.tsv

    11.jpg    1.jpg   28.jpg  36.jpg  44.jpg  52.jpg  60.jpg  69.jpg  77.jpg  85.jpg  93.jpg  f2.tsv

    12.jpg    20.jpg  29.jpg  37.jpg  45.jpg  53.jpg  61.jpg  6.jpg   78.jpg  86.jpg  94.jpg  f3.tsv

    13.jpg    21.jpg  2.jpg   38.jpg  46.jpg  54.jpg  62.jpg  70.jpg  79.jpg  87.jpg  95.jpg  f4.tsv

    14.jpg    22.jpg  30.jpg  39.jpg  47.jpg  55.jpg  63.jpg  71.jpg  7.jpg   88.jpg  96.jpg  f5.tsv

    15.jpg    23.jpg  31.jpg  3.jpg   48.jpg  56.jpg  64.jpg  72.jpg  80.jpg  89.jpg  97.jpg  f6.tsv

    16.jpg    24.jpg  32.jpg  40.jpg  49.jpg  57.jpg  65.jpg  73.jpg  81.jpg  8.jpg   98.jpg  f7.tsv

    我们建三张表,分别用 LONGBLOB、LONGTEXT 和 VARCHAR 来存储这些图片信息

    mysql> show create table tt_image1G

    *************************** 1. row ***************************

    Table: tt_image1

    Create Table: CREATE TABLE `tt_image1` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `image_file` longblob,

    PRIMARY KEY (`id`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    1 row in set (0.00 sec)

    mysql> show create table tt_image2G

    *************************** 1. row ***************************

    Table: tt_image2

    Create Table: CREATE TABLE `tt_image2` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `image_file` longtext,

    PRIMARY KEY (`id`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    1 row in set (0.00 sec)

    mysql> show create table tt_image3G

    *************************** 1. row ***************************

    Table: tt_image3

    Create Table: CREATE TABLE `tt_image3` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `image_file` varchar(100) DEFAULT NULL,

    PRIMARY KEY (`id`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    1 row in set (0.00 sec)

    我们来给三张表插入 100 张图片(插入前,建议把 max_allowed_packet 设置到最大)

    tt_image1

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

    do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image1(image_file)

    values (load_file('/var/lib/mysql-files/$i.jpg'))";done;

    tt_image2

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

    do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image2(image_file)

    values (hex(load_file('/var/lib/mysql-files/$i.jpg')))";done;

    tt_image3

    root@ytt:/var/lib/mysql-files# aa='begin;';for i in `seq 1 100`;

    do aa=$aa"insert into ytt.tt_image3(image_file) values

    ('/var/lib/mysql-files/$i.jpg');";

    done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqld.sock -e "`echo $aa`";

    检查下三张表记录数

    mysql> select 'tt_image1' as name ,count(*) from tt_image1 union allselect 'tt_image2',count(*) from tt_image2 union all select 'tt_image3', count(*) from tt_image3;+-----------+----------+| name      | count(*) |+-----------+----------+| tt_image1 |      100 || tt_image2 |      100 || tt_image3 |      100 |+-----------+----------+3 rows in set (0.00 sec)

    看下文件大小,可以看到实际大小排名,LONGTEXT 字段存储的最大,LONGBLOB 字段缩小到一半,最小的是存储图片路径的表 tt_image3。所以这里从存储空间来看,存放路径最占优势。

    root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd274605  80K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3.ibd

    那么怎么把图片取出来呢?

    tt_image3 肯定是最容易的

    mysql> select * from tt_image3;+----+----------------------------+| id | image_file                 |+----+----------------------------+|  1 | /var/lib/mysql-files/1.jpg |+----+----------------------------+...100 rows in set (0.00 sec)

    tt_image1 直接导出来二进制文件即可,下面我写了个存储过程,导出所有图片。

    mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN      DECLARE i,cnt INT DEFAULT 0;      SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt;      WHILE i < cnt DO        SET @stmt = CONCAT('select image_file from tt_image1  limit ',i,',1 into dumpfile ''/var/lib/mysql-files/image',i,'.jpg''');        PREPARE s1 FROM @stmt;        EXECUTE s1;        DROP PREPARE s1;      SET i = i + 1;      END WHILE;      END$$mysql> DELIMITER ;mysql> call sp_get_image;

    tt_image2 类似,把 select 语句里 image_file 变为 unhex(image_file) 即可。

    总结

    这里我举了个用 MySQL 来存放图片的例子,总的来说有以下三点:

    占用磁盘空间大(这样会带来各种各样的功能与性能问题,比如备份,写入,读取操作等)

    使用不易

    还是推荐用文件路径来代替实际的文件内容存放

    展开全文
  • mysql 一条数据占用的空间

    千次阅读 2022-04-25 11:18:55
    举例子,请问如下表,存储一条数据,占用的数据库空间是多少? CREATE TABLE `payment_common_info` ( `id` bigint(20) NOT NULL COMMENT 'id', `request_id` varchar(50) NOT NULL COMMENT '请求id', `source...

     举例子,请问如下表,存储一条数据,占用的数据库空间是多少?

    CREATE TABLE `payment_common_info` (
      `id` bigint(20) NOT NULL COMMENT 'id',
      `request_id` varchar(50) NOT NULL COMMENT '请求id',
      `source` tinyint(2) NOT NULL COMMENT '系统来源 1:DADA',
      `business_no` varchar(20) NOT NULL COMMENT '业务单号',
      `uuid` varchar(20) NOT NULL COMMENT '防重单号',
      `name` varchar(20) DEFAULT NULL COMMENT '姓名',
      `phone` varchar(20) DEFAULT NULL COMMENT '手机号',
      `cert_no` varchar(20) DEFAULT NULL COMMENT '身份证号',
      `charge_account_no` varchar(20) DEFAULT NULL COMMENT '收款账户',
      `actual_amount` decimal(16,2) DEFAULT NULL COMMENT '实发金额',
      `settle_amount` decimal(16,2) DEFAULT NULL COMMENT '结算金额',
      `payment_status` tinyint(6) DEFAULT '1' COMMENT '1:成功 2:失败 3:其他',
      `invoice_status` tinyint(2) NOT NULL COMMENT '1.成功 2.红冲 3.作废 4.其他',
      `invoice_date` datetime DEFAULT NULL COMMENT '开票时间',
      `payment_date` datetime DEFAULT NULL COMMENT '发佣时间',
      `create_date` datetime DEFAULT NULL COMMENT '创建时间',
      `update_date` datetime DEFAULT NULL COMMENT '更新时间',
      `valid` tinyint(2) NOT NULL DEFAULT '1' COMMENT '数据有效性 1有效 2无效',
      PRIMARY KEY (`id`),
      UNIQUE KEY `uuid` (`uuid`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='发佣信息共有属性表';

    1.mysql中的varchar(N)占用多少空间?

    varchar(N)里的N是字符数,而不是字节数;字符类型(varchar text blob等)空间=字符实际长度+字段长度。varchar(N)占用的空间:


    如果是lantin1字符集时,空间=1N+(1 or 2)bytes,因为lantin1的1个字符占用1个字节,后面加的1或2bytes是用来表示字段长度的,如果超过255个字节,要2个bytes来表示字段长度;
    如果是utf8字符集时,空间=3N+(1 or 2)bytes,因为utf8的1个字符占用3个字节,后面加的1或2bytes是用来表示字段长度的。当可能超过255字节时,要2个bytes来表示字段长度。

    举个例子:varchar(N)可能超过255字节,字段长度=2;
    当varchar(100)字符集为utf8时,’aaaa‘分别占用几个字节?
    因为varchar(100)存储中文将占用3*100=300,300 >225个字节,

    所以需要2个字节来表示字段长度。’aaaa‘占用的空间=300+2=302bytes

    2.mysql中的bigint(M)占用多少空间?

    bigint(M)占用8个字节,有符号值:-9223372036854775808 到9223373036854775807(- 2^63到2^63-1)无符号值:0到18446744073709551615(0到2^64 – 1)

    3.tinyint(m)占用多少空间?

    tinyint(m)占用1字节,有符号值:-128 到127(- 2^7 到2^7 – 1),无符号值:0到255(0 到2^8 – 1)

    4.smallint(m)占用多少空间?

    smallint(m)占用2字节,有符号值:-32768 到32767(- 2^15 到2^15 – 1),无符号值:0到65535(0 到21 6 – 1)

    5.mediumint(m)占用多少空间?

    mediumint(m)占用3字节,有符号值:-8388608 到8388607(- 2^23 到2^23 – 1 ),无符号值:0到16777215(0 到2^24 – 1)

    6.int(m)占用多少空间?

    int(m)占用4字节,有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1),无符号值:0到4294967295(0 到2^32 – 1)

    7.float(m,d)占用多少空间?

    float(m,d)占用4字节,最小非零值:±1.175494351e – 38

    8.double(m,d)占用多少空间?

    double(m,d)占用8字节,最小非零值:±2.2250738585072014e – 308

    9.decimal (m, d)占用多少空间?

    m字节(mysql < 3.23),m+2字节(mysql > 3.23 )

    10.日期占用多少空间?

    DATE占用4字节,范围1000-01-01——9999-12-31

    TIME占用3字节,范围-838:59:59——838:59:59

    DATETIME占用8字节,范围1000-01-01 00:00:00——9999-12-31 23:59:59

    TIMESTAMP占用4字节,范围19700101080001——20380119111407

    YEAR占用1字节,范围1901——2155

    11.二进制数据类型占用多少字节?

    二进制数据类型:二进制类型可存储任何数据,如文字、图像、多媒体等。

    TITYBLOB,最大长度为255字节

    BLOB,最大长度为64KB

    MEDIUMBLOB,最大长度为16MB

    LONGBLOB,最大长度为4GB

    参考上述,表payment_common_info存储一条数据所占用的空间=8+(3*50+1)+1+6*(20*3+1)+16*2+1*3+4*8+(8+20*3+1索引占用空间按照索引字段大小算)=662个字节

    参考文献:

    mysql的索引key_len计算方法,及个字段所占字节数 - Yxh_blogs - 博客园

    展开全文
  • 字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型 VARCHAR2/NVARCHAR2)两种。 CHAR 类型 CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非NULL 的CHAR(12)总是包含12 字节信息。
  • MySQL中的数据类型

    2022-05-14 21:11:42
    数据类型是定义列中可以存储什么类型的数据以及该数据怎样存储的基本规则 数据类型限制存储数据列中的数据。例如,数值数据类型只能接收数值类型的是数据 在设计表时,应该特别重视所用的数据类型。使用错误的...
  • MySQL数据类型全解析

    2021-02-08 05:22:34
    数据类型:定义列中可以存储什么数据以及该数据实际怎样存储的基本规则。数据类型用于以下目的:1、允许限制可存储在列中的数据。如:数值数据类型列只能接受数值。2、允许在内部更有效地存储数据。如:用比文本串更...
  • 多媒体数据库的主要技术(1)数据建模与存储多媒体数据模型的基本任务是支持结构化数据(如字符、数字)(如视频、声音等)的表示及属性特征的描述;支持,即多媒体的数据模型应能表示各媒体对象间的语、...
  • Mysql数据类型最细讲解

    千次阅读 2021-01-28 03:39:19
    文章原创于公众号:程序猿周先...而我们也知道,Mysql中列的数据类型很多,而大多数人可能只是知道这些不同的数据类型怎么去使用,所以本篇文章主要详细谈谈Mysql中各种不同的数据类型。Mysql数据类型分类在Mysql中...
  • 5.一文搞懂MySQL数据类型

    千次阅读 2021-09-01 11:50:32
    数据类型是定义列中可以存储什么类型的数据以及该数据实际怎样存储的基本规则数据类型限制存储数据列列中的数据
  • MySQL 常见数据类型

    2021-01-28 08:48:48
    Mysql的常用数据类型主要有:串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串。定长串结束长度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与...
  • 数据类型:定义列中可以存储什么数据以及该数据实际怎样存储的基本规则。 数据类型用于以下目的: 1、允许限制可存储在列中的数据。如:数值数据类型列只能接受数值。 2、允许在内部更有效地存储数据。如:用比...
  • 数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则。在实际编程中,选择列的基本类型的时候,基本原则就是选择可以满足数据的最小类型。① 字符串数据类型:分别为定长串和不定长串。一. 定长串...
  • MySQL常用数据类型

    千次阅读 2021-01-19 06:54:37
    Mysql的常用数据类型主要有一下四种:串数据类型、数值数据类型、日期和时间数据类型、二进制数据类型。一.串数据类型这是最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串。定长串结束长度固定的字符...
  • mysql建表语句和数据类型

    千次阅读 2021-01-19 08:46:27
    1.创建表的完整语法create table 表名(字段名称 数据类型[(长度) 约束条件],字段名称 数据类型[(长度) 约束条件])必须的:字段名 数据类型 表名可选的:长度 约束条件长度用于设置数据的长度数据类型也是一种约束约束...
  • MySQL 数据类型-Fun言

    2021-01-28 03:12:03
    数据不仅包括中文、数字、字母、文字和其他特殊字符组成的文本形式的数据,而且还包括图形、图像、动画、影像、声音等多媒体数据。但使用最多、最基本的仍然是文本数据。1. MySQL的数据类型在MySQL中有如下几...
  • mysql数据类型

    千次阅读 2021-01-19 21:49:53
    数据不仅包括数字、字母、文字和其他特殊字符组成的文本形式的数据,而且还包括图形、图像、动画、影像、声音等多媒体数据。但使用最 多、最基本的仍然是文本数据。1. mysql的数据类型在mysql中有如下几种数据类型:...
  • 二进制多媒体数据,将二进制多媒体数据存放在数据库中,一个问题是数据库空间资源耗用非常严重,另一个问题是这些数据的存储很消耗数据库主机的CPU资源。这种数据主要包括图片、音频、视频和其他一些相关的二进制...
  • 它就是存储图片、音频、视频等多媒体信息 以二进制流的形式 但是真正开发中 不会把二进制的文件存放在数据库当中 而是把文件存储的路径保存在数据库当中,以后再取出路径,到该路径下读取信息 BLOB类型有: TINYBLOB ...
  • Mysql的常用数据类型主要有:串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串。定长串结束长度固定的字符,其长度是创建表是指定的,不允许多于指定的字符数据,它们分配的存储空间与...
  • MySQL 支持所有标准 SQL 数值数据类型。这些类型包括严格数值数据...BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。
  • 1,标准SQL数据类型BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。不需数据转换(例如,转换到文本数据)。数据输入二进制字段的方式决定了它的输出方式。BIT 1 个字节0 和 1 ,以及只包含这...
  • mysql数据库插入json数据

    千次阅读 2020-11-22 17:56:49
    json是一种常用的,数据格式,如何存储MySQL数据库中呢 了解一种数据类型blob 1.blob 类型 BLOB (binary large object)----二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来...
  • 这里将告诉您Mysql 常用数据类型 占用字节数 [转],具体操作方法:数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则。Mysql的常用数据类型主要有:串数据类型:最常用的数据类型,有两种基本的串...
  • 【数据库】MySQL操作之更新数据

    千次阅读 2022-04-30 17:10:32
    3. 把男学生记录保存到表 TS 中 首先我们应该明确的是我们当前的数据库里没有TS表: 因此我们需要创建TS表,创建的同时把男学生的记录插入这个表中: 4. 将学号为' 20180202' 的学生姓名改为'张...
  • 数据不仅包括数字、字母、文字和其他特殊字符组成的文本形式的数据,而且还包括图形、图像、动画、影像、声音等多媒体数据。但使用最多、最基本的仍然是文本数据。1. MySQL的数据类型在MySQL中有如下几种数据类型:...
  • MySQL数据类型

    2021-04-24 20:48:36
    数据类型:定义列中可以存储什么数据以及该数据实际怎样存储的基本规则。数据类型用于以下目的:1、允许限制可存储在列中的数据。如:数值数据类型列只能接受数值。2、允许在内部更有效地存储数据。如:用比文本串更...
  • Java存储图片到Mysql

    2021-01-30 04:14:58
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼【1】视图层action="${ctx}/web/UserInforServlet?method=userInforServlet" >更换头像立即提交重置var ...初始化layui模块-弹出层与table数据表格layui.use(["la...
  • 本文将主要讲解了数据库的一些基础知识,介绍了MySql存储引擎,最后讲了MySql常用的数据类型

空空如也

空空如也

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

mysql 存储多媒体数据

mysql 订阅