数据库面试题

数据库面试题
数据库面试题

1.写出学生表增删查改的语句(考基础的)

2.有三张表用not in not exists left join 写出获奖图书的作者信息,比较哪一种最优

上面的是笔试题。

3道Linux的题目,一道是自己熟悉的os的性能数据的命令,统计文件中指定字符串个数,linux的几个内核参数

数据库的是大头,考了执行计划的执行顺序和解释,优化SQL

写了一个动态的批量提交的存储过程

实例恢复的大概流程,redo,undo的作用什么的

生产环境压力很大的时候,说说自己会怎么做,类似的问题,记不请了

大概就是这样吧

总结:linux得深入学习学习了,复习基础shell + 看实际程序 + 操作系统命令(尤其跟DB管理有关的)+ 有时间看看内核方面的。以前看的shell,因为仅仅是理论,没有实际运用经验,所以很快忘光光,真让自己写起来,觉得茫然无从下手。

一、Transact-SQL问题:

1 有订单表SO_Table,单号字段RefNo VARCHAR(10),需要实现自动编号,格式为YYYYMMXXXX,其中XXXX为序号,如:2004050001,2004050002 (2004059999)

等,采用Transact-SQL实现新订单编号的思路。

2 有表T1,T2,现有一事务,在向表T1添加数据时,同时也必须向T2也添加数据,如何确何数据的完整性。

3 如何求表中相邻(按聚集索引相邻)的两条记录的某字段的值之差,用Transact-SQL语句或存储过程。

4 如何删除表中的重复数据,用Transact-SQL写出代码。

5 基于MS-SQLSERVER 2000,如何统计数据库中所有用户表的数据,显示格式如下:

表名记录数

sales 23

6 人员情况表(employee)中字段包括,员工号(ID),姓名(name),年龄(age),文化程度(wh):包括四种情况(本科以上,大专,高中,初中以下),现在我要根据年龄字段查询统计出:表中文化程度为本科以上,大专,高中,初中以下,各有多少人,占总人数多少。结果如下:

学历年龄人数百分比

本科以上 20 34 14

大专 20 33 13

高中 20 33 13

初中以下 20 100 40

本科以上 21 50 20

。。。。。。

Transact-SQL查询语句如何写?

7表一(AAA)

商品名称mc 商品总量sl

A 100

B 120

表二(BBB)

商品名称mc 出库数量sl

A 10

A 20

B 10

B 20

B 30

用一条Transact-SQL语句算出商品A,B目前还剩多少?

二、数据库管理问题(DBMS为:MS-SQL Server 2000)(选作一道题)

1使用文件与文件组恢复的方式恢复数据库

2 设计作业进行周期性的备份数据库

3 一个B/S结构ERP系统,出入库单据超过100万条,系统在单据调出、保存过程中速度比较慢,原因可能有哪些?有哪些办法可以提高速度?

三、数据库设计

有一个钢铁产品检验数据库,包括产品的化学实验结果和物理试验结果,质检部门会根据高炉号来对这批产品进行综合判定,最后根据一个关键字段(比如说叫高炉号)将两个表中的内容取出来放到质量证明书中。钢铁产品有多种不同的规格,针对同一个规格的钢材需要的物理性能检验包括力学性能、高倍指标、低倍指标、气体含量四个大项,每个大项里边包含的内容也不一样,力学性能大约有20个小项,高倍有60个小项,低倍有20个小项、气体有8个小项,并且如果某一个大项中有不合格的,必须取双倍的试样重新进行检验,而另外的大项不重做复验。

请给出物理试验结果表的设计思路。

四、项目管理问题

请叙述你经历的你认为是最为成功的或典型的项目的项目运作(管理)体系、业务流程体系和软件技术体系统。

五、请叙述你的职业理想。

本文是SQL Server面试题系列文章的最新篇,本文着重讨论了如何使用CHECK 约束来强制实现触发器的唯一值,在SQL Server有多种方式来强制实现触发器的唯一值,作为一名合格的SQL Server dba 来说,掌握这方面的知识是应该的。关键词:SqlServer面试题数据库面试题

本文地址:https://www.360docs.net/doc/ad3301213.html,/post/2007102001.html

内容正文:

使用CHECK约束来强制执行触发器的唯一值

Q. 我的SQL Server数据表中有一列允许为空(NULL)值。在该列有非空值的时候,我想让该列的值为唯一值。通过编程实现这一目标的最佳做法是什么呢?如果我在该列中设置一个UNIQUE约束,我可以只在一个记录中保有空值。我正在使用触发器来强制执行这个限制,但是你能推荐一种更简单的方法来确保所有非空的值都是唯一的吗?

A. SQL Server没有内置的机制可以禁止非空值产生重复,所以你需要使用一个自定义的CHECK约束来实现这个限制。例如,以下代码就可以实现你所要的那种完整性。

USE tempdb

Create table t1 (c1 int NULL, c2 char(5) NULL)

Create trigger mytrigger on t1 for insert, update as

BEGIN

IF (select max(cnt) from (select count(i.c1)

as cnt from t1, inserted i where t1.c1=i.c1 group

by i.c1) x) > 1

ROLLBACK TRAN

END

在SQL Server 2000中,你还可以使用INSTEAD OF触发器来执行这个限制。同INSTEAD OF触发器有关的更多信息,请参阅以下文章,要查看这些文章,请访问SQL Server Magazine,在InstantDoc(快速文档)框中输入InstantDoc编号,然后点击“Go”。文章包括:

INSTEAD OF触发器的使用窍门;InstantDoc编号 15828

视图中的INSTEAD OF触发器;InstantDoc 编号 15791

INSTEAD OF触发器;InstantDoc 编号 15524

SQL Server Profiler和参数化语句

问:自从升级到SQL Server 2000后,我在SQL事件查看器中遇到了一个问题:我无法捕获带有参数的Transact-SQL语句。我希望获得查询执行过程中参数的实际取值,而并非诸如@p1这样的参数形式。请问如何在不引用跟踪过程中其它行的情况下对参数取值加以置换。

答:您必须获取跟踪过程的其它部分(如存储过程StmtCompleted所返回的结果),并将这些部分收集在一起(语句放在最前面)以捕获完整的查询内容。之所以会出现这样的结果,其原因在于从SQL Server关系型引擎恢复数据的SQL 事件查看器方法。这样的问题在SQL Server 7.0中同样存在。然而,由于当事件产生时,位于引擎内部的参数取值是未知的,因此,我们无法在这一时刻做出修改。

将一个SQL Server系统用作一台PDC

问:我的公司建立了一个灾难恢复站点,并且计划在一台新配备的计算机上安装SQL Server。Microsoft Windows NT管理员希望使用运行SQL Server的计算机作为主域控制器(PDC)。我听说,由于PDC需要完整维护与复制网络帐号数据库所引发的资源密集型任务并且需要执行网络登陆验证操作,因此,这种配置方案并非一种良好的方式。那么,请问运行SQL Server的计算机能够转而充当备份域控制器(BDC)呢?从技术上讲,将SQL Server配置为PDC或BDC是否可能呢?

答:当您在PDC或BDC上安装SQL Server时,它仍可保持良好的工作状态。如需确定某种配置方案能否适应于您的站点,应当考虑您所拥有的资源。如果您拥有足够的网络带宽、内存空间与空闲处理器,那么,使用运行SQL Server的计算机作为域控制器便是一种合理的方案。然而,在这种情况下,根据域的实际规模,相应的计算机可能需要承担大量工作负载。如果您认为SQL Server的任务将会非常繁重,那么,便请不要再让其运行任何其它服务。

管理技巧

问:我尝试将数据库备份到网络共享资源上的一个文件中,并将其恢复到另一台服务器上。我试图通过下列语句借助net use命令在目标服务器上创建共享资源:

NET USE * \PS5C /USER:ONEDEVdomain id

password /PERSISTENT:NO

然而,系统却始终返回消息“无法获得尚未分配的可用驱动器盘符”。此时,SQL Server企业管理器明明显示出许多可用驱动器。请问我应如何解决这一问题?

答:您只需直接使用统一命名约定(UNC)路径来备份您的数据库。SQL Server 并非按照与用户相同的方式来看待映射驱动器盘符。您需要在您的共享资源

\PS5C上为SQL Server服务帐号授予完整的访问权限,创建一个新的共享资源,或使SQL Server服务帐号成为名为PS5的计算机上的管理员组成员。

将事务日志移动到不同的驱动器

问:如何将数据库事务日志移动到不同的驱动器上?

答:您可以通过用于分离与附加数据库的SQL Server存储过程来移动事务日志。您需要对数据库进行分离,移动日志文件,然后再将其重新附加到数据库上。举例来说,如果要将pubs数据库从C驱动器移动到D驱动器,应首先使用以下格式的sp_detach_db命令分离数据库:

EXEC sp_detach_db 'pubs'

接下来,将pubs.mdf与pubs_log.ldf文件拷贝到目标驱动器上。以下示例显示了如何将这两个文件拷贝到d:mssql7data目录下:

copy c:mssql7datapubs.mdf d:mssql7datacopy c:mssql7datapubs_log.ldf d:mssql7data

最后,当您完成文件拷贝操作后,便可使用sp_ attach_db存储过程将数据重新附件到SQL Server上:

EXEC sp_attach_db 'pubs', 'd:mssql7datapubs.mdf',

'd:mssql7datapubs_log.ldf'

内容摘要:两道很实用的SQL Server面试题,偏向于数据库管理人员的面试题。讲述以下两问题:如何将数据库拥有者(dbo)帐户改变为系统管理员(sa),如何添加Oracle链接服务器

关键词:SqlServer面试题数据库面试题 DBA面试题

本文地址:https://www.360docs.net/doc/ad3301213.html,/post/2007102702.html

内容正文:

将数据库拥有者(dbo)帐户改变为系统管理员(sa)

Q. 在我观察Enterprise Manager,或者对某个特殊的数据库运行“sp_helpdb ''”的时候,数据库的拥有者(dbo)显示为某个Microsoft Windows NT?的用户,而且该用户并没有添加到SQL Server 7.0服务器的登录当中。(该Windows NT用户是Windows NT 本地管理员组的成员。)但是,在我运行以下Transact-SQL 语句时:

USE

EXEC sp_helpuser

结果显示:系统管理员(sa)帐户映射到了这个用户dbo上,对我来说,这意味着sa就是dbo。因此,执行以下语句

EXEC sp_changedbowner 'sa'

将失败,因为SQL Server认为dbo就是数据库的拥有者。究竟谁是数据库的拥有者——Windows NT用户还是sa?如果Windows NT用户是拥有者,我如何才能将dbo改变为sa?

A. sa帐户总是会被映射到dbo上,即使sa并不是数据库的真正拥有者。dbo

帐户注册于master数据库的sysdatabases系统表中,这正如 sp_helpdb系统存储过程显示的一样。你可以将dbo从Windows NT改变为sa。实现这一目的的最快办法是首先分离(detach)该数据库,然后以sa身份重新连接该数据库。注意,这种方法会产生停机时间。

--------------------------------------------------------------------------

如何添加Oracle链接服务器

Q. 在我试图将一个Oracle服务器作为一个链接服务器添加到安装了SQL Server的本地计算机时,操作失败了。以下是我的计算机的一些参数设置:

General

Server: \baocjf (\domaincomputer name)

Product name: oracle

Data source: msdaora

Provider: proview (alias)

Security

Local login:cjf (sa)

Remote login: internal/oracle

难道SQL Server不支持将链接服务器添加到本地计算机吗?

A: 根据SQL Server Books Online(在线图书),你可以使用Microsoft OLE DB Provider for oracle来查询Oracle数据库中的数据。SQL Server Books Online 规定了该提供者工作所必须满足的几个条件。请仔细阅读这些指南以确保您满足这些条件。

例如,OLE DB Provider for oracle需要Oracle客户端软件支持文件版本为

7.3.3.4.0或更高, oracle SQL*Net的版本为2.3.3.0.4。SQL Server在线图书包括了与如何创建一个SQL*Net别名和创建从SQL Server登录到Oracle登录有关的信息。Books Online还为如何引用Oracle数据库的实例和Oracle链接

服务器中的数据表提供了一些指南。

根据这些指南,如想建立Oracle链接服务器,您应该运行以下命令:

exec sp_addlinkedserver 'localOracle', 'Oracle', 'MSDAORA', 'proview' /* SQL Server调用服务器“localOracle”,SQL*NET将服务器引用为 proview. */

exec sp_addlinkedsrvlogin 'localOracle', false, 'sa', 'internal',

'oracle'

/* 以“sa”身份登录到SQL Server,sa将映射到Oracle中的一个内部帐户。*/

然后,以sa用户的身份登录到SQL Server服务器上,然后运行一个如下所示的分布式查询:

Select * FROM localOracle..Schema.Table

我有一次面试的时候,就遇到下列问题?

1.隐式游标、显式游标的区别?

2.什么是同义词?

3.解释hint的使用

4.什么是数据仓库?

4答:

数据仓库基本工作流程

A.数据抽取

此步骤从业务系统中提取数据到数据仓库数据库中,基本上不作转换,但需要增量更新(即只提取最近修改和新增的数据,一般是以天为单位),以提高效率。B.数据清理

将步骤A抽取过来的数据进行清理,统一格式,比如同一个字段的数据在多个业务系统中都存在,但类型或长度可能不一致,在数据仓库中需要统一成一种类型,此工作一般在数据仓库数据库中用PL/SQL编写程序执行。

C.数据集成

在此步骤中将步骤B中得到的数据根据需求按主题集成,此步骤是运算最复杂的环节,一般用PL/SQL编写程序实现,由于算法复杂,对一个最终数据往往会编写几个程序,依次运算,中间运算结果会分多个逻辑层存放。

D.数据展示

此步骤实现最终用户看到的结果,即报表。一般需要借助第三方工具实现。以Business Object为例,完成此步工作还要分两个步骤,首先完成Universe设计,定义好语义层,然后制作报表,报表通过语义层中的数据对象查询数据,完成数据展示。最终用户可以通过web浏览器或特定客户端软件调阅报表。

由于以上A、B、C三步需要按定时顺序执行,且各个业务系统同数据仓库数据库之间往往是异构数据库,因此常常需借助第三方工具,比如IBM公司的DataStage、CA公司的Advantage Data Transformer等,这些工具都可以完成数据源连接定义,异构数据库数据的抽取,工作流定义等工作。

面试题:请问在SQL2000中怎么区分登入,用户,角色,并用例子举例说明;

再问:

(1)登入ID是不是就是用户名(当我创建了一个登入,我在点击登入所对应的数据,实例中的用户一栏看到登入ID与用户名一致)

(2)一个登入ID是不是只能对应一个用户

教科书答案:登录 ID 仅能使您连接到 SQL Server 实例。特定数据库内的权限由用户帐户控制。数据库管理员将您的登录帐户映射到您有权访问的任何数据库中的用户帐户

用户如:sa

角色如:public/db_owner/db_datareader/db_datawriter等

只有给用户赋予角色,该用户才有相应的操作数据库的权限

如将public/db_owner角色赋给sa,则该用户有对数据库进行一切操作的权限

角色:完成特定的、与服务器相关的管理任务所需的权限,一个用户可以属于多个角色。

登录:仅能使您连接到 SQL Server 实例。

命题官的理解:

登录是sql实例级的

用户是数据库级的

角色有实例级和数据库级两种

登录决定你是否能访问sql实例

用户与登录对应, 确实某个登录后, 它对那些数据库有那些权限.

角色是为了方便管理一类登录或者用户所具有的权限, 当某一类登录或者用户具有相同的权限时, 可以简单地给予他们对应的角色即可.

做个形象的比喻:

sql实例就相当于一个公司.

如果你要在公司工作自然就要成为公司的员工, 因此公司的员工就相当于登录

公司有不同的部门, 这相当于数据库, 你要在某个部门做事, 必须把你分配到某个部门, 也就是在部门的名单中要有你, 这个部门的名单就相当于用户. 名单必须对应公司的某个员工.

但你一个人是可以在多个部门工作的

因此, 一个登录可以对应多个数据库的不同用户.

同样, 一个员工在一个部门的名单中只可能出现一次

因此, 一个登录在同一数据库中, 只可能对应一个用户

为了方便定义每个员工应该做些什么, 应该承担什么职责, 公司会定义职位, 我个职位对应的, 在数据库中就叫角色.

因为有的职位是公司层面的, 比如懂事长, 他什么都可以管

因此, 有sql实例级的角色

也可以具体地为每个部位定义职位, 不同部门的同一名称的职位它的具体内容可以不同.

因此,对应于sql而言, 它又有数据库级的角色

某个员工是某个职位, 则具有该职位对应的权限与责任

因此, 对于sql而言, 某个登录或者用户被授予某个或者某些角色, 它就具有对应的权限.

不同职位, 在不同时期, 可以由不人担任, 换人只需要取消和授予对应人员的职位就可以了. 不用改职位定义.

因此, 对于sql而言, 可以根据需要取消和授予某个登录或者用户的角色.

(这是管理方便性需要, 你完全可以不理会角色, 自己为用户或者登录指定权限)

1. (1)truncate 是DDL操作,且删除的数据信息不计入redo log,效率高;delete DML操作,删除的信息写入redo log,效率低

(2)truncate 降低了HWM;delete不降低HWM

2. disable外键约束,重建完成以后enable外键约束

3. 归档和不归档模式的比较:

归档模式下数据库是可以恢复到任意一个时间点的,而不归档的模式下数据库不能恢复到任意一个时间点,由于归档需要写归档日志,所以归档模式下数据库性能比不归档模式下稍差一点。

4. ORACLE_HOME是Oracle数据库的安装目录,ORACLE_BASE则是Oracle产品的安装目录

5. package 是把一些互相之间有联系,或者业务上存在相近或者实现同一个目的的function, procedure组合在一起,便于迁移吧。function是需要返回一个值的,procedure是用来操作数据的,不需要返回值的,如果需要返回值的话,可以通过out参数来返回。

6. 关闭数据库,修改initSID.ora文件,然后重新启动数据库

7. alter tablespace temp add datafile '/mydatabase/mydb1/temp02.dbf' 100m; 不应该给temp表空间增加datafile,而是tempfile

8. 普通的B树索引,但是不写入日志

9. nomount的时候就已经分配了sga. 啥时候分配的pga不记得了,赶紧查查去

10. 数据库服务器端的字符集 select * from nls_database_parameters 9i新引入的unicode字符集还真的确实不知道

哗啦啦答了一圈,不知道对不,欢迎大家使劲拍砖

网易笔试不难,但是给了我一个教训,所以记下来以留念。

时间:11月3日8:00(后来改到10:00)。

地点:西安交通大学教2南315教室

赶到考场时,离考试开始时间只差2分钟了,找了个座位坐下后没有任何的等待笔试就开始了。网易的笔试题目很有趣:

证明题:给出n个互不相同的分数数列a1/b1, a2/b2… an/bn ,证明(a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在数列a1/b1, a2/b2… an/bn 数列的最大值和最小值之间。

证明题:在三角形中,假设等角对等边,证明大角对大边。

文学题:在以下的空白中填入相应的词(蔼、断、淡、泰)并解释其含义。

自处超然,处事然,无事澄言,处事言,得意然,失意然。

问答题:为什么现在的计算机采用二进制?而不是八进制或十六进制?你认为以后的计算机会采用几进制?

阅读理解题(记不清楚是不是有这道题及具体是什么了)。

程序设计题:给出若干个单词,组成字典,要求查找速度最快。

不知为什么,那天心态特别放松,放松的结果就是思维很发散,写字不是太工整,尤其是做到后面的题目时,写字写得很快,自己看上去都有些潦草。总共我写了三页纸(正反面),自己感觉还是做得不错的。

但是后来并没有收到网易的面试通知,总结了一下,结论就是那天的字迹太潦草了。潦草给人的第一印象就是态度不认真,进一步就是你做事情的风格就这样马虎,或者说你对我们公司不感兴趣,所以,不给我面试机会也是很正常的。

这是一个教训。在做这份题目的时候,就应该想到面对一份答案,阅卷人员会如何去看待,也就是说如何通过这份答案去影响阅卷人员对自己的看法。如果他面对的是一份潦草的答卷,即使答案是完全正确的甚至是有些创意的,他也许看都不看就直接放到一边去了。

态度是最重要的事情。要做,就要端正态度,做到最好,不然就不要去做了。

1.写出对“知之者不如好之者,好之者不如乐之者”的理解。

2.用中文写出尽可能多的中文语句,要求包含有“都”的意思(all、both之意),但不能有“都”字

3.new/delete和malloc/free的区别,并说说你在什么情况下会自另行建立自己的内存分配机制。

4.求极限lim(x-[x]),x趋于-3。

5.比较两个电路的可靠性。

6.编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有

可能的正整数序列。

7.有两个字符串 str1和str2,写一个函数实现在str1中查找str2的初始位置。要求不区分大小写。

8.在字符串S中寻找最长的字符串x,条件是x存在于S中。即是如:abcabcdcd 中的abc。

9.求Fibonacci数列中第k个与前面所有数互质的数(除前面两个数 1,1 )。

10.有100个真币和一个假币,只知道真币与假币不等重,要求只称两次,得出是真币重还是假币重。

11.证明题:给出n个互不相同的分数数列a1/b1, a2/b2… an/bn ,证明(a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在数列a1/b1, a2/b2… an/bn 数列的最大值和最小值之间。

12. 证明题:在三角形中,假设等角对等边,证明大角对大边。

13. 文学题:在以下的空白中填入相应的词(蔼、断、淡、泰)并解释其含义。

自处超然,处事然,无事澄言,处事言,得意然,失意然。

14. 问答题:为什么现在的计算机采用二进制?而不是八进制或十六进制?你认为以后的计算机会采用几进制?

15.程序设计题:给出若干个单词,组成字典,要求查找速度最快。

16.,有b1/a1,b2/a2,....,bn/an 共n个分数,分母同号,证明:

(b1+b2+...+bn)/(a1+a2+...+an)的值在上面n个分数值最大制和最小值之间.

17.证明:三角形中大边对大角,已知等边对等角

18.为什么计算机中多用二进制,16进制也用在程序中.你认为有没有可能回出现多进制的计算机,为什么

19.一个没有拷贝构造函数和重载=运算符的String类,会出现什么问题,如何解决?

20.编程题.

有篇文章,找出文章中单词在词典中的序号,要求高效率.词典没排序.

21.

有一位警长,抓了三个逃犯。现警长决定给他们一次机会。他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。

警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。

警长问第二个逃犯,结果还是猜错了,同样被杀掉了。

警长再问第三个逃犯,结果第三个逃犯猜对了。

说明一下,每个逃犯在回答问题时,其他逃犯是听不到的。

为什么第三个一定能猜中,请你给出解释。

1.磁盘柜上有14块73G的磁盘,数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?

2.有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。

3.有一个A 数据库,分别复制到B和C B 要求每次数据更新也同时更新,C 每

天更新一次就行,如何制定复制策略!

4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化

5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略(详细说明)。

参考答案:

1.磁盘柜上有14块73G的磁盘,数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?

这个问题应该是考察硬件知识和数据库物理部署。

首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能(读/写)要求。来决定raid的级别。

1)、如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用

raid0+1,这样可使用的磁盘容量为:14*73*50%=511G。

2)、如果读/写性能要求不高,而且还比较抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。

至于如何使用应该是说数据库物理文件的部署。注意说出将tempdb,data

file,log file分开存放以减少I/O竞争即可。其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。

2.有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。

这个具体操作有点忘了。大致是:首先看哪个节点正在使用,通过节点IP(私有)访问另一个空闲节点,为其打上补丁,然后在群集管理器中停止该节点(也可以用命令行方式),重新启动。等到启动完毕,将切换使用节点,为另一个节点打补丁。然后重新启动。

3.有一个A 数据库,分别复制到B和C B 要求每次数据更新也同时更新,C 每天更新一次就行,如何制定复制策略!

这个应该考察的是复制知识。

a->b

1)、如果使用SQL Server复制功能,那么让a->b使用事务性复制方式(同步复制)。

2)、如果表不多,也可以自己写触发器,利用linkserver+distribute transaction。

a->c

1)、如果使用SQL Server复制功能,那么让a->b使用快照复制方式,在某一

时间点进行一次性复制。

2)、也可以自己写bat,将a备份后,通过ftp传输备份介质,恢复c。(比较麻烦,不推荐)

4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化

这个问题问的比较没水平。你不详细说明这个表的使用方式(读写类的,还是几乎是静态表),就问人家怎么优化?!!还不如问问索引的分布访问原理更好。

看得出他就想让你说:那三个索引超过10个,B树遍例效率很低,适当减少字段数目。如果是SQL2005,可以将选择性不好的字段放在“索引附加字段”中,以保证索引覆盖。而且SQL Server由于有锁升级的毛病,可以考虑拆开表。

5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略(详细说明)。

这种情况可以采用增量备份方式。每周日做一次全备份,周一到周六作增量备份(由于数据量较少,可以考虑每30分钟增量备份一次)。这样可以尽量减少性能消耗,而且如果transaction log丢失的情况下,可以保证最多丢失30分钟数据。

6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?

7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程

参考答案:

6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?

这个比较简单。在每台机器上建立linkserver,然后在DBA管理服务器上做个分布式视图,每次查询该视图,各个机器上的作业情况一目了然。分布式视图写法:

create view vw_job

as

select '机器一' as MName,* from linkserver1..sysjobactivity

union all

select '机器二' as MName,* from linkserver2..sysjobactivity

union all

select '机器三' as MName,* from linkserver3..sysjobactivity

7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程

这个应该是考察存储过程编写经验。一般自定义函数主要用于其他sql中的调用,如:

select yourfunc(...) from table

这种情况下,一般只能通过函数实现。

存储过程的功能要远远强于函数,例如动态执行sql(sp_executesql)的使用和一些特殊的功能,自定义函数中是不支持的,只能用存储过程实现。

8.SQL 2005 的新特性是什么?与oracle 有什么区别?

9.DBA 的品质应该有哪些,你有哪些,有什么欠缺的?

10。如果想配置SQL Mail 应该在服务器安装哪些软件!

参考答案:

8.SQL 2005 的新特性是什么?与oracle 有什么区别?

SQL 2005 的新特性一般都是和Oracle学的。

下面是当时被leimin逼着写的,你可以做个参考:

一、数据库设计方面

1、字段类型。

varchar(max) varchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。但是这就引发了对varchar 和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?是否碎片会引发效率问题?这都是需要进一步探讨的东西。

varbinary(max)代替image也让SQL Server的字段类型更加简洁统一。

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)

2、外键的级联更能扩展

可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。但是再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SET NULL 和 SET DEFAULT 属性,能够提供能好的级联设置。

3、索引附加字段

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。

4、计算字段的持久化

原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。

5、分区表

分区表是个亮点!从分区表也能看出微软要做大作强SQL Server的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQL Server2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

但是需要注意的一点,也是我使用过程中发现的一个问题。在建立

function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。如果你觉得我的非分区索引无法对起子分区,

你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)

6、CLR类型

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。但是作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!还不是性能有问题!否则面向对象的数据库早就实现了!

建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。或者是要和操作系统进行Socket通讯的场景。否则建议慎重!

7、索引视图

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

8、语句和事务快照

语句级快照和事务级快照终于为SQL Server的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

9、数据库快照

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

10、Mirror

Mirror可以算是SQL Server的Data guard了。但是能不能被大伙用起来就不知道了。

二、开发方面

1、Ranking函数集

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQL Server2005的row_number比Oracle的更先进。因为它把Order by 集成到了一起,不用像Oracle那样还要用子查询进行封装。但是大家注意一点。如下面的例子:

select ROW_NUMBER() OVER (order by aa)

from tbl

order by bb

会先执行aa的排序,然后再进行bb的排序。

可能有的朋友会抱怨集成的order by,其实如果使用ranking函数,Order by

是少不了的。如果担心Order by会影响效率,可以为order by的字段建立聚集索引,查询计划会忽略order by 操作(因为本来就是排序的嘛)。

2、top

可以动态传入参数,省却了动态SQL的拼写。

3、Apply

对递归类的树遍历很有帮助。

4、CTE

个人感觉这个真是太棒了!阅读清晰,非常有时代感。

5、try/catch

代替了原来VB式的错误判断。比Oracle高级不少。

6、pivot/unpivot

个人感觉没有case直观。而且默认的第三字段(还可能更多)作为group by

字段很容易造成新手的错误。

三、DBA管理方面

1、数据库级触发器

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

2、多加的系统视图和实时系统信息

这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

3、优化器的改进

一直以来个人感觉SQL Server的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)

论坛例子:

https://www.360docs.net/doc/ad3301213.html,/Expert/topic/4543/4543718.xml?temp=.405987

4、profiler的新事件观察

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

5、sqlcmd

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQL Server Management Studio的朋友使用。

四、遗憾

1、登陆的控制

始终遗憾SQL Server的登陆无法分配CPU/内存占用等指标数。如果你的SQL Server给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进

行连接查询,会给你的系统带来很大的负担。而SQL Server如果能像Oracle 一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

2、数据库物理框架没有变动

undo 和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。但是同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。

3、还是没有逻辑备份

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

4、SSIS(DTS)太复杂了

SQL Server的异构移植功能个人感觉最好了。(如果对比过SQL Server的链接服务器和Oracle的透明网关的朋友会发现SQL Server的

sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了。

与oracle 有什么区别?

这个问题相当变态!不同点我能给他讲一天!首先名字就不一样嘛!!:)9.DBA 的品质应该有哪些,你有哪些,有什么欠缺的?

10。如果想配置SQL Mail 应该在服务器安装哪些软件!

需要哪些软件?安个outlook express就可以了。sql server提供接口存储过程,非常简单

数据库面试题及答案

数据库面试题 1 1. 在一个查询中,使用哪一个关键字能够除去重复列值? 答案:使用distinct关键字 2. 什么是快照?它的作用是什么? 答案:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。 3. 解释存储过程和触发器 答案: 存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。 触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。 4. SQL Server是否支持行级锁,有什么好处? 答案:支持动态行级锁定 SQL Server 2000动态地将查询所引用的每一个表的锁定粒度调整到合适的级别。当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最佳办法是使用粒度锁,如行锁。但是,如果查询引用的是一个表中的大多数行或所有行,优化数据并行访问的最佳办法可以是锁定整个表,以尽量减少锁定开销并尽快完成查询。 SQL Serve 2000通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。对于一个查询,如果只引用一个大型表中的几行,则数据库引擎可以使用行级锁定;如果引用一个大型表的几页中的多行,则使用页级锁定;如果引用一个小型表中的所有行,则使用表级锁定。 5. 数据库日志干什么用,数据库日志满的时候再查询数据库时会出现什么情况。答案:每个数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。 6. 存储过程和函数的区别? 答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表 7. 事务是什么? 答案:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务: (1) 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

数据库笔试题 - 答案

XXXX感谢您对本套试题的回答,首先请您填写上您的姓名(____________),本套试题将作为XXXX入职的参考,多谢您的重视。本套试题分三部分:填空题(10分)、选择题(20分),SQL 基础题(30)、简答题(20)、综合题(30)。时间60分钟,满分110分。 一、填空题(每题2分,共10分) 1. 索引字段值不唯一,应该使用的索引类型为( 普通索引 ) 2. 只有满足联接条件的记录才包含在查询结果中,这种联接为( 内联接) 3. E-R模型的组成包括那些元素( 实体 )( 属性)( 关系) 4. 事务所具有的特性有( 原子性)( 一致性)( 隔离性)( 持久性) 5、结构化程序设计的三种基本逻辑结构是(顺序结构),(选择结构),(循环结构)。 二、选择提(每题1分,共20分) 1、在删除整表数据,同时保留表结构时,采用( C )的效率比( A )要高; A. delete B. drop table C. truncate Table 2、数据库管理系统中,能实现对数据库中的数据进行插入/修改/删除的功能称为(C); A.数据定义功能 B.数据管理功能 C.数据操作功能 D.数据控制功能 3、2 4、在关系模型中,实现"关系中不允许出现相同的元组"的约束是通过(B)。 A:候选键B:主键C:外键D:超键 4、数据库管理系统DBMS S是( D); A.信息管理的应用软件 B.数据库系统+应用程序 C.管理中的数据库 D.管理数据的软件 5、关系数据库中,实现表与表之间的联系是通过(B)。 A、实体完整性规 B、参照完整性规则 C、用户自定义的完整性 D、值域 6、设有部门和职员两个实体,每个职员只能属于一个部门,一个部门可以有多名职员,则部门与职员实体之间的联系类型(B)。 A、m:n B、1:m C、m:1 D、1:1 7、设有课程和学生两个实体,每个学生可以选修多个课程,一个课程可以有多名学生选修,则课程与学生实体之间的联系类型( A )。 A、m:n B、1:m C、m:1 D、1:1 8、如果一个班只能有一个班长,而且一个班长不能同时担任其它班的班长,班级和班长两个实体之间的关系属于(D)。 A、m:n B、1:m C、m:1 D、1:1 9、索引字段值不唯一,应该选择的索引类型为( B )。 A:主索引 B:普通索引C:候选索引D:唯一索引 10、如果指定参照完整性的删除规则为"级联",则当删除父表中的记录时( C )。 A:系统自动备份父表中被删除记录到一个新表中 B:若子表中有相关记录,则禁止删除父表中记录 C:会自动删除子表中所有相关记录

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

数据库面试题:数据库的面试题及答案 疯狂代码 https://www.360docs.net/doc/ad3301213.html,/ ?:http:/https://www.360docs.net/doc/ad3301213.html,/DataBase/Article25003.html . 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义? 答:触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。 2. 表空间管理方式有哪几种,各有什么优劣。 答:字典管理方式和本地管理方式,本地管理方式采用位图管理extent,减少字典之间的竞争,同时避免了碎片。 本地管理表空间与字典管理表空间相比,其优点如下: 1).减少了递归空间管理; 2).系统自动管理extents大小或采用统一extents大小; 3).减少了数据字典之间的竞争; 4).不产生回退信息; 5).不需合并相邻的剩余空间; 6).减少了空间碎片; 7).对临时表空间提供了更好的管理。 3. 本地索引与全局索引的差别与适用情况。 答:对于local索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由Oracle自动进行。对于global索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。当对分区进行维护操作时 ,通常会导致全局索引的INVALDED,必须在执行完操作后REBUILD。Oracle9i提供了UPDATE GLOBAL INDEXES语句,可以使在进行分区维护的同时重建全局索引。 4. 一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么? 答:这个要考虑到rowid所占的字节数,假设char总是占用2字节的情况,比较rowid,另外,table和index在segment free block的管理也有差别。 5. Oracle9i的data guard有几种模式,各有什么差别。 答:三种模式: 最大性能(maximize performance):这是data guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息。该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。 最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时 ,最大可用模式自动最大性能模式,所以standby故障不会导致primay不可用。只要至少有一个standby可用的情况下,即使primarydown机,也能保证不丢失数据。 最大保护(maximize protection):最高级别的保护模式。primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。该模式能保证零数据丢失。 6. 执行计划是什么,查看执行计划一般有哪几种方式。 答:执行计划是数据库内部的执行步骤: set autotrace on select * from table

sql数据库基础面试题复习试题考试题_全

不定项选择题(针对以下题目,请选择最符合题目要求的答案,每道题有一项或二项正确答案。针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分。题量为50道,每题2分,总分为100分。) 第一章 1、是SQLServer数据库的主数据文件的扩展名。(选择一项) A、.sql B、.mdb C、.ldf D、.mdf 2、在SQL Server 2005中,有系统数据库和用户数据库,下列不属于系统数据库的是()。 (选择一项) A、master B、pubs C、model D、msdb 3、当安装完SQL Server2005数据库时,系统默认当前的超级管理员是( ) (选择一项) A、sa B、master C、administrator D、super 4、在使用SQL Server2005数据库时,有时需要将本机的数据库移动到其他机器上,恢复成对应的数据库使用。移动数据库分两步进行,应包括()和附加数据库(选择一项)A、分离数据库 B、删除数据库 C、新建数据库 D、合并数据库 5、在SQL Server2005中,附加数据库操作是指()(选择一项) A、把SQL Server 数据库文件保存为其他数据文件 B、根据数据库物理文件中的信息,把数据库在SQL Server 2005中恢复 C、把所有该数据库表的数据清空 D、把数据库删除掉 6、某单位由不同的部门组成,不同的部门每天都会生产一些报告、报表等数据,以为都采用纸张的形式来进行数据的保存和分类,随着业务的发展,这些数据越来越多,管理这些报告越来越费力,此时应考虑()(选择一项) A、由多个人来完成这些工作 B、在不同的部门中,由专门的人员去管理这些数据 C、采用数据库系统来管理这些数据 D、把这些数据统一成一样的格式 7、在SQL Server 2005中,对于数据库的定义正确的是()(选择一项) A、数据库是用来描述事物的符号记录 B、数据库是位于用户与操作系统之间的一层数据管理软件

数据库笔试题及标准答案,常见数据库面试题

数据库笔试卷及答案 第一套 一.选择题 1. 下面叙述正确的是______。 A、算法的执行效率与数据的存储结构无关 B、算法的空间复杂度是指算法程序中指令(或语句)的条数 C、算法的有穷性是指算法必须能在执行有限个步骤之后终止 D、以上三种描述都不对 2. 以下数据结构中不属于线性数据结构的是______。A、队列B、线性表C、二叉树D、栈 3. 在一棵二叉树上第5层的结点数最多是______。A、8 B、16 C、32 D、15 4. 下面描述中,符合结构化程序设计风格的是______。 A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B、模块只有一个入口,可以有多个出口 C、注重提高程序的执行效率 D、不使用goto语句 5. 下面概念中,不属于面向对象方法的是______。 A、对象 B、继承 C、类 D、过程调用 6. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。 A、可行性分析 B、需求分析 C、详细设计 D、程序编码 7. 在软件开发中,下面任务不属于设计阶段的是______。 A、数据结构设计 B、给出系统模块结构 C、定义模块算法 D、定义需求并建立系统模型 8. 数据库系统的核心是______。 A、数据模型 B、数据库管理系统 C、软件工具 D、数据库 9. 下列叙述中正确的是______。 A、数据库是一个独立的系统,不需要操作系统的支持 B、数据库设计是指设计数据库管理系统 C、数据库技术的根本目标是要解决数据共享的问题 D、数据库系统中,数据的物理结构必须与逻辑结构一致 10. 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。 A、内模式 B、外模式 C、概念模式 D、逻辑模式 11. Visual FoxPro数据库文件是______。 A、存放用户数据的文件 B、管理数据库对象的系统文件 C、存放用户数据和系统的文件 D、前三种说法都对 12. SQL语句中修改表结构的命令是______。 A、MODIFY TABLE B、MODIFY STRUCTURE C、ALTER TABLE D、ALTER STRUCTURE 13. 如果要创建一个数据组分组报表,第一个分组表达式是"部门",第二个分组表达式是"性别",第三个分组表达式是"基本工资",当前索引的索引表达式应当是______。 A、部门+性别+基本工资 B、部门+性别+STR(基本工资) C、STR(基本工资)+性别+部门 D、性别+部门+STR(基本工资) 14. 把一个工程编译成一个应用程序时,下面的叙述正确的是______。 A、所有的工程文件将组合为一个单一的应用程序文件 B、所有工程的包含文件将组合为一个单一的应用程序文件

SQL数据库面试题以和答案

Student(S#,Sname,Sage,Ssex)学生表 S#:学号 Sname:学生姓名 Sage:学生年龄 Ssex:学生性别 Course(C#,Cname,T#)课程表 C#:课程编号 Cname:课程名称 T#:教师编号 SC(S#,C#,score)成绩表 S#:学号 C#:课程编号 score:成绩 Teacher(T#,Tname)教师表 T#:教师编号: Tname:教师名字 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号 select a.S# from (select S#,score from SC where C#='001')a, (select s#,score from SC wh ere c#='002')b Where a.score>b.score and a.s# = b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩 select S#, avg(score) from sc group by S# having avg(score)>60 3、查询所有同学的学号、姓名、选课数、总成绩 select student.S#, student.Sname, count(sc.C#), sum(score) from student left outer join SC on student.S# = SC.S# group by Student.S#, Sname

4、查询姓‘李’的老师的个数: select count(distinct(Tname)) from teacher where tname like '李%'; 5、查询没有学过“叶平”老师可的同学的学号、姓名: select student.S#, student.Sname from Student where S# not in (select distinct(SC.S#) from SC,Course,Teacher where sc.c#=course.c# AND teacher.T#=course.T# AND Teahcer.Tname ='叶平'); 6、查询学过“叶平”老师所教的所有课的同学的学号、姓名:select S#,Sname from Student where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平')); 7、查询学过“011”并且也学过编号“002”课程的同学的学号、姓名: select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002'); 8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名: Select S#,Sname

常见SQL数据库面试题和答案(一)

常见SQL数据库面试题和答案(一) Student(S#,Sname,Sage,Ssex) 学生表S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别 Course(C#,Cname,T#) 课程表C#,课程编号;Cname:课程名字;T#:教师编号 SC(S#,C#,score) 成绩表S#:学号;C#,课程编号;score:成绩 Teacher(T#,Tname) 教师表T#:教师编号;Tname:教师名字 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select # from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where > and #=#; 2、查询平均成绩大于60分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select #,,count#),sum(score) from Student left Outer join SC on #=# group by #,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select #, from Student where S# not in (select distinct( #) from SC,Course,Teacher where #=# and #=# and ='叶平'); 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select #, from Student,SC where #=# and #='001'and exists( Select * from SC as SC_2 where #=# and #='002'); 7、查询学过“叶平”老师所教的所有课的同学的学号、姓名; select S#,Sname from Student where S# in (select S# from SC ,Course ,Teacher where #=# and #=# and ='叶平' group by S# having count#)=(select count(C#) from Course,Teacher where #=# and Tname='叶平')); 8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select #,,score ,(select score from SC SC_2 where #=# and #='002') score2

数据库面试题答案

数据库 SQL面试题 1)谈一下数据库的索引的原理,如何发挥作用的?针对插入操作索引会起正面作用么? 索引类似于书的目录,主要用于提高查询效率,也就是按条件查询的时候,先查询索引,再通过索引找到相关的数据,索引相当于记录了对某个关键词,指定到不同的文件,或者文件里的不同位置的结构 索引会降低数据更新的效率,当插入、修改、删除时会引起索引结构的更新 2) 数据库表里如果数据行数很多,做分页查询,SQL如何书写? 3) 说说group by, having是做什么的,举一个group by的例子 4) 说说外连接和连接的区别 5) 事务是什么概念,举例说明 6) 一个表:emp(,性别,年龄,工作类型,领导,工资,部门) a) 列出每个部门的最高工资和最低工资 Select max(工资),min(工资) from emp group by部门 b) 列出各部门’工作类型’为’普通职员’的最低和最高工资 Select max(工资),min(工资) from emp group by部门 Where工作类型=’普通职员’ c) 列出高于本部门平均工资的员工,工资,部门 select ,工资,部门 from emp e1 where工资>( select avg(工资) from emp e2 where e2. 部门=e1.部门 ) 存储过程和函数的区别是什么? 答:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。而函数通常是数据库已定义的方法,它接受参数并返回某种类型的值,并且不涉及特定用户表。 4.事务是什么? 答:事务是作为一个逻辑单元执行的一系列操作。一个逻辑工作单元必须有4个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能称为一个事务。 5.游标的作用是什么?如何知道游标已经到了最后? 答:游标用于定位结果集的行。通过判断全局变量FETCH_STATUS可以判断其是否到了最后。通常此变量不等于0表示出错或到了最后。

数据库面试题

1.1.数据库 1.1.1.数据库 员工表的定义如下: Last_name VARCHAR2(25) First_name VARCHAR2(25) Salary NUMBER(7,2) 现查询显示未达到平均工资的员工姓名.请考察下面的SQL语句: SELECT last_name, first_name FROM employee WHERE salary < avg(salary); 对这条SQL做以下哪项修改能够达到目的? A.改变WHERE子句 B.把聚合函数移到SELECT列表中,并增加GROUP子句 C.通过子查询得出平均工资水平并在父查询的WHERE子句中比较 D.把聚合函数移到SELECT列表中,并增加GROUP BY子句和HAVING子句 注:SELECT last_name, first_name FROM employee where sal<(Select avg(salary) from employee); 1.1. 2.数据库 要从员工表中查询所有姓Smith的人,但是并不能确定所有Smith的大小写,以下哪条语句能解决问题? A.SELECT last_name, first_name FROM emp WHERE last_name=’smith’ B.SELECT last_name, first_name FROM emp WHERE UPPER(last_name)=’smith’ C.SELECT last_name, first_name FROM emp WHERE last_name=UPPER(‘smith’) D.SELECT last_name, first_name FROM emp WHERE LOWER(last_name)=’smith’ 1.1.3.delete from tablea & truncate table tablea的区别( ) A.没有区别 B.速度相同 C.速度不同 D.日志记录不同 1.1.4.下列哪些(或哪个)不是PL/SQL的组成部分() A.DECLARE B.CATCH C.THROW D.EXCEPTION 1.1.5.SQL语句中修改表结构的命令是______。 A.MODIFY TABLE

SQL数据库面试题目及其答案

1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。 它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 2.什么是存储过程?用什么来调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。 3.索引的作用?和它的优点缺点是什么? 答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。 缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。 3。什么是内存泄漏? 答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new 等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 4.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么? 答:我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。 5.什么是事务?什么是锁? 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。 要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

Oracle数据库DBA面试题及答案_经典

1.OracleDBA面试题之一解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。 冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换init.ora到spfile? 解答:使用create spfile from pfile 命令 4. OracleDBA面试题:解释data block , extent 和 segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents 被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1、DESCRIBE命令 2、DBMS_METADATA.GET_DDL 包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的信息

数据库试题及答案

一、选择题 1.在数据库系统中,把可以相互区别的客观事物称为(D ) A.属性 B. 字段 C.文件 D.实体 2.数据库的存储设备和存取方法变化不影响整体逻辑结构的特点,称为数据库的( D ) A.实体独立性B.物理数据独立性 C.客观独立性 D.逻辑数据独立性 3.学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是( B ) A. 多对多 B. 一对多 C. 多对一 D. 一对一 4.如果关系模式R上有函数依赖AB→C和A→C,则R中存在(B ) A. 完全依赖 B.部分依赖 C. 传递依赖 D.多值依赖 5.关系模型的参照完整性约束是指(C) A.限制引用一个关系中的不同元组数据 B.限制引用不同关系中的元组数据 C.限制一个关系引用与之联系关系中不存在的元组数据 D.限制两个关系间的互相引用 6.在嵌入式SQL中,为了把集合操作转换成单记录处理方式,引进了以下哪个概念( B )

A.宿主语言B.游标 语言语言 7、单个用户使用的数据视图的描述称为(A )。 A. 外模式 B. 概念模式 C. 内模式 D. 存储模式 8.在SQL中,下列涉空值的操作,不正确的(D:AGE=NULL) 9.数据库系统的独立性是指(B) A. 不会因为数据的变化而影响应用程序 B. 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序 C. 不会因为数据存储策略的变化而影响数据存储结构 D. 不会因为某些数据逻辑结构的变化而影响应用程序 10.设有T1和T2两个事务,若并发操作如下,则下面评价中正确的是(C )。 T1 T2 ①读A=100,B=5 ②读A=100 A=A*2 回写 ③求A+B=105,验证错 A. 该操作不存在问题 B. 该操作丢失修改 C. 该操作不能重复读 D. 该操作读“脏数据”

数据库面试题

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看来,明明修改了数据,咋不一样 3.MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景 4.索引有B+索引和hash索引 5.聚集索引和非聚集索引

6.索引的优缺点,什么时候使用索引,什么时候不能使用索引 索引最大的好处是提高查询速度, 缺点是更新数据时效率低,因为要同时更新索引 对数据进行频繁查询进建立索引,如果要频繁更改数据不建议使用索引。 7.InnoDB索引和MyISAM索引的区别 一是主索引的区别,InnoDB的数据文件本身就是索引文件。而MyISAM的索引和数据是分开的。二是辅助索引的区别:InnoDB的辅助索引data域存储相应记录主 8.索引的底层实现(B+树,为何不采用红黑树,B树)重点 树区别 红黑树增加,删除,红黑树会进行频繁的调整,来保证红黑树的性质,浪费时间 B树也就是B-树B树,查询性能不稳定,查询结果高度不致,每个结点保存指向真实数据的指针,相比B+树每一层每屋存储的元素更多,显得更高一点。 B+树B+树相比较于另外两种树,显得更矮更宽,查询层次更浅 9.B+树的实现 一个m阶的B+树具有如下几个特征: 1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。 2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素10.为什么使用B+Tree 索引查找过程中就要产生磁盘I/O消耗,主要看IO次数,和磁盘存取原理有关。根据B-Tree的定义,可知检索一次最多需要访问h个节点。数据库系统的设计者巧妙利用了磁

SQL Server数据库笔试题和答案

一单词解释(2分/个) 34分 Data 数据Database 数据库RDBMS 关系数据库管理系统GRANT 授权 REVOKE 取消权限DENY 拒绝权限DECLARE 定义变量PROCEDURE存储过程 事务Transaction 触发器TRIGGER 继续continue 唯一unqiue 主键primary key 标识列identity 外键foreign key 检查check 约束constraint 二编写SQL语句(5分/题) 50分(包含笔试题问题与解答答案) 1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 Create table stu (学号int , 姓名varchar(8), 年龄int, 性别varchar(4), 家庭地址varchar(50), 联系电话int ); 2) 修改学生表的结构,添加一列信息,学历 Alter table stu add 学历varchar(6); 3) 修改学生表的结构,删除一列信息,家庭住址 Alter table stu drop column 家庭地址 4) 向学生表添加如下信息: 学号姓名年龄性别联系电话学历 1A22男123456小学 2B21男119中学 3C23男110高中 4D18女114大学 Insert into stu values(1,’A’,22,’男’,123456,’小学’) Insert into stu values(2,’B’,21,’男’,119,’中学’) Insert into stu values(3,’C’,23,’男’,110,’高中’) Insert into stu values(4,’D’,18,’女’,114,’大学’) 5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” Update stu set 学历=’大专’ where 联系电话like ‘11%’ 6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 Delect from stu where 性别=’男’ and 姓名like ‘c%’ 7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名与学号示出来Select 姓名,学号from stu where 年龄<22 and 学历=’大专’ 8) 查询学生表的数据,查询所有信息,列出前25%的记录

数据库试题及答案

《数据库技术与应用》样题 一、选择题( 共30 分,1--20 每小题1 分,21—25 每小题2 分。下列各题A)、B)、 C)、D)四个选项中,只有一个选项是正确的) 1 在SQL Server 中,关于视图的正确叙述是 A)视图与数据库表相同,用来存储数据B)视图不能同数据库表进行连接操作 C)在视图上不能进行更新操作D)视图是从一个或多个数据库表导出的虚拟表 2 SQL 是那几个英文单词的缩写 A)Standard Query LanguageB)Structured Query Language C) Select Query LanguageD)以上都不是 3 不属于SQL Server 系统全局变量的是()。 A、@@Error B、@@Connection C、@@Fetch_Status D、@Records 4 下面描述错误的是() A、每个数据文件中有且只有一个主数据文件 B、日志文件可以存在于任意文件组中 C、主数据文件默认为primary 文件组 D、文件组是为了更好地实现数据库文件组织 5 SQL Server 数据库文件有三类,其中主数据文件的后缀为() A、.mdf B、.ldf C、.ndf D、.idf 6、下面标识符不合法的是() A、[my delete] B、_mybase C、$money D、trigger1 7 下面字符串能与通配符表达式[ABC]%a 进行匹配的是() A、BCDEF B、A_BCD C、ABC_a D、A% 8、下面对索引的相关描述正确的是()列值唯一的列适合间索引 A、经常被查询的列不适合建索引 B、列值惟一的列适合建索引 C、有很多重复值的列适合建索引 D、是外键或主键的列不适合建索引 9、在“连接”组中有两种连接认证方式,其中在()方式下,需要客户端应用程序连接 时提供登录时需要的用户标识和密码。 A、Windows 身份验证 B、SQL Server 身份验证 C、以超级用户身份登录时 D、其他方式登录时 10、索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它能够加快数据的()速度。 A、插入 B、修改 C、删除 D、查询在where子句中出现频率较高的列应尽量创建索引 11、以下哪种情况应尽量创建索引() A、在Where 子句中出现频率较高的列 B、具有很多NULL 值的列 C、记录较少的基本表 D、需要更新频繁的基本表 12、域完整性用于保证给定字段中数据的有效性,它要求表中指定列的数据具有正确的数据类型、格式和有效的()。 A、数据值 B、数据长度 C、取值范围 D、以上都不是 13 以下不属于表之间定义关系的是 A)一对一关系B) 一对多关系C) 多对多关系D) 少对多关系 14 目前数据库有三种基本的数据模型是________ 。 A、层次模型、网络模型、关系模型 B、对象模型、网络模型、关系模型 网络模型、对象模型、层次模型D、层次模型、关系模型、对象模型 15 从“产品”表里查询出价格高于产品名称为“海天酱油”的产品的记录,此SQL 语句为 A、SELECT * FROM 产品WHERE 价格>海天酱油

Oracle数据库面试题目

Oracle常见面试题 1、对数据库SQL2005、ORACLE熟悉吗? SQL2005是微软公司的数据库产品。是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台。 ORACLE是ORACLE公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,一般用在大型公司。 2、能不能设计数据库?如何实现数据库导入与导出的更新 使用POWERDISINE工具的使用,一般满足第三范式就可以了。EXP与IMP数据库的逻辑导入与导出 3、如何只显示重复数据,或不显示重复数据 显示重复:select * from tablename group by id having count(*)>1 不显示重复:select * from tablename group by id having count(*)=1 4、什么是数据库的映射 就是将数据库的表与字段对应到模型层类名与属性的过程. 5、写分页有哪些方法,你一般用什么方法?用SQL语句写一个分页? 如何用存储过程写分页? 在SQLSERVER中使用TOP分页,在ORACLE中用ROWNUM,或分析函数 ROW_NUMBER 使用TOP: select top 20,n.* from tablename n minus select top 10,m.* from tablename m 使用分析函数: select * from (select n.*,row_number() over(order by columnname) num from tablename n) where num>=10 and num <=20; 使用过程时,只要将分页的范围用两个参数就可以实现。在ORACLE中,要将过程封装在包里,还要用动态游标变量才能实现数据集的返回。 6、ORACLE中左连接与右连接 左连接:LEFT JOIN 右连接:RIGHT JOIN select n.column,m.column from tablename1 n left join tablename2 m on n.columnname=m.columnname 用WHERE实现: select n.column,m.column from tablename1 n,tablename2 m where n.columnname(+)=m.columnname

Oracle数据库DBA面试题

数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复 操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换到spfile 解答:使用create spfile from pfile 命令 . 4. 解释data block , extent 和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一 个数据库对象拥有的所有extents被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1、DESCRIBE命令 2、包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment .而Delete是DML操作 , 需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的

sql数据库面试题及答案

sql数据库面试题及答案 【篇一:sql数据库经典面试题(笔试题)】 =txt>1.一道sql语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜负 2005-05-09 2 2 2005-05-10 1 2 ------------------------------------------ create table #tmp(rq varchar(10),shengfu nchar(1)) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,负) insert into #tmp values(2005-05-09,负) insert into #tmp values(2005-05-10,胜) insert into #tmp values(2005-05-10,负) insert into #tmp values(2005-05-10,负) 1)select rq, sum(case when shengfu=胜 then 1 else 0 end)胜,sum(case when shengfu=负 then 1 else 0 end)负 from #tmp group by rq 2) select n.rq,n.勝,m.負 from ( select rq,勝=count(*) from #tmp where shengfu=胜group by rq)n inner join (select rq,負=count(*) from #tmp where shengfu=负group by rq)m on n.rq=m.rq 3)select a.col001,a.a1 胜,b.b1 负 from (select col001,count(col001) a1 from temp1 where col002=胜group by col001) a,

相关文档
最新文档