数据库面试题--基础篇

本文详细介绍了SQL数据库的基本概念,包括关系型和非关系型的区别、SQL语句的关键操作(如drop、delete、truncate)、数据库分页、子查询、存储过程、锁机制、视图和游标、ACID特性、隔离级别、索引类型(如B+树、哈希索引)以及InnoDB和MyISAM存储引擎的特点。此外,还讨论了MySQL的MVCC和回滚机制的重要性。

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

--------------------------------SQL------------------------------------

一、关系型数据库和非关系型数据库

1、关系型数据库(SQL)指用关系模型来组织数据的数据库。常见的关系型数据库有Oracle, MySQL,Microsoft SQL Server, PostgreSQL,SQLite,IBM DB2...

2、非关系型数据库(NoSQL),不仅仅是SQL,数据以对象的形式存储在系统中,对象之间的关系通过每个对象自身的属性来决定。通常用于存储非结构化数据。常见的NoSQL有:redis、HBase等。

二、drop、delete、truncate的区别?

drop用来删除表或数据库并将表所占用的空间全部释放。

delete只删除记录。

truncate会清除表数据并重置id从1开始。

三、数据库的分页是怎么做的?

参考资料:数据库的分页是怎么做的?-优快云博客

四、什么是子查询?

指在一个查询语句中使用另一个查询语句的过程。

五、数据库中的存储过程和函数

参考资料:数据库中的存储过程和函数-优快云博客

六、数据库中的锁

1、粒度锁

(1)全局锁:针对整个数据库的锁,全局锁的典型使用场景是,需要确保整个数据库一致性的操作,例如做全库逻辑备份。

# 全局锁,简称FTWRL 
FLUSH TABLES WITH READ LOCK; 
# 解锁命令 
UNLOCK TABLES;

①读锁(共享锁):阻止其他用户更新数据,但允许读取数据。

②写锁(排他锁):阻止其他用户读取和更新数据

(2)表锁:典型应用场景:全表更新或删除

# 给表添加读锁或写锁 
lock tables employee read/write; 
# 解锁 
unlock tables;

(3)行锁:主要由innoDB引擎提供,应用场景:高并发读取操作,单行操作。

七、视图与游标

1、视图:是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图

通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更

容易,相比多表查询。

2、游标:是对查询出来的结果集作为一个单元来有效的处理。游标能够对结果集中的每一条记录

进行定位,并对指向的记录中的数据进行操作的数据结构。一般不使用游标,但是需要逐条处理数

据的时候,游标显得十分重要。

八、where, on 和having有什么区别?

1、where和having的根本区别在于: where在group by和聚合函数之前对数据进行过滤; having在group by和聚合函数之后对数据进行过滤;

2、where和on的区别在于: 内连接中,on和where等价; 外连接,on中的过滤条件在连接操作之前执行,而where在连接操作之后执行。

在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。

九、SQL各子句的执行顺序。

先有表(from、on、join),才能过滤(where),再才能分组(group、having),再才能选择去重(sele

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值