数据库基础三

一、存储引擎

存储引擎标志表的性质不一样,使用的特点不一样

表中存储数据的格式就是存储引擎

表的存储方式:表结构存在一个地方,数据存在另一个地方。

表的零另一种存储方式:表结构存在硬盘了,数据存在内存里,断电消失,但是速度快。

 

查看存储引擎命令

show engines;

创建表的时候指定 engine = '存储引擎'; 

 

InnoDB(默认使用)

内部数据产生了两种表,一张是frame表结构,另一张是data表

mysql5.6 默认的存储引擎

事务:操作一段代码有一定的相关性,开启事务,若失败了就会进行数据回滚,保证数据的安全

处理事务的步骤

① 开启事务

② 更新A的数据

③ 更新B的数据

④ 关闭事务

特点:事务没完成,会回滚;避免了数据不安全

 

行级锁

多个用户不能同时对同一个数据进行修改,可以同时修改同一张表,

当频繁修改数据,就选用InnoDB引擎,只有InnoDB独有

 

表级锁

多个用户不能同时修改同一张表的数据只能查,myisam独有

 

MyISAM

内部数据产生了三张表,一张是frame表,一张是data表,一张是index索引表(有索引机制,查询速度加快)

MyISAM不支持事务,也不支持外键,优势是访问速度快,但是表级锁限制了它在写、修改负载方面的性能,应用于只读的主的数据场景

查询多,修改少的时候使用

 

 

Memory 

内部产生了一张frame表

在内存中存储所有数据,应用于对非关键数据进行快速查找的场景。

数据量小,并对服务器的内存有要求,因为断电消失,只能存一些短小的数据。

用来记录每个任务的登陆状态,非重要的数据可以存放

 

重启后无数据

 

 

blackhole 黑洞

内部产生了一张frame表

不存储数据,往黑洞表插入数据会记录在日志binlog,进行分流数据

 

 

二、Mysql 工作流程

三、表

所有的表头的列都称为字段,其他的每一行内容都称为一条记录

 

四、数据类型

① 数值类型

DECIMAL(能表示整数,但一般用来表示小数,需要精准记录数值的数字,底层以字符串存储) > DOUBLE(小数) > FLOAT(小数) 小数的精确度

常用:INT、FLOAT、DECIMAL

定义int类型时,有约束是没有一样

定义int时,加上unsigned 表示创建有符号的int

 

float、double、decimal 定义时需要两个参数(整体的位数,小数的位数)

 

 float(255,30),double(255,30),decimal(65,30)    三个数据类型的最大范围

 

② 日期时间类型

DATE:年月日   用途:入职时间、离职时间、生日

TIME:时分秒

DATETIME:年月日时分秒,用途:日志系统

TIMESTAMP:年月日时分秒(描述的范围小,1970-2038年),不允许为空,默认值是当前加入数据的时间,每修改数据后会更新为修改时间,描述不了的时间变成0000-00-00 00:00:00

 

now()       mysql的当前时间

 

 值的格式

'2018-9-26 12:20:10'
'2018/9/26 12+20+10'
'20180926122010'
20180926122010

 

③ 字符串类型

 

char 0-255字节

定长字符串,存取速度快,但是浪费磁盘空间

存储方式:用空格补齐位数,查询时会默认给空格去掉

场景:数据的长度变化小,手机号、身份证号、学号;

      频繁存储、对效率的要求高,存储短数据

           

varchar 0-65535 字节变长字符串

变长,节省磁盘空间,但是存取速度相对慢

存储方式:在字符串的前面会加一个长度标识,存储的位数是原来字符串位数+1;查询时原来有空格会保留

场景:数据长度的变化大,name、描述信息

     对效率要求相对小,存储相对长的数据

 

concat() 拼接

 

 

④ ENUM和SET类型 (存储的类型是字符串)

 enum 只允许从值集合中选取单个值,而不能取多个值

用途:单选,英航卡,性别

 

set和enum相似,一个字符串对象,允许几个中任意选择1各或者多个进行组合

set会提供去重功能

用途:多选,兴趣爱好;

原文地址:https://www.cnblogs.com/st-st/p/9724381.html