MySQL数据类型(DATA Type)与数据恢复与备份方法
一、数据类型(DATA Type)概述
MySQL支持多种类型的SQL数据类型:数字类型,日期和时间类型,字符串(字符和字节)类型以及空间类型
数据类型描述使用以下约定:
- M表示整数类型的最大显示宽度。对于浮点和定点类型, M是可以存储的总位数(精度)。对于字符串类型, M是最大长度。允许的最大值M取决于数据类型
- D适用于浮点和定点类型,并指示小数点后面的位数(刻度)。最大可能值为30,但不应大于 M-2。
- 方括号([和])表示类型定义的可选部分
1.1、数字类型
M表示整数类型的最大显示宽度。最大显示宽度为255.显示宽度与类型可包含的值范围无关,对于浮点和定点类型,M是可以存储的总位数。
如果指定ZEROFILL数字列,MySQL会自动将该UNSIGNED 属性添加到列中。
允许该UNSIGNED 属性的数字数据类型也允许SIGNED。但是,默认情况下SIGNED会对这些数据类型进行签名,因此该 属性不起作用。
SERIAL是别名BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE。
SERIAL DEFAULT VALUE在整数列的定义中是别名NOT NULL AUTO_INCREMENT UNIQUE。
- BIT[(M)]
位值类型。M表示每个值的位数,从1到64.如果M省略,则默认值为1 TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个非常小的整数。签署的范围是 -128到127。无符号的范围是0到 255。BOOLEAN
这些类型是同义词 TINYINT(1)。值为零被视为false。非零值被认为是真的:
| 数字类型 | 描述 |
|---|---|
| TINYINT | 一个非常小的整数 |
| SMALLINT | 一个小整数 |
| MEDIUMINT | 一个中等大小的整数 |
| INT | 标准整数 |
| BIGINT | 一个大整数 |
| DECIMAL | 定点数 |
| FLOAT | 单精度浮点数 |
| DOUBLE | 双精度浮点数 |
1.2、MySQL布尔数据类型
MySQL没有内置 BOOLEAN或BOOL数据类型。为了表示布尔值,MySQL使用最小的整数类型TINYINT(1)。换句话说,是 BOOLEAN和BOOL的同义词TINYINT(1).
1.3、MySQL String数据类型
在MySQL中,字符串可以包含从纯文本到二进制数据(如图像或文件)的任何内容。通过使用LIKE运算符, 正则表达式和全文搜索,可以基于模式匹配来比较和搜索字符串
| 字符串类型 | 描述 |
|---|---|
| CHAR | 固定长度的非二进制(字符)字符串 |
| VARCHAR | 可变长度的非二进制字符串 |
| BINARY | 固定长度的二进制字符串 |
| VARBINARY | 可变长度的二进制字符串 |
| TINYBLOB | 一个非常小的BLOB(二进制大对象) |
| BLOB | 一个小BLOB |
| MEDIUMBLOB | 一个中等大小的BLOB |
| LONGBLOB | 一个大BLOB |
| TINYTEXT | 一个非常小的非二进制字符串 |
| TEXT | 一个小的非二进制字符串 |
| MEDIUMTEXT | 中等大小的非二进制字符串 |
| LONGTEXT | 一个很大的非二进制字符串 |
| ENUM | 枚举; 可以为每个列值分配一个枚举成员 |
| SET | 一套; 可以为每个列值分配零个或多个SET成员 |
MySQL日期和时间数据类型
MySQL提供日期和时间类型以及日期和时间的组合。此外,MySQL支持 时间戳数据类型,用于跟踪表中一行的更改。如果您只想存储没有日期和月份的年份,则可以使用YEAR数据类型。日期和时间类型代表的时间值 DATE, TIME, DATETIME, TIMESTAMP,和 YEAR。每个时间类型都有一系列有效值,以及当您指定MySQL无法表示的无效值时可以使用的“ 零 ”值。该TIMESTAMP类型具有特殊的自动更新行为
| 日期和时间类型 | 描述 |
|---|---|
| DATE | CCYY-MM-DD格式的日期值 |
| TIME | hh:mm:ss格式的时间值 |
| DATETIME | CCYY-MM-DD hh:mm:ss格式的日期和时间值 |
| TIMESTAMP | CCYY-MM-DD hh:mm:ss 格式化的时间戳值 |
| YEAR | 年份CCYY或YY 格式 |
MySQL空间数据类型
| 空间数据类型 | 描述 |
|---|---|
| GEOMETRY | 任何类型的空间值 |
| POINT | 一个点(一对XY坐标) |
| LINESTRING | 曲线(一个或多个POINT 值) |
| POLYGON | 一个多边形 |
| GEOMETRYCOLLECTION | 一组GEOMETRY value |
| MULTILINESTRING | 一组LINESTRING value |
| MULTIPOINT | 一组POINT value |
| MULTIPOLYGON | 一组POLYGON Value |
JSON数据类型
JSON自5.7.8版本以来,MySQL支持本机数据类型,允许您更有效地存储和管理JSON文档。本机JSON数据类型提供JSON文档和最佳存储格式的自动验证
二、MySQL备份和恢复
备份数据库非常重要,这样您就可以恢复数据,并在发生问题时重新启动并运行,例如系统崩溃,硬件故障或用户错误地删除数据。在升级MySQL安装之前,备份也是必不可少的保护措施,它们可用于将MySQL安装转移到另一个系统或设置复制从属服务器。
2.1、备份和恢复类型
- 物理与逻辑备份
物理备份由目录的原始副本和存储数据库内容的文件组成。此类备份适用于需要在出现问题时快速恢复的大型重要数据库。
逻辑备份保存表示为逻辑数据库结构(CREATE DATABASE, CREATE TABLE语句)和内容(INSERT语句或分隔文本文件)的信息。此类备份适用于较少量的数据,您可以在其中编辑数据值或表结构,或在不同的计算机体系结构上重新创建数据。 - 在线与离线备份
在MySQL服务器运行时进行联机备份,以便可以从服务器获取数据库信息。服务器停止时会发生脱机备份。这种区别也可以描述为“ 热 ”与 “ 冷 ”备份; 一个“ 温暖 ”的备份是一个在服务器保持运行,但锁定,以防止当你从外部访问数据库文件修改数据。 - 本地与远程备份
本地备份在运行MySQL服务器的同一主机上执行,而远程备份则从其他主机完成。对于某些类型的备份,即使输出是在服务器上本地写入的,也可以从远程主机启动备份。 - 快照备份
某些文件系统实现可以执行“ 快照 ” 。它们在给定时间点提供文件系统的逻辑副本,而不需要整个文件系统的物理副本。(例如,实现可能使用写时复制技术,因此只需要复制快照时间之后修改的部分文件系统。)MySQL本身不提供获取文件系统快照的功能。它可通过Veritas,LVM或ZFS等第三方解决方案获得。 - 完全与增量备份
完整备份包括MySQL服务器在给定时间点管理的所有数据。增量备份包括在给定时间跨度内(从一个时间点到另一个时间点)对数据所做的更改。MySQL有不同的方法来执行完整备份,例如本节前面所述的那些。通过启用服务器的二进制日志(服务器用于记录数据更改),可以实现增量备份 - 完全与时间点恢复
完全恢复可从完整备份中恢复所有数据。这会将服务器实例还原到备份时的状态。如果该状态不够充分,则可以在完全恢复之后恢复自完全备份以来所做的增量备份,以使服务器处于更新状态。
增量恢复是恢复在给定时间跨度内所做的更改。这也称为时间点恢复,因为它使服务器的状态达到给定时间。时间点恢复基于二进制日志,通常在备份文件完全恢复之后,将备份文件还原到备份时的状态。然后,在二进制日志文件中写入的数据更改将作为增量恢复应用于重做数据修改,并使服务器达到所需的时间点。
- 表维护
如果表损坏,数据完整性可能会受到影响。对于 InnoDB表格,这不是典型问题。MyISAM 如果程序检查表并在发现问题时进行修复 - 备份调度,压缩和加密
备份计划对于自动化备份过程很有价值。压缩备份输出可减少空间需求,输出加密可提供更好的安全性,防止未经授权访问备份数据。MySQL本身不提供这些功能。MySQL Enterprise Backup产品可以压缩InnoDB备份,并且可以使用文件系统实用程序实现备份输出的压缩或加密。
2.2、数据库备份方法
- 使用MySQL Enterprise Backup进行热备份
- 使用mysqldump或mysqlhotcopy进行备份
- 通过复制表文件进行备份
- 制作分隔文本文件备份
- 通过启用二进制日志进行增量备份
- 使用复制从站进行备份
- 恢复损坏的表
- 使用文件系统快照进行备份
MySQL数据类型(DATA Type)与数据恢复与备份方法的更多相关文章
- Symfony中Doctrine对应的Mongodb数据类型 data type
1. hash 就是 json对象 2. collection 就是 数组 3. 若要知道如何使用referenceOne, referenceMany, embbedDocument等 主要查看: ...
- MySQL中 Data truncated for column 'xxx'解决方法
DATA truncated FOR COLUMN 'description' AT ROW 1 1.错误再现 表中存在null字段 此时,修改表中某字段为主键 2.解决方法 不允许数据库中出现nul ...
- python——获取数据类型:type()、isinstance()的使用方法:
python——获取数据类型 在python中,可使用type()和isinstance()内置函数获取数据类型 如: (1)type()的使用方法: >>> a = '230' ...
- MySQL数据库(7)_MySQL 数据备份与还原
一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...
- JAVA 1.2(原生数据类型 Primitive Data Type)
1. Java的数据类型分为2类 >> 原生数据类型(primitive data type) >> 引用数据类型(reference data type) 3. 常量和变量 ...
- mysql load data infile的使用 和 SELECT into outfile备份数据库数据
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...
- 数据类型(data type)
基本数据类型(primitive data type):字符型(2个字节),布尔型(一位),byte(1个字节),short(两个字节),int(4个字节),long(8个字节),float(2个字节 ...
- mysql data type <----> java data type (数值)
https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html +----------------------------+---- ...
- mysql学习笔记三 —— 数据恢复与备份
要点: 1.存储引擎2.导入导出3.备份与恢复 查看当前数据库中的所有表use db1:show tables: 1.存储引擎 不同的发动机(引擎)适用的汽车类型不一样. 存储和处理的不同方式.不同的 ...
随机推荐
- c# 异常处理 try --catch
初学 try---catch 语法 try { 可能会出现异常的代码; 异常出现的那行代码下面的代码全不会执行,直接跳到catch中执行 ... ... } //try和catch之间不能有其他的代码 ...
- 项目开发git-短信验证-redis数据库
项目开发git操作 基本流程 """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3.将开发结果提交到本地版本库 - git status查看时没有待处理的事件 4. ...
- ZJNU 2135 - 小智的宝可梦
因为成环 所以可以枚举第1只与第n只喂的次数 然后第1只和第2只的次数就固定了,以此类推,则所有宝可梦喂的次数都固定了 最后处理完检查是否全为0,不是则进行下一次枚举,是则直接输出Yes 如果所有枚举 ...
- gcc -E xx.c
C语言代码在交给编译器之前,会先由预处理器进行一些文本替换方面的操作,例如宏展开.文件包含.删除部分代码等. 在正常的情况下,GCC 不会保留预处理阶段的输出文件,也即.i文件.然而,可以利用-E选项 ...
- 蓝桥杯 传球游戏(dp)
Description 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始 ...
- MACOSX下查看某个端口被哪个程序占用及杀进程方法
sudo lsof -i :9000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 61342 a 313u IPv6 0x11111 ...
- mac 编程环境
新mac (EI Capitan),需要在python中使用xgboost,通过pip安装未成功. 配置pip cat $HOME/Library/Application\ Support/pip/p ...
- Java之代码块
package com.atguigu.java3;/* * 代码块(或初始化块) * * 1. 代码块的作用:用来初始化类.对象 * 2. 代码块如果有修饰的话,只能使用static. * 3. 分 ...
- is,数据类型补充,set,深浅拷贝
十二.基础数据类型补充: 1.join 可以把列表变成字符串. s = ‘abc’ s1 = s.join(‘非常可乐’) print(s1) #非abc常abc可abc乐abc s = " ...
- MFC的cstring判断是否存在中文字符
bool IsChinese(CString Cstr) { int nLen = Cstr.GetLength(); unsigned char ch1, ch2; for (int i = 0; ...