mysql那些事(3)小数如何存储】的更多相关文章

创建mysql数据表的时候,经常会遇到存储小数(浮点数)的情况,如:价格,重量,身高等. 目前大的公司流行三种存储方案: 1.将数据扩大10的倍数达到使用整数类型存储目的. 比如价格,我们经常以分为单位进行存储,也就是将数据扩大100倍,这样元改成分存储. 重量可以用克为单位,如果克还是小数,就以毫克,微克等单位进行存储. 2.使用decimal类型的方式存储 比如价格,我们可以使用两位小数的精度进行存储.强烈不建议采用float或者double的类型存储,会存在精度损失的问题,在以后做值比较的…
在mysql见表的时候,会遇到选择存储引擎:MyISAM和InnoDB.究竟用哪种存储引擎好呢? 1.MyISAM:表锁:支持全文索引:读并发性能较好. 2.InnoDB:行锁:支持事务,支持外键:写并发性能较好. 实际上,现在大多数的公司里,mysql的规定都是使用InnoDB作为默认存储引擎,除了支持事务和行锁是比较重要的两个原因外,其实MyISAM在实际应用场景中意义也不大,并且一个重要原因是,官方支持力度大.oracle很早就收购了InnoDB,后面又收购了mysql,现在重点发展Inn…
mysql那些事之索引篇 上一篇博客已经简单从广的方面介绍了一下mysql整体架构以及物理结构的内容. 本篇博客的内容是mysql的索引,索引无论是在面试还是我们日常工作中都是非常的重要一环. 索引是什么? 官方介绍索引是帮助MySQL高效获取数据的数据结构.打个比方来说的话相当于我们生活中字典. 索引的优势和劣势 优势: 可以加快数据的检索速度,降低磁盘的IO,提高查询效率. 索引列可以对数据进行排序,减低cpu的消耗 劣势: 索引是需要占用磁盘空间的. 索引只是针对查询会提升性能.对增删改反…
0.说明 Linux下更改yum默认安装的mysql路径datadir. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql. 假如要把MySQL目录移到/home/data. 1.创建新目录 cd /home mkdir data 2.把MySQL服务进程停掉: mysqladmin -u root -p shutdown 3. 把/var/lib/mysql整个目录移到/home/data mv /var/lib/mysql /home/data/ 这样就把MySQ…
原文:MySQL - 常见的三种数据库存储引擎 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能.现在许多不同的数据库管理系统都支持多种不同的数据引擎.MySQL的核心就是插件式存储引擎.   查看存储引擎: 我们可以用SHOW ENGINES; 来查询数据库的存储引擎.   MySQL给用户提供了许多不同的存储引擎.在MySQL中,不需…
小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 话说两个多月前,小史通过了A厂的一面,两个多月后的今天,小史终于等到了A厂的二面. 简单的自我介绍后,面试官看了看小史的简历,开始发问了. [面试现场] 小史:没问题,这个项目前端用的react+webpack,后端用的nginx+SpringBoot+Redis+MySql,前后端分离的,最后用docker进行容器化部署.主要模块有师生系统.课程系统.成绩系统.选课系统等. 这个项目…
php+前端+mysql实现文件上传并储存 我们都知道很多网站都需要上传文件,最普遍的就是图片上传,即是用户头像等等: 关于mysql+php实现文件查询,存储大致两个方式, 1.直接把文件写入mysql中,mysql提供了二进制文件存储类型, 详情可以看看这个https://blog.csdn.net/treeshy/article/details/50925168 2.第二种相对比较简单,直接在mysql的字段中储存文件路径就好. 第二种操作演示: 1.使用html的form表单上传文件:…
几乎每次数据库建模的时候,都会遇到时间类型数据存储的问题. mysql存储时间通常选择这四种类型:datetime.timestamp.int和bigint四种方式,到底使用什么类型,需要看具体的业务. 我们分别对这四种类型进行讨论. 1.datetime 这个类型可以存储8字节,表示从1000到9999年之间的数据.这个类型可以为空值,也可以自定义值,默认的初始值是“0000-00-00 00:00:00”. 这种类型存储的存储的优点是数据可读性强,不需要函数做转换. 2.timestamp…
创建mysql数据表的时候,经常会遇到手机号码和座机号码数据的存储问题. 先说手机号码:很多人喜欢使用数字来进行存储,手机号不涉及到运算,并且有时候要带括号,加号之类的字符,有时候还要以0开头.所以,手机号最好使用varchar(20)的方式进行存储,这样存储可以支持模糊查询. 座机号码的存储有两种方式,一种是座机区号和座机号分开存储成varchar.一种是使用一个varchar存储整个座机电话号码.…
出处:http://blog.codinglabs.org/articles/theory-of-mysql-index.html   摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论.…
说明:刚开始用的round(值1/值2*100,1) 结果没出效果,才搜到decimal函数 在工作中会遇到计算小数而且需要显现出小数末尾的0,我们会用到DECIMAL这个函数,这是一个函数非常强悍:具体用法DECIMAL(P,D); 在上面的语法中: P是表示有效数字数的精度. P范围为1〜65. D是表示小数点后的位数. D的范围是0~30.MySQL要求D小于或等于(<=)P. DECIMAL(P,D)表示列可以存储D位小数的P位数.十进制列的实际范围取决于精度和刻度. 与INT数据类型一…
mysql保留字段小数点后两位小数用函数:truncate(s.price,2)即可.如果想用四舍五入的话用round(s.price,2).  …
在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载地址:http://download.csdn.net/detail/keypig_zz/9262767. 现在说一说如何实现blob类型数据的操作. 新建winform程序,添加两个按钮.代码如下: System.IO.MemoryStream ms = new System.IO.MemoryS…
1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from YOUR_DB_NAME where name='YOUR_TABLE_NAME'; b.show create table YOUR_TABLE_NAME; 如果显示的格式不好看,可以用\g代替行尾分号  有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为…
1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name where name='table_name'; b.show create table table_name; 如果显示的格式不好看,可以用\g代替行尾分号 有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为之前建的是Innodb表,关掉后…
1: 视图什么是视图    视图是一个虚拟表, 它的内容来源于查询的实表, 本身没有真正的数据;视图的作用    对于复杂的查询时,每次查询时都需要编写一些重复的查询代码让编写sql的效率低下, 为了解决这个问题,就是提供视图创建视图    语法: create view view_name as select .....    例: create view v_stu as select stu_no, stu_name, stu_sex, stu_age from student;查询视图 …
由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情.但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储.下面介绍了关于如何修改mysql数据库的编码格式变为utf8mb4的具体方法. Linux系统中MySQL的配置文件…
转自:https://blog.csdn.net/bigtree_3721/article/details/73151028 InnoDB引擎表的特点 1.InnoDB引擎表是基于B+树的索引组织表(IOT) 关于B+树 (图片来源于网上) B+ 树的特点: (1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的; (2)不可能在非叶子结点命中; (3)非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层; 2.如果我们定义了主键(…
一.将现有的myiasm引擎转化为innodb引擎 1.首先我们知道myisam有几点特别烦 a( 运用的是表级锁 b( 不支持csr(故障自动恢复) 2.mysql的5.1.177版本innodb引擎支持并不完善,到了5.6.38支持则非常完美,所以不要拿太低版本来做实验了 3.开始备份我们的数据 mysqldump -uroot -p123 库名 表名 >/tmp/a.sql 4.对备份进行处理,将引擎转化为engine sed -i 's#ENGINE=MYISAM#ENGINE=INNO…
一.MySQL存储引擎 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型).MySQL5.5以后默认使用InnoDB存储引擎. 下图是MySQL中各种存储引擎的对比. 1.MyISAM: 这种引擎是mysql最早提供的.它不支持事务,也不支持外键,尤其是访问速度快.这种引擎又可以分为静态MyISAM.动态MyISAM 和压缩MyISAM三种: 1) 静…
MVCC MySQL INNODB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-VERSION Concurrency Control).MVCC最大的好处,相信也是耳熟能详:读不加锁,读写不冲突.在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能,这也是为什么现阶段,几乎所有的RDBMS,都支持了MVCC. 在MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read).快照读,读取的是…
一.innodb的核心特点------事务 1.什么是事务 在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update.delete.insert) 2.事务ACID特性 Atomic(原子性)所有语句作为一个单元全部成功执行或全部取消. Consistent(一致性)如果数据库在事务开始时处于一致状态,则在执行该.
事务期间将保留一致状态. Isolated(隔离性)事务之间不相互影响. Durable(持久性)事务成功完成后,所做的所有更改都会准确地记录在
数据库中.所…
转载自:https://www.jb51.net/article/130222.htm 以下内容给大家介绍了MYSQL通过Adjacency List (邻接表)来存储树形结构的过程介绍和解决办法,并把存储后的图例做了分析(可以用来做权限控制). 今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢? 像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的人,就很难驾驭了. 举个栗子:现在有一个要存储一下公司的人员结构,大致层次结构如下: 那么…
InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracel数据库的架构.通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoDB的存在,才使MySQL数据库变得更有魅力.本文将介绍InnoDB存储引擎的体系架构及其不同于其他存储引擎的特性. 2.1.InnoDB 存储引擎概述 该引擎是第一个完整支持ACID事务的MySQL引擎,其特点是行锁设计.支持MVCC.支持外键.提供一致性非锁定读,同时被设计用来最有效的利用以及使用内存和CPU. 2…
mysql建数据库或者建表的时候会遇到选择编码的问题,以前我们都是习惯性的选择utf8,但是在mysql在5.5.3版本后加了utf8mb4的编码,utf8mb4可以存4个字节Unicode,mb4就是most bytes 4的意思.包括Emoji 表情和很多不常用的汉字都可以存储,还可以存储任意新增的Unicode字符,扩展性好啊. 而utf8 编码最大字符长度是 3 字节,如果遇到4个字节的款字符就出幺蛾子了. 而且,utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他…
转载自:https://www.cnblogs.com/ryanzheng/p/8334915.html 提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节: 2.数据项:是否有大字段,那些字段的值是否经常被更新: 3.数据查询SQL条件:哪些数据项的列名称经常出现在WHERE.GROUP BY.ORDER BY子句中等: 4.数据…
问题:MySQL中存储索引用到的数据结构是B+树,B+树的查询时间跟树的高度有关,是log(n),如果用hash存储,那么查询时间是O(1).既然hash比B+树更快,为什么mysql用B+树来存储索引呢? 答:一.从内存角度上说,数据库中的索引一般时在磁盘上,数据量大的情况可能无法一次性装入内存,B+树的设计可以允许数据分批加载. 二.从业务场景上说,如果只选择一个数据那确实是hash更快,但是数据库中经常会选中多条这时候由于B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了.…
原文:https://www.jb51.net/article/29962.htm 当前很多应用都适用字符串char(15)来存储IP地址(占用16个字节),利用inet_aton()和inet_ntoa()函数,来存储IP地址效率很高,适用unsigned int 就可以满足需求,不需要使用bigint,只需要4个字节,节省存储空间,同时效率也高很多 mysql> create table jackbillow (ip int unsigned, name char(1)); Query OK…
如题,mysql数据库的中文显示乱码: 先看下原来数据库里的字符编码: mysql> show variables like '%character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | l…
1.背景 在完成一个分表项目后,发现分表的数据迁移后,新库所需的存储容量远大于原本两张表的大小.在做了一番查询了解后,完成了优化. 回过头来,需要进一步了解下为什么会出现这样的情况. 与标题的问题的类似问题还有,为什么表数据内容删除了而表大小没有变化.其本质都是一样的. 要回答这些问题,我们需要从mysql的索引模型谈起. 2.InnoDB 的索引模型 由于 InnoDB 存储引擎在 MySQL 数据库中使用最为广泛,所以接下来就以 InnoDB 为例,分析其中的索引模型. 在 InnoDB 中…