数据库常见面试题

本文介绍了如何在数据库表中找出同名的学生记录,并详细解释了数据库事务的四种隔离级别及其解决的问题,包括脏读、不可重复读和幻读。此外,还对比了内连接与外连接的不同之处。

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

1

一张数据库表,存储的是班级学生的名字,如何检索出同名的人
select * from class in (select name from class group by name having count(*)>1)

2 数据库四种隔离级别

事物并发会导致三种问题:
1. 脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
2. 不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
3. 幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
小结:脏读是因为回滚,不可重复读是因为更新,幻读是因为插入。
这里写图片描述
总结:读未提交会引起脏读,所以用读已提交来解决。可重复读,实际上是锁住对应行的数据,这样就可以解决不可重复读问题。串行化实际上是锁住整个表,以解决幻读。

2 外连接vs内连接

  1. 内连接
    select * from tbl_dept a inner join tbl_emp b on a.id=b.deptId;
    这里写图片描述
  2. 外连接
    外连接有左连接,右连接,全连接
    左连接如下:
    select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值