数据库重点复习

本文详细探讨了MySQL中的数据类型,包括float与double的区别、char与varchar的特性,以及如何存储金额和长文本。还介绍了数据库索引的重要性和不同类型的索引,强调了索引优化对查询速度的影响。此外,文章还涵盖了存储引擎、事务处理、关系范式及死锁预防等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySql-重点

数据类型

问题:

1.float和double的区别

float是单精度,double是双精度,double的精确度比float要高,但是float和double都不是绝对精确

2.char和varchar的区别

插入支持的长度是0~255,varchar支持的长度是0~65535,char是定长字符串,varchar是变长的字符串,char是空间换时间的字符串,varchar是时间换空间的字符串,char不会动态的计算时间,varchar会动态的计算时间,从性能上来讲,varchar的性能没有char性能好,但是varchar更节约时间

3.char(32)和varchar(32)括号里面的长度是字节还是字符

MySQL5.0版本之前是字节,假设字符集是UTF-8,一个中文3个字节,那么char(32)只能存储10个中文字符,之后改为了字符

4.用什么类型存储金额

数据库里严禁用float和double存储金额,有两个解决方法

        1.使用定点数类型decimal

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

5.超长文本(博客,文章)怎么存储

严禁使用varchar存储长文本,应该改为Blob类型或者text类型,并且应该把超长文本的字段从当前表拆分出去独立用一张表存储,设置与主表做主外键关联,防止因为出现超长的文本影响存储的效率,超过5000我们把它看做超长文本。

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

MySQL可以存储二进制文件,用Binary类型,但是存储效率很差。正确存储方法:二进制数据存储到文件内直接存储在磁盘中,然后在数据库中创建一个字段,来记录文件的路径。

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

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

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

约束

1.非空约束 NOT NULL

2.检查约束 CHECK(MySQL不支持)

3.唯一约束 UNIQUE

4.主键约束PRIMARY KEY

5.外键约束 FOREIGN KEY

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

数据定义语言DDL(Data Ddefinition Language)

数据操纵语言DML(Data Manipulation Language)

数据查询语言DQL(Data Query Language)

数据控制功能DCL(Data Control Language)

事务控制功能TCL(Transaction Control Language)

连表查询的方式

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

数据库表关系:一对一,一对多,多对多

三范式 - 以时间换空间(减少冗余数据)

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

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

锁的种类

死锁、如何防止死锁

索引

 

索引的优缺点

时间

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

        牺牲了增删改的速率,在增删改长度时候,为了保证索引的有序性,需要动态维护索引

空间

        创建索引需要占用磁盘空间

索引的分类

主键索引:关键字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 INDEX 索引名;

        2.使用drop语句删除索引

        DROP INDEX 索引名 ON 表名;

索引的数据结构

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

B+TREE        B+树结构的索引

HASH        哈希结构的索引

数据结构的演进

二叉树

平衡二叉树-AVL树

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

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

目的:维持树的平衡

多路平衡二叉树-B树

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

单路树:度数=1

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

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

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

MySQL是怎么设计索引的

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

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

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

B-树升级为B+树

MySql-了解

存储引擎的区别

        InnoDB

        MyIsam

        Memory

关系型数据库与NoSQL(非关系型)数据库的区别

主流的关系型数据库:MySQL Oracle

主流的NoSQL数据库:Redis

MySQL和Redis的关系不是谁能替代谁,而是在数据量非常大,数据库并发操作非常频繁的情况下,可以通过Redis来搭建缓存服务器分担MySQL的压力

视图、存储过程、存储函数、触发器

SQL语句优化、数据库优化的思路

数据库的冷热备份

冷备份指的是停机(关闭数据库服务)备份-此时服务不可用

热备份指的是不停机备份-此时服务可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值