×

数据库索引面试题 数据库 数据库面试题

数据库索引面试题(数据库面试题1)

admin admin 发表于2022-09-05 11:54:16 浏览123 评论0

抢沙发发表评论

本文目录

数据库面试题1


select a.产品名,
isnull(b1.产品数量,0) as 仓库id_1,
isnull(b2.产品数量,0) as 仓库id_2,
isnull(b3.产品数量,0) as 仓库id_3,
isnull(b4.产品数量,0) as 仓库id_4
from
(select distinct 产品名 from tablename) a
left join tablename b1 on b1.产品名=a.产品名 and b1.仓库id=1
left join tablename b2 on b2.产品名=a.产品名 and b2.仓库id=2
left join tablename b3 on b3.产品名=a.产品名 and b3.仓库id=3
left join tablename b4 on b4.产品名=a.产品名 and b4.仓库id=4

一道关于数据库索引的面试题


什么数据库? nal 是什么函数?
1,不等于基本不会用索引 但是不确定当0基数比较大 ,而结果集基数比较小的情况下 有没有可能走索引
2,等于的话如果有索引 ,而且结果集比较小的话应该会用 ,结果集大道一定程度的话 不会用
3.like的话不知道NAL是个什么东西 , 如果是NVL的话 like后面如果被替换成了% ,就不会用索引 如果name有值 有可能用索引 同样和结果集大小会有关系
4.如果语法通的话 应该是可以 , 没这么写过, 同样考虑结果集
5 同样不理解NAL
6 看结果集 结果集小有可能用

以上答案假设数据库是oracle ,但是也不全面 仅供参考

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


1、什么是数据库事务

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

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

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

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

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

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

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

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

4、聚集索引

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

5、主键与外键

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

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


面试常问的数据库问题及答案


目前在职场中很难找到非常合格的数据库开发人员。有人说:“SQL开发是一门语言,它很容易学,但是很难掌握。”
在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当你问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。
你能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗?
你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。
NULL是什么意思?
NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。
NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。
 
什么是索引?SQL Server 2000里有什么类型的索引?
任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。
什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
什么是触发器?SQL Server 2000有什么不同类型的触发器?
让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的

触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OF和AFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation Language,DML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。
AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。
您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里?
这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。
另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。
对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?
你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。
你可以用什么来确保表格里的字段只接受特定范围里的值?
这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。
《b?返回参数和output参数之间的区别是什么?》如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。
返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。
OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。
什么是相关子查询?如何使用这些查询?
经验更加丰富的开发人员将能够准确地描述这种类型的查询。
相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。《/b?返回参数和output参数之间的区别是什么?》
-数据库

数据库面试题!!!!


你可以把字段值先转化一下,在输入数据库

$a为原始值

$b = sprintf(’%08s’,$a);

把$b录入数据库

数据库SQL查询语句面试题


5.1
select a.username,b.deptname from users a,dept b where a.dept_id=b.id;
5.2
update users set dept_id=’9’ where dept_id=’2’;
5.3
select a.deptname,b.count_id from dept a,(select dept_id,count(id) as count_id from users group by dept_id having count(id)》1) b where a.id=b.dept_id;
5.4
select a.deptname,b.count_man,c.count_woman from dept a,(select dept_id,count(sex) as count_man from users where sex=’男’ group by dept_id) b,(select dept_id,count(sex) as count_woman from users where sex=’女’ group by dept_id) c where a.id=b.dept_id and a.id=c.dept_id;
5.5
添加历史记录表
create table history(
id number(8), -- 记录编号
dept_id varchar2(5), -- 部门ID
user_id varchar2(5), -- 用户ID
change_date date -- 变动日期
);
-数据库索引面试题

ORACLE数据库面试题


1.
update t
set logdate=to_date(’2003-01-01’,’yyyy-mm-dd’)
where logdate=to_date(’2001-02-11’,’yyyy-mm-dd’);
2.
select *
from t
where name in (select name from t group by name having coung(*)》1)
order by name;--没说清楚,到底是升序还是降序
3.
select ID,NAME,ADDRESS,PHONE,LOGDATE
from
(
select t.*,row_number() over(partition by name order by name) rn
from t
)
where rn = 1;
4.
update t
set (address,phone)=
(select address,phone from e where e.name=t.name);
5.
select *
from t
where rownum 《=5
minus
select *
from t
where rownum 《=2;
也没什么特别的地方,有些题目用oracle特有的函数去做会比较简单,像在第三题中用到的oracle的分析函数,以及在第一题中用到的oracle的to_char()函数。
这几个题目主要是看你能不能使用oracle的函数去处理
-数据库

面试题 数据库中主键和索引的区别以及使用场景


关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:
惟一地标识一行。
作为一个可以被外键有效引用的对象。
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。
1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。
所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。
主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
2. 一个表中可以有多个唯一性索引,但只能有一个主键。
3. 主键列不允许空值,而唯一性索引列允许空值。
4. 索引可以提高查询的速度。
其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度。
-数据库索引面试题

索引原理面试


索引原理是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能;索引数据节点中有着实际文件的位置,因为索引是根据特定的规则和算法构建的,在查找的时候遵循索引的规则可以快速查找到对应数据的节点,从而达到快速查找数据的效果。
总结来所有通过某规则数据结构和实际目标关联,根据特定规则算法快速寻址的功能都可以称之为索引。
在查找的时候遵循索引的规则可以快速查找到对应数据的节点,从而达到快速查找数据的效果;其实宏观来说索引其实是一种概念而不是具体的某项技术,只是我们在某个技术中运用得比较广泛和鲜明,比如说数据库。
其实在生活中索引的使用无处不在,比如说:书本里的目录;读书时的座位号,考试编号都有类似索引的功能。
索引结构上主要分为聚簇索引和非聚簇索引,聚簇索引是指索引的结构和排列规则是和实际数据的存储结构和排列规则是一样的。非聚簇索引则可能是通过其他算法规则构成的一种索引结构,索引的结构和实际数据存储的结构是不同的。
使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界。很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止。
事物都是有两面的, 索引能让数据库查询数据的速度上升, 而使写入数据的速度下降,原因很简单的, 因为平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销,也就是为什么索引会给查询以外的操作带来副作用的原因。
-数据库