SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第1页
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第2页
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第3页
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第4页
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、企业面试题SQL与Oracle数据库技术11、怎样在一个Update语句中使用表 B 的数据更新表 A 的记录? 使用子查询22、 SQL Server 数据库运行一段时间后,日志文件很大,如何清理 日志文件数据? 先备份数据库,然后删除或别离原数据库,用备份文件复原数据库,这样便能清理所有日志文件的数据了。33、在我们的开发环境下,每个人都有系统管理员sa密码,5个组使用一个数据库。在某个开发人员不小心删除了数据后,我没有方法确定谁删除哪一块数据。当开发人员更新数据库中的数据时,如何审核工作站或登录ID?因为您工作于开发环境下,使用SQL事件探查器和效劳器跟踪所带来的性能损失并不会影响生产环

2、境,所以您可以设置一个效劳器跟踪,在后台将信息记录在一个表中。然后,您可以搜索该表以确定谁删除了数据。 44、SQL Server 怎么升级锁? SQL Server使用锁来保持事务在数据库内部的完整性和一致性。SQL Server支持具有不同粒度的多种锁类型。例如,行锁是一个高级锁,而页锁是一个低级锁。SQL Server自动将大量的高级锁升级为少量的低级锁,从而降低系统开销,但同时也可能导致应用程序内不可预测的阻塞。55、在使用SQL事件探查器监视我的SQL Server数据库时,我定期收到“Error: 602, Severity: 21, State: 13信息。在SQL Server

3、企业管理器的进程信息窗口中,我找到了一个名为“Ghost Record Cleanup幻影记录去除的后台进程,并且该命令由用户系统所引发。我使用DBCC CHECKDB检查我的数据库,但是没有发现任何异常。请问什么是Ghost Record Cleanup进程?什么是602错误消息? 在从数据库中删除行、页或扩展盘区时,SQL Server会将这些对象标记为“幻影表示删除操作有待执行,并在稍后使用后台任务去除这些对象,该进程就是Ghost Record Cleanup。Ghost Record Cleanup改善了Delete命令的性能,因为SQL Server无需立即执行物理去除操作。 66

4、、sysindexes索引表中的很多条目并不是我自己创立的。听说它们并不是真正的索引,而是SQL Server查询优化器自动创立的统计。怎样才能识别哪些是真正的索引,哪些是SQL Server自动创立的统计呢? 按照默认设置,如果表中的某列没有索引,那么SQL Server会自动为该列创立统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创立的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创立的统计的前缀为_WA_Sys。 77、sysindexes索引表中的很多条目并不是我自己创立的。听说它们并不是真正的索引

5、,而是SQL Server查询优化器自动创立的统计。怎样才能识别哪些是真正的索引,哪些是SQL Server自动创立的统计呢? 按照默认设置,如果表中的某列没有索引,那么SQL Server会自动为该列创立统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创立的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创立的统计的前缀为_WA_Sys。 88、使用SQL Server 2000 Enterprise Edition企业版能给我带来什么好处? SQL Server 2000 Enterprise Editio

6、n具有几个独一无二的特性,包括访问大于2GB的内存的能力、对故障恢复群集的支持以及分布式分区视图aka 联合数据库效劳器。但是,就算您不需要这些特性,企业版也可以为您带来一些性能上的优化。例如,SQL Server Enterprise Edition可以根据可用的内存数量动态调整预读readahead页面的最大数量;预读页面的数量在其它任何版本的SQL Server 2000中都是固定不变的。而且只有SQL Server 2000 Enterprise Edition能让多个任务共享全表扫描。 99、在我观察 Enterprise Manager,或者对某个特殊的数据库运行“sp_helpd

7、b的时候,数据库的拥有者dbo显示为某个Microsoft Windows NT 的用户,而且该用户并没有添加到SQL Server 7.0效劳器的登录当中。该 Windows NT用户是 Windows NT 本地管理员组的成员。但是,运行以下 Transact-SQL 语句时: EXEC sp_helpuser 结果显示:系统管理员sa帐户映射到了这个用户 dbo 上,对我来说,这意味着s a 就是 dbo 因此,执行以下语句:EXEC sp_changedbowner sa 将失败,因为 SQL Server认为 dbo 就是数据库的拥有者。究竟谁是数据库的拥有者Windows NT 用

8、户还是 sa?如果 Windows NT 用户是拥有者,我如何才能将 dbo 改变为 sa ? sa 帐户总是会被映射到 dbo 上,即使 sa 并不是数据库的真正拥有者。dbo 帐户注册于 master 数据库的 sysdatabases 系统表中,这正如 sp_helpdb 系统存储过程显示的一样。你可以将dbo 从 Windows NT 改变为 sa 实现这一目的的最快方法是首先别离detach该数据库,然后以 sa 身份重新连接该数据库。1010、我尝试将数据库备份到网络共享资源上的一个文件中,并将其恢复到另一台效劳器上。我试图通过以下语句借助net use命令在目标效劳器上创立共享资

9、源: NET USE * PS5C /USER:ONEDEVdomain id password /PERSISTENT:NO 然而,系统却始终返回消息“无法获得尚未分配的可用驱动器盘符。此时,SQL Server企业管理器明明显示出许多可用驱动器。请问我应如何解决这一问题? 您只需直接使用统一命名约定UNC路径来备份您的数据库。SQL Server并非按照与用户相同的方式来看待映射驱动器盘符。您需要在您的共享资源PS5C上为SQL Server效劳帐号授予完整的访问权限,创立一个新的共享资源,或使SQL Server效劳帐号成为名为PS5的计算机上的管理员组成员。1111、如何将数据库事务日

10、志移动到不同的驱动器上? 可以通过用于别离与附加数据库的存储过程来移动事务日志,如果要将 pubs 数据库从 C 驱动器移动到 D 驱动器,如下: - 别离数据库EXEC sp_detach_db pubs 将 pubs.mdf 与 pubs_log.ldf 文件拷贝到目标驱动器上: - 复制数据文件、日志文件到不同的目录下copy c:mssql7datapubs.mdf d:mssql7datacopy c:mssql7datapubs_log.ldf d:mssql7data 使用 sp_ attach_db 存储过程将数据重新附件到 SQL Server 上: - 附加数据文件、日志文

11、件EXEC sp_attach_db pubs, d:mssql7datapubs.mdf, d:mssql7datapubs_log.ldf 1212、如何将数据库事务日志移动到不同的驱动器上? 可以通过用于别离与附加数据库的存储过程来移动事务日志,如果要将 pubs 数据库从 C 驱动器移动到 D 驱动器,如下: - 别离数据库EXEC sp_detach_db pubs 将 pubs.mdf 与 pubs_log.ldf 文件拷贝到目标驱动器上: - 复制数据文件、日志文件到不同的目录下copy c:mssql7datapubs.mdf d:mssql7datacopy c:mssql7

12、datapubs_log.ldf d:mssql7data 使用 sp_ attach_db 存储过程将数据重新附件到 SQL Server 上: - 附加数据文件、日志文件EXEC sp_attach_db pubs, d:mssql7datapubs.mdf, d:mssql7datapubs_log.ldf 1313、如何将数据库事务日志移动到不同的驱动器上? 可以通过用于别离与附加数据库的存储过程来移动事务日志,如果要将 pubs 数据库从 C 驱动器移动到 D 驱动器,如下: - 别离数据库EXEC sp_detach_db pubs 将 pubs.mdf 与 pubs_log.ld

13、f 文件拷贝到目标驱动器上: - 复制数据文件、日志文件到不同的目录下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 1414、触发器的作用? 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据

14、的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 1515、什么是存储过程?用什么来调用? 存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创立一次,以后在该程序中就可以调用屡次。如果某次操作需要执行屡次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。1616、索引的作用?和它的优点缺点是什么? 索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要

15、的数据。索引可以是唯一的,创立索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。 1717、什么是内存泄漏?一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创立对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否那么就说该内存就不能被使用,我们就说该内存被泄漏了。1818、什么是内存泄漏?一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创立对象时,

16、就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否那么就说该内存就不能被使用,我们就说该内存被泄漏了。1919、维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。2020、什么是事务?什么是锁?事务 - 就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被

17、失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。锁 - 在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。2121、什么叫视图?游标是什么?视图 - 是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响根本表。它使得我们获取数据更容易,相比多表查询。游标

18、- 是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。2222、有一个数据表 pages,有四个字段 id、url、title、body 里面储存了很多网页信息。url 网页的链接地址title 网页的标题body 网页的内容先要求您写一个 SQL 将 url 匹配的排在最前,title 匹配的其次,body 匹配最后SELECT * FROM page WHERE url like %baidu% or title like %baidu% or

19、like ORDER BY CHARINDEX(baidu, url) DESC, CHARINDEX(baidu, title) DESC, CHARINDEX(baidu, body) DESC SELECT a.id,a.mark FROM( SELECT page.id,100 AS mark FROM page WHERE page.url LIKE %baidu%UNION SELECT page.id,50 AS mark FROM page WHERE page.title LIKE %baidu% UNION SELECT page.id,10 AS mark FROM pa

20、ge WHERE page.body LIKE %baidu%) AS a ORDER BY mark DESC 2323、用一条SQL语句 查询出每门课都大于 80 分的学生姓名 namekechengfenshu张三 语文81张三 数学75李四 语文76李四 数学90王五 语文81王五 数学100王五 英语90SELECT DISTINCT name FROM table WHERE name NOT IN(SELECT DICTINCT name FROM table WHERE fenshu = 80) 2424、删除学生表除了自动编号不同,其他都相同的学生冗余信息,学生表如下: 标识

21、列学号姓名课程编号课程名称分数12005001张三0001数学6922005002李四0001数学8932005001张三0001数学69DELETE 学生表 WHERE 标识列 NOT IN(SELECT MIN(自动编号) FROM 学生表 GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数)2525、表 department 里面只有一个 name 字段,有 4 条纪录,分别是 a,b,c,d 对应四个球队。现在四个球队进行比赛,用一条 SQL 语句显示所有可能的比赛组合。SELECT , FROM team a, team b WHERE a.na

22、me b THEN a ELSE b END), (CASE WHEN b c THEN b ELSE c END)FROM table_name2828、请取出 tb_send 表中日期SendTime 字段为当天的所有记录 (SendTime 字段为 datetime 型,包含日期与时间)?SELECT * FROM tb WHERE DATEDIFF(dd, SendTime, GETDATE() = 02929、有一张表,里面有3个字段:语文,数学,英语。其中有 3 条记录分别表示语文 70 分,数学 80 分,英语 58 分,请用一条 SQL 语句查询出这三条记录并按以下条件显示出来

23、,大于或等于 80 表示优秀,大于或等于 60 表示及格,小于 60 分表示不及格,格式如下:语文数学英语及格优秀不及格SELECT (CASE WHEN 语文 = 80 THEN 优秀 WHEN 语文 = 60 THEN 及格 ELSE 不及格) AS 语文,(CASE WHEN 数学 = 80 THEN 优秀 WHEN 数学 = 60 THEN 及格 ELSE 不及格) AS 数学,(CASE WHEN 英语 = 80 THEN 优秀 WHEN 英语 = 60 THEN 及格 ELSE 不及格) AS 英语,FROM 成绩表3030、在 SQL Server 2000 中下面创立的临时表1

24、和临时表2两者区别。CREATE TABLE #临时表1(Id INT IDENTITY PRIMARY KEY,Value INT NOT NULL)CREATE TABLE #临时表2(Id INT IDENTITY PRIMARY KEY,Value INT NOT NULL)用户临时表只对创立这个表的用户的 Session 可见,对其他进程是不可见的.当创立它的进程消失时这个临时表就自动删除全局临时表对整个SQL Server 实例都可见,但是所有访问它的 Session 都消失的时候,它也自动删除3131、下表中包含大量的记录,但主键 Id 不重复 ,如何快速删除表中的重复记录?Id

25、TitleHyperlinkDescription1AAA2BBB3CCC10000ABCDEABCDEABCDE创立新表 B,用于存放记录,新表 A 结构与旧表 A 相同。在新表中为 Title、Hyperlink、Description 列,创立组合索引设置该索引为唯一索引,并忽略重复键将旧表 A 的数据利用 INSERT INTO SELECT 插入到新表 B 中删除旧表 A,将新表 B 重名为旧表的名称 A3232、简述 SQL Server 系统自带的 master、model、msdb、tempdb 数据库,分别有什么用途?master 数据库是 SQL Server 系统最重要的

26、数据库,它记录了 SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server 的初始化信息和其他系统数据库及用户数据库的相关信息。因此,如果 master 数据库不可用,那么 SQL Server 无法启动。在 SQL Server 2005 中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中。model 数据库用作在 SQL Server 实例上创立的所有数据库的模板。因为每次启动 SQL Server 时都会创立 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。当发出 C

27、REATE DATABASE创立数据库语句时,将通过复制 model 数据库中的内容来创立数据库的第一局部,然后用空页填充新数据库的剩余局部。 如果修改 model 数据库,之后创立的所有数据库都将继承这些修改。例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。msdb数据库 是代理效劳数据库,为其报警、任务调度和记录操作员的操作提供存储空间。 tempdb 数据库是一个临时数据库,它为所有的临时表、临时存储过程及其他临时操作提供存储空间。Tempdb 数据库由整个系统的所有数据库使用,不管用户使用哪个数据库,他们所建立的所有临时表和存储过程都存储在 tempdb 上。SQ

28、L Server 每次启动时,tempdb 数据库被重新建立。当用户与 SQL Server 断开连接时,其临时表和存储过程自动被删除。 3333、能不能在 SQL Server 上的视图,执行 DELETE、UPDATE、INSERT 等数据操作?假设能要遵守的原那么是什么?可以执行 DELETE、UPDATE、INSERT 等操作,遵守的原那么是:原表原行原列3434、创立索引时,我们可以为其指定“填充因子,简述“填充因子的用途?在创立聚集索引时,表中的数据按照索引列中的值的顺序存储在数据库的数据页中。在表中插入新的数据行或更改索引列中的值时,Microsoft SQL Server 可能

29、必须重新组织表中的数据存储,以便为新行腾出空间,保持数据的有序存储。这同样适用于非聚集索引。添加或更改数据时,SQL Server 可能不得不重新组织非聚集索引页中的数据存储。向一个已满的索引页添加某个新行时,SQL Server 把大约一半的行移到新页中以便为新行腾出空间。这种重组称为页拆分。页拆分会降低性能并使表中的数据存储产生碎片。 3535、简述“聚集索引和“非聚集索引的不同点? 聚集索引确定表中数据的物理顺序。聚集索引类似于 簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列组合索引,就像 簿按姓氏和名字进行组织一样。 3636、解释 TRUNCATE T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论