Mysql学习笔记(一)
技术的王国太过迷人,我刚从事IT就被各种技术所引诱迷惑,什么都想学。我还算言而有信的那一类人,还好有一丁点毅力,于是各种东西都沾染了一点。但是这种遍地开花的情况实在和我的智商不匹配。我没有那么多的精力去学那么多的东西。慢慢的要学会暂时放弃一些技术,先深化学习自己工作中要用到的东西。比如mysql等。对于自己特别喜欢的东西,比如linux,因为太过高深和复杂。我又不想放弃,那么就每天分给linux一个小时的时间,熟悉下命令,徐徐渐进。等我赖以生存的各种技能比较完善后,我想可以抽出大量的时间去研究linux了。
我是一边看书一边敲栗子的,书名是《MySQL核心技术与最佳实践》。一边学习,看到有用的东西就随手记下来,因此笔记一定会显得有些凌乱。有些知识点以前我就已经掌握了,可能我就不会往上面写了。这仅仅是一篇自我学习的笔记而已,所以你看到这里就可以止步了,我不想浪费你的学习时间。
InnoDB引擎与MyISAM引擎
mysql是关系型数据库。其中的存储引擎可以show engines来查看。我的版本是5.6.26的,查看版本用select version() 来查看。5.6.26的mysql有9种存储引擎。其中最常见最老生常谈的也就是MyISAM 与InnoDB。如果业务上是非事物(transcation)的那么这两种存储引擎都差不多,在性能上没什么差别。如果业务中需要大多数的select查询,那么可以用MyISAM存储引擎。如果是需要事物,则需要用回InnoDB存储。
MySQL的备份
备份的时候为了避免数据不一致的情况,再数据库备份期间,不允许对数据库进行写操作。
可以用 flush tables with read lock;
现将内存中的表数据扫描恢复到表里面。然后锁定表。同事给予读权限。也就是说在数据库备份的时候,还是有读权限的。
等数据库的备份操作完成之后,然后对数据库解锁。tables unlock;
MySQL数据类型
书本上这个数据类型结构图画的挺好的,到网上搜了一下,都花的不好看。于是还是自己画一个吧,用不了多长时间。


麻蛋,我的画图工具坏了,我就总结个知识,何苦呢。
下面还是文字吧,文字来的快,省力。
小数类型分为精确小数类型和浮点小数类型。
小数类型包括decimal精确类型。
浮点小数,包括单精度和双精度。(这个我也不知道是啥意思,有兴趣的百度之吧,比较常用的是decimal)。'
decimal(length, precision) 。lengh表示这个数总共有多长,precision表示小数点后有多长。
MySQL的字符串类型
MySQL主要支持六种字符串类型,char , varchar, tinyintm, text, mediumtext, longtext.
在字符串的类型上面我以前认识不清。犯过许多错误。看过书,然后实验后,就明白了许多。
以下内容直接引用《MySQL 核心技术与最佳实践》第三章节。
char(n) 是定长字符串类型, 表示占用n个字符(注意不是字节)的存储空间,n的最大值为255.例如,对于中文简体字符集gbk编码来说,char(255)表示可以存储255个汉字,而每个汉字占用两个字节的存储空间。对于一个utf8字符集的字符串而言,char(255)表示可以存储255个汉字,而每个汉字占用3个字节的存储空间。
varchar(n)为变长字符串类型,这就意味着此类字符串占用的存储空间就是字符串自身占用的存储空间,与n无关。这与char(n)不同,这与char(n)不同。例如对于中文简体字符集gbk的字符串而言,varchar(255)表示可以存储255个汉字。而每个汉字占用两个字节的存储空间。假若这个字符串没有那么多的汉字,例如仅仅包括一个“中”字,那么varchar(255)仅仅占用一个字符(2个字节)的存储空间,如果不考虑其他开销。而char(255) 必须占用255个字符长度的存储空间,哪怕里面只存储一个汉字。
各种字符类型占用的存储空间:

MySQL的日期类型
MySQL主要支持5中日期类型。date, time,year,datetime,timestamp。
date类型。格式支持年月日。YYYY—MM—DD;
time类型。时分秒。 HH:ii:ss。
datetime 是date与time的结合体。也就是年月日。时分秒了。
timestamp 和datetime差不多。
可是学习上不能讲究差不多。我们还是来看下timestamp与datetime的区别吧。
表示的取值范围不同,datetime的取值范围远远大于timestamp的取值范围。timestamp到2037年就玩完了。
如果timestamp不赋值,那么该字段值的值实际上是mysql服务器当前的日期和时间。
对同一个timestamp类型的日期或者时间。不同的失去显示的结果不同。使用MySQL命令show varialbes like "time_zone" 可以会显示如下的信息。

这个SYSTEM就表示用的是系统的时间。
当对包含timestamp数据的记录进行修改是,timestamp数据将自动更新为mysql服务器当前的日期和时间。
MySQL二进制类型
我应该不会在MySQL数据库存二进制的数据类型,至少目前不会涉及。只了解一下mysql可以存二进制数据,我想就够了。以后有需要再回来研究。
一点感悟:
(1)在符合应用要求(取值范围 精度)的情况下,尽量使用短的的数据类型。
(2) 数据类型越简单越好。
(3)尽量采用精确的小数类型。
(4)尽量用内置的日期和时间数据类型,而不是用字符串来存储日期和时间。
(5) 尽量避免null字段,建议将字段指定为not null 约束。这是由于,在mysql中含有空值的列很难进行查询优化,null值会是索引的统计信息以及比较优化运算变得更加复杂。推荐使用0,一个特殊的值或者一个空字符串代替null值。
Mysql学习笔记(一)的更多相关文章
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-事务相关话题
事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
- MySQL学习笔记-数据库文件
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
- MySQL学习笔记-数据库后台线程
数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...
随机推荐
- 使用Jekyll在Github上搭建博客
最近在玩github,突然发现很多说明网站或者一些介绍页面全部在一个域名是*****.github.io上. 好奇!!!真的好奇!!!怎么弄的?我也要一个~~~ 于是去网站上查询了一下,找到了http ...
- GitHub 上一份很受欢迎的前端代码优化指南-强烈推荐收藏
看到一份很受欢迎的前端代码指南,根据自己的理解进行了翻译,但能力有限,对一些JS代码理解不了,如有错误,望斧正. HTML 语义化标签 HTML5 提供了很多语义化元素,更好地帮助描述内容.希望你能从 ...
- Web Audio API 实现音频可视化
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 一转眼就已经有三个月没写博客了,毕业季事情确实多,现在也终于完全毕业了,博客还是不能落下.偶尔还是要写一下. 玩HTML5的Audio A ...
- [BZOJ1924][Sdoi2010]所托门王的宝藏(缩点+DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1924 分析: 首先把传送门作为点建图 这个数据很弱的,没有那种卡你的. 把每行的情况存 ...
- 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
yu Code 15 Comments 机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accu ...
- java swing模仿随机频谱
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Grap ...
- linux基础-附件1 linux系统启动流程
附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...
- C#利用iComparable接口实现List排序
List<T>类可以使用Sort()方法对元素排序. Sort()方法定义了几个重载方法,分别是 public void List<T>.Sort(),不带有任何参数的Sor ...
- Qt学习中遇到的问题
问题: 一个Qt小项目,编译成功并成功运行,但应用程序输出中出现如下异常:FTH: (9892): *** Fault tolerant heap shim applied to current pr ...
- 在Winform中播放视频等【DotNet,C#】
在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件 ...