MySQL基础篇

MySQL是什么?

MySQL是一个传统的关系型数据库(RDBM数据库),广泛应用于OLTP场景。

OLTP(联机处理事务):是传统的关系型数据库的主要应用,用于基本的、日常的事务处理,例如银行的交易记录。适用于日常处理

OLAP(联机分析处理):是数据仓系统主要应用,用于复杂的分析操作,侧重决策支持,并提供简单明了的查询结果,例如复杂的动态报表系统。适用于数据分析

 数据库三大范式分别是什么?

第一范式(1NF):字段不可分。规范化。强调的是列的原子性,即数据库的每一列都是不可分割的原子数据项;目的是为了确保表的每一列都是单一值,消除重复的列从而保证数据的原子性。

例子:假如地址作为一个字段,实际上可以拆分成省、市、区等,所以就不符合第一范式。

第二范式(2NF):有主键,非主键字段依赖主键。消除部分依赖。要求在满足第一范式的基础上,要求所有的非主键依赖必须完全依赖于整个主键。目的是避免数据冗余和更新异常。

例子:【员工ID、员工姓名、部门ID、部门名】员工姓名依赖员工ID,部门名依赖部门ID。违反

           【员工ID、员工姓名、部门ID】【部门ID、部门名】符合

 第三范式(3NF):非主键字段不能相互依赖。消除传递依赖。在满足第二范式基础上,任何非主键字段必须直接依赖于主键,而不能通过其他非主键依赖间接依赖于主键。

例子:【员工ID、员工姓名、部门ID、部门名、经理名】员工ID为主键,此时经理名依赖于部门ID,部门ID依赖于员工ID,说明有依赖传递。违反了第三范式。

注意:三大范式在实际应用中,只是一个参考,某些场景可以使反范式的。

SQL语句的分类有哪些?(DML、DDL、DCL、TCL)

DML(Date Manipulation Language):数据库操作语句,增删改(insert、delete、update)

DDL(Data Definition Language):数据库定义语句,create、drop、alter、truncate

DCL(Data Control Language):数据库控制语句,grant、invoke

TCL(王牌电视机):事务控制语句,rollback、commit、savepoint

varchar和char的区别?

varchar是可变长度类型,char是固定长度类型

比如char(128)和varchar(128),前者无论字符串长短,在磁盘上,都会占据固定的128字符大小。后者是可变长度,不过它最大也不能超过128。

varchar(1000)一定比varchar(100)好?

虽然varchar是变长,在相同长度下,磁盘空间占用一样,将值设置更大一些,弹性空间也更大。但也不是完全没有代价的,在内存加载的时候,每次都是按最大空间来分配的。显然,在排序场景,或者一些临时表聚合场景,更大空间会产生明显的不利影响。

varchar中的长度不光影响磁盘空间,还会影响在使用时的内存空间,并不是越长越好。

varchar是变长,char是定长,那能用varchar完全代替char么

不能。

首先,varchar会额外用一个字节存储长度信息,而char则节约了一个字节;

其次,char的存储空间都是一次性分配的,存储是固定连续的,而varchar的存储的长度是可变的,当varchar更改前后数据长度不一致时,就不可避免的会出现碎片的问题。针对此,需要进行碎片消除作业,也是额外的成本。

一般来说,长度固定的字段,还是用char比较合适,比如Hash、身份证号码,就很适合用char。

varchar(11)和int(11)中的11,有什么区别

varcahr中代表能存11个字符,int中只是代表显示宽度,对大多数应用没有意义,只是规定一些工具用来显示字符的个数,不表示整数类型的存储大小或范围,比如int(1)和int(20)存储和计算其实是一样的。int类型占据的就是4个字节的固定大小。

delete和truncate的区别

delete是删除行删除表数据,可以按条件查询,事务能回滚;

truncate是清除表数据整表删除,不能回滚,不能按条件查询。

1.truncate之后,会释放空间;delete之后,不会释放空间,因为delete只是在行上标记删除,后续可以复用;

2.delete因为是DML,会产生redo log;truncate是DDL则不会;

3.truncate效率更高;

4.truncate之后,id从头开始;delete不会。

MySQL有哪些存储引擎

MySQL8.4之后提供了10种表引擎,但是主要的就是Innodb引擎,MyIASM引擎,MEMORY引擎。

Innodb引擎,它提供了对数据库ACID事务的支持,并且还提供了行级锁和外键的约束。Innodb的设计目标就是处理大数据容量的数据库系统;

MyIASM引擎,它是原本Mysql的默认引擎,不提供事务的支持,也不支持行级锁和外键;

MEMORY引擎,它的所有数据都在内存中,数据的处理速度快,但是安全性不高,很少使用。

MySQL事务的四大特性

ACID是什么

原子性,指的是一个事务只有执行成功和失败回滚两种状态,没有中间态;

一致性是说数据状态一定是一致的;

隔离性是说事务之间互不影响;

持久性是指事务执行完成后,对数据所做的操作持久的保存在数据库中。

主键和外键

主键是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。

外键是说某张表b的主键,在另一张表a中被使用,那么a中该字段可以使用的范围,取决于b。外键约束主要用来维护两个表之间数据的一致性。

一张表一定有主键吗

一定有。如果主动设置,则采用设置的。否则会自动生成一个默认的行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值