重点内容
1、数据类型
float和double的区别
float 4个字节、单精度
double 8个字节、双精度
char和varchar的区别
char支持的长度是0-255,是定长字符串,以空间换时间(不会动态数据的数据长度)
varchar支持的长度是0-65535,是可变长度,以时间换空间(会动态计算数据长度)
性能varchar不比char好,但是varchar可以节省空间
MySQL5.0版本之前char(32)和varchar(32)里面的数字是字节,之后改为了字符,假如字符集是utf-8,一个中文3个字节那么char(32)只能存储10个中文字符
用什么类型存储金额
数据库里面严禁用float和double存储金额,两个存储方案
1、使用定点数(decimal(m,d)压缩严格的定点数,m为数据总位数,d是小数位数)
2、使用长整型存储到金额最小单位(时间戳)
超长文本(博客、文章)怎么存储
严禁使用varchar存储超长文本(超过5000),应该改用blob或者text类型存储文本, 并且应该把长文本从当前表中拆分出去,与主表形成关联,防止超长文本影响主表查询效率
二进制文件(图片、音频、视频)怎么存储
MySQL数据库可以存二进制数据(用Binary类型),但是性能非常差,采用什么解决方案,二进制数据存储在文件里面,数据库里面存储的是该二进制文件的存储路径
MySQL的整形支持无符号,使用关键字UNSIGNED
age tinyint --age字段取值范围是-128到127
age tinyint unsigned --age字段的取值范围是0到255
2、约束
非空约束 NOT NULL
检查约束 CHECK(MySQL不支持)
唯一约束 UNIQUE
主键约束 PRIMARY KEY
外键约束 FOREING KEY
3、SQL分类、语法整理(DDL | DML | DQL | DCL)
DQL(Data Query Language):数据查询与语言
select、from、where、group by、order by
DML(Data Manipulation Language):数据操控语言
insert、update、delete
TCL(Transaction Control Language):事务控制功能
commit、rollback
DDL(Data Ddenfinition Language):数据定义语言
creat、drop、alter、show
DCL(Data Control Language):数据控制语言
grant、remove
连表查询的方式
4、关系类型和三范式、反三范式
数据库表关系 一对一、一对多(多对一)、多对多
三范式 - 以时间换空间(增加关系来减少冗余数据)
反(打破)三范式 - 以空间换时间(允许适量的冗余数据,减少关系)
什么是数据库三范式
第一范式:列不可再分(保持原子性)
第二范式:属性完全依赖于主键(每一行的数据只与主键列有关系)
第三范式:属性不依赖于其他非主属性,属性直接依赖于主键
5、事务四大特性和四大隔离级别
特性:
1、原子性
2、一致性
3、隔离性
4、持久性
级别:
1、读未提交
2、读已提交
3、可重复读
4、可串行化
6、锁的种类
1、行级锁:粒度细,开销大
2、表级锁:粒度大,开销小
3、页级锁:粒度和开销介于行级和表级之间
7、死锁、如何防止死锁
产生死锁的条件(产生死锁的原因):
1、互斥条件
锁具有排他性,同一时刻,锁只能被一个线程所持有
2、请求与保持条件
锁在请求其他资源处于阻塞状态的时候,对自己持有的锁保持不释放
3、不剥夺条件
锁在不主动释放资源的时候,其他锁无法剥夺锁的使用权
4、循环等待条件
A线程持有a锁,B线程持有b锁,双方在自己不释放自己锁的条件下请求对方的锁形成了等待僵持阶段
如何解决死锁:
破坏任意一个条件即可
1、破坏互斥条件
使用共享锁,同一时刻,锁可以被多个线程持有
2、破坏请求与保持条件
一次性申请所需要的资源
3、破坏不剥夺条件
自己申请所需要的资源而形成阻塞的时候,主动释放自己持有的锁
4、破坏循环等待条件
顺序执行,逆序输出
索引
了解内容
存储引擎的区别
Myisam
InnoDb
Memory
关系型数据库于NoSQL(非关系型)数据库的区别
主流的关系型数据库:MySQL Oracle
主流的NoSQL数据库:Redis
MySQL和Redis的关系不是谁能代替谁,而是在数据量非常大,数据库并发操作非常频繁的情况下,可以通过Redis来搭建缓存服务器分担MySQL的压力
视图、存储过程、存储函数、触发器
SQL语句优化、数据库优化的思路
数据库的冷热备份
冷备份:停机(关闭数据库)后备份,此时服务不可用
热备份:不停机(不关闭数据库)备份,此时服务为可以