一、存储引擎
1.1 什么是存储引擎
MySQL中的数据通过不同的技术存储再文件或者内存中,每种技术有不同的存储机制,索引技巧,锁定水平,并且提供不同的能力,而实现这些技术的我们就称之为存储引擎
1.2 都有哪些存储引擎
InnoDB 最常用 支持事务,行级锁定
MyISAM 不支持事务,表记锁定
MEMORY 所有的数据都保存再内存中
1.3 Mysql的工作流程
第一层:连接处理,授权认证,安全
第二层:包含大多数核心功能,如查询解析、分析、优化、缓存以及所有的内置函数等,所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等
第三层:存储引擎,负载数据的存储和提取,各个存储引擎之间没有通信
第四层:文件系统,数据,日志等都会以文件的形式存储再硬盘上
二、事务
ACID
原子
三、索引和键
3.1、主键
特点
一个表只能有一个主键
主键列非空且唯一
四、数据类型
4.1 数字类型
4.11、tinyint
4.12、int
4.13、bigint
4.14、FLOAT
4.15、DOUBLE
4.16、decimal
精确的浮点数
decimal(num1,num2) 是指总共10位,其中5位数小数点以后的位置,即小数点之前为5位,小数点后面位5位
4.2、字符串类型
4.2.1 char
固定长度,如果数据没有填满,则使用其他填充符号填充
速度快
4.2.2 varchar
不定长,数据多少就存多少
速度比char慢
4.2.3 text
存储大小比较大的字符串
如果存储文件或者图片时,将文件和图片放到服务器磁盘上,DB里面存储文件和图片的路径
4.3 时间类型
最常用的是datetime类型,有年月日,时分秒记录
4.4 enum
4.5 set
自增列
如果一列为自增列,有10行数据,删掉了后5行,再次插入数据时,自增列时从11开始的
如果我们自定义自增的开始值可以通过 alter table user_info auto_increment = 10; 设置自增开始值
# 创建一个user_info表,uid自增CREATE TABLEuser_info(
uidINT AUTO_INCREMENT PRIMARY KEY,
unameVARCHAR(20)
)ENGINE= INNODB DEFAULT CHARSET =utf8;
# 表内插入3条数据INSERT INTO user_info(uname) VALUES('老赵');INSERT INTO user_info(uname) VALUES('老李');INSERT INTO user_info(uname) VALUES('老王');SELECT * FROMuser_info;
# 删除第二条和第三条数据DELETE FROM user_info WHERE uid = 2 OR uid = 3;
# 再次插入一条数据INSERT INTO user_info(uname) VALUES('老李');
# 再次查看uid为4SELECT * FROM user_info;
之所以这样是因为这个表里uid是auto_increatment,每次新增数据,该值会随着发生变化,当有新增数据时,会将该值作为下一个uid的值插入