数据库面试常问问题有哪些?

数据库面试常问问题有哪些?,第1张

1、什么是数据库事务

数据库事务是构成单一逻辑工作单元的 *** 作集合。数据库事务可以包括一个或多个数据库 *** 作,但是这些 *** 作构成一个逻辑上的整体。

2、数据库事务的四个特性(ACID)

A:原子性,事务中的所有 *** 作作为一个整体不可分割,要么全部 *** 作要么全部不 *** 作。

C:一致性,事务的执行结果必须使数据库从一个一致性状态转为另一个一致性状态。一致性状态:1.系统状态满足数据库的完整性约束,2.系统的状态反映数据库所描述的现实世界的真实状态。

I:隔离性:并发执行的事务不会相互影响,其对数据库的影响和他们串行执行时一样。

D:持久性:事务一旦提交,对数据库的影响就是持久的。任何事务或系统故障都不会导致数据丢失。

3、什么是数据库连接泄露

数据库连接泄露指的是如果在某次使用或者某段程序中没有正确地关闭Connection、Statement和ResultSet资源,那么每次执行都会留下一些没有关闭的连接,这些连接失去了引用而不能得到重新使用,因此就造成了数据库连接的泄漏。数据库连接的资源是宝贵而且是有限的,如果在某段使用频率很高的代码中出现这种泄漏,那么数据库连接资源将被耗尽,影响系统的正常运转。

4、聚集索引

数据行的物理顺序与列值的顺序相同,如果我们查询id比较靠后的数据,那么这行数据的地址在磁盘中的物理地址也会比较靠后。而且由于物理排列方式与聚集索引的顺序相同,所以也就只能建立一个聚集索引了。

5、主键与外键

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

1.

select 英语.学号

from Score 英语

left join

(

select 学号,课程代码,成绩

from Score where 课程代码='数学课程代码'

) as 数学

on 英语.学号=数学.学号

where 英语.课程代码='英语课程代码' and 英语.成绩>数学.成绩

2

select Student.学号,Student.姓名,AVG(成绩) as 平均成绩

from Score

left join Student on Student.学号 =Score.学号

group by Student.学号,Student.姓名

having AVG(Score.成绩)>30

3

select Student.学号,Student.姓名, ISNULL(选课_成绩.选课数,0) as 选课数,ISNULL(选课_成绩.总成绩,0) as 总成绩

from Student

left join

(

select 学号, COUNT(Score.课程代码) as 选课数,SUM(Score.成绩) as 总成绩

from Score group by 学号

) as 选课_成绩

on Student.学号= 选课_成绩.学号

4

select a.学号,a.姓名 from Student as a

where a.学号 not in(

select distinct(Student.学号) as 学号

from Student

left join Score on Score.课程代码 =

(

select Course.课程代码 from Course

where Course.教师编号 =

(

select Teacher.教师编号 from Teacher

where Teacher.教师姓名='王军'

)

)

)

仅供学习参考


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9898042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存