MySQL-重点

目录

​编辑

数据类型

约束

SQL分类--语法整理(DDL | DML | DQL | DCL | TCL)

连表查询的方式

关系类型和三范式、反三范式

事务四大特性和四种隔离级别

锁的种类

死锁、如何防止死锁

索引

索引有哪些优缺点?

索引的类型

 创建和删除索引的语法

索引的数据结构

MySQL是怎么设计索引的

聊索引


 

 

数据类型

float和double的区别

float是4个字节单精度的,double是8字节双精度的,精度更高,但都不是绝对的

char和varchar的区别

char:(0~255)以空间换时间           char(32) “张飞”     占32字符,定长字符串

varchar:(0~65535)以时间换空间      varchar(32)“张飞”  占2字符,变长字符串,按实际存储的来分配实际需要的空间,性能没有char好但更节约空间(不要超过5000)

 括号里存储的是什么? MySQL5.0之前是字节,之后改为了字符,假设字符集是                            UTF-8,一个中文占3个字节,char(32)只能存10个中文字符

用什么类型存储金额?

数据库中严禁用float和double来存金额

1.用定点数类型decimal

2.用长整型存储到金额的最小单位

超长文本怎么存储?(超过5000)

严禁使用varchar存储超长文本,应该改用Blob类型或者Text类型来存储,并且应该把超长文本的字段从当前表中拆分出去,独立用一张表去存储,然后和主表设置主外键关联,防止影响主表查询效率。

二进制文件(图片,音频,视频)怎么存储?

Binary类型可以存二进制数据,但是性能很差。

应该把二进制数据存储在文件里,然后在数据库里记录文件的路径

MySQL的整型支持无符号,使用关键字UNSIGNED

        age tinyint                        --age字段取值范围是-128到127

        age tinyint unsigned        --age字段取值范围是0~255

约束

SQL分类--语法整理(DDL | DML | DQL | DCL | TCL)

连表查询的方式

关系类型和三范式、反三范式

数据库表关系:一对一、一对多(多对一)、多对多

三范式 - 以时间换空间(增加关系来减少冗余数据)

反(打破)三范式 - 以空间换时间 (允许适量的冗余数据,减少关系)

事务四大特性和四种隔离级别

锁的种类

死锁、如何防止死锁

索引

数据离散度越低越适合作索引(10%-15%)

索引有哪些优缺点?

优点:

索引可以大大提升查询的速度

缺点:

从时间上:在增删改的时候,为了保证索引的有序性,需要动态维护索引,牺牲了增删改的速度
从空间是:创建索引需要占用磁盘空间

索引的类型

4大类

主键索引:关键字        primary key        (聚簇索引)

唯一索引:关键字        unique

普通索引:(非唯一) 关键字        index

全文索引:(关键字)        fulltext

 

 聚簇索引 = 主键索引 = 一级索引

非聚簇索引 = (唯一索引,普通索引) = 二级索引

 创建和删除索引的语法

(聚簇索引=主键索引是表自带的,我们自己创建的都是非聚簇索引)

(如果表没有主键,会选择隐藏列rowid来创建聚簇索引)

创建:

1.在create table建表的时候添加索引

2.在create table建表成功以后,使用alter语句添加索引

        ALTER TABLE  表名  ADD INDEX  索引名  (字段名);

3.在create table建表成功以后,使用create index语句添加索引

        CREATE INDEX 索引名 ON 表名 (字段名);

删除:

1.使用alter语句删除索引

    alter table 表名 drop KEY 索引名

2.使用drop语句删除索引

             drop index 索引名  on  表名

索引的数据结构

MySQL的索引支持两种数据结构

1.B+Tree        B+树结构索引 (默认使用)

2.Hash           哈希结构索引

数据结构的演进

二叉树:

问题:无法自平衡

平衡二叉树 - AVL树

左旋算法:当右边的叶子节点的深度-左边叶子节点的深度 > 1的时候,触发左旋

右旋算法:当左边的叶子节点的深度-右边叶子节点的深度 > 1的时候,触发右旋

目的:维持树的平衡

多路平衡二叉树 - B树

树的度数(Degree):每个节点中可以存储的元素的个数

单路数:度数=1

多路数:路数=n,n>1

同等规模的数据,单路树是高瘦树,多路树是矮胖树

多路树比单路树的优势在于      更少次数的磁盘IO就可以找到数据

MySQL是怎么设计索引的

树的每一个节点是一个磁盘块,MySQL将表的ibd文件拆分为很多个磁盘块

每个磁盘块的大小统一是16KB,每次磁盘IO都是读取一个磁盘块的数据

一个磁盘块的数据也称为一页数据

B-树升级为B+树

 

聊索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值