SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)

上传人:e****s 文档编号:243717941 上传时间:2024-09-29 格式:PPT 页数:42 大小:965KB
返回 下载 相关 举报
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第1页
第1页 / 共42页
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第2页
第2页 / 共42页
SQL与Oracle数据库技术企业面试题(北大青鸟内部整理)_第3页
第3页 / 共42页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,企业面试题,SQL,与,Oracle,数据库,技术,1,1、怎样在一个Update语句中使用表 B 的数据更新表 A 的记录?,使用子查询,2,2、 SQL Server 数据库运行一段时间后,日志文件很大,如何清理 日志文件数据?,先备份数据库,然后删除或别离原数据库,用备份文件复原数据库,这样便能清理所有日志文件的数据了。,3,3、在我们的开发环境下,每个人都有系统管理员sa密码,5个组使用一个数据库。在某个开发人员不小心删除了数据后,我没有方法确定谁删除哪一块数据。当开发人员更新数据库中的数据时,如何审核工作站或登录ID?,因为您工作于开发环境下,使用SQL事件探查器和效劳器跟踪所带来的性能损失并不会影响生产环境,所以您可以设置一个效劳器跟踪,在后台将信息记录在一个表中。然后,您可以搜索该表以确定谁删除了数据。,4,4、SQL Server 怎么升级锁?,SQL Server,使用锁来保持事务在数据库内部的完整性和一致性。,SQL Server,支持具有不同粒度的多种锁类型。例如,行锁是一个高级锁,而页锁是一个低级锁。,SQL Server,自动将大量的高级锁升级为少量的低级锁,从而降低系统开销,但同时也可能导致应用程序内不可预测的阻塞,。,5,5、在使用SQL事件探查器监视我的SQL Server数据库时,我定期收到“Error: 602, Severity: 21, State: 13信息。在SQL Server企业管理器的进程信息窗口中,我找到了一个名为“Ghost Record Cleanup幻影记录去除的后台进程,并且该命令由用户系统所引发。我使用DBCC CHECKDB检查我的数据库,但是没有发现任何异常。请问什么是Ghost Record Cleanup进程?什么是602错误消息?,在从数据库中删除行、页或扩展盘区时,SQL Server会将这些对象标记为“幻影表示删除操作有待执行,并在稍后使用后台任务去除这些对象,该进程就是Ghost Record Cleanup。Ghost Record Cleanup改善了Delete命令的性能,因为SQL Server无需立即执行物理去除操作。,6,6、sysindexes索引表中的很多条目并不是我自己创立的。听说它们并不是真正的索引,而是SQL Server查询优化器自动创立的统计。怎样才能识别哪些是真正的索引,哪些是SQL Server自动创立的统计呢?,按照默认设置,如果表中的某列没有索引,那么SQL Server会自动为该列创立统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创立的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创立的统计的前缀为_WA_Sys。,7,7、sysindexes索引表中的很多条目并不是我自己创立的。听说它们并不是真正的索引,而是SQL Server查询优化器自动创立的统计。怎样才能识别哪些是真正的索引,哪些是SQL Server自动创立的统计呢?,按照默认设置,如果表中的某列没有索引,那么SQL Server会自动为该列创立统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创立的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创立的统计的前缀为_WA_Sys。,8,8、使用SQL Server 2000 Enterprise Edition企业版能给我带来什么好处?,SQL Server 2000 Enterprise Edition具有几个独一无二的特性,包括访问大于2GB的内存的能力、对故障恢复群集的支持以及分布式分区视图aka 联合数据库效劳器。但是,就算您不需要这些特性,企业版也可以为您带来一些性能上的优化。例如,SQL Server Enterprise Edition可以根据可用的内存数量动态调整预读readahead页面的最大数量;预读页面的数量在其它任何版本的SQL Server 2000中都是固定不变的。而且只有SQL Server 2000 Enterprise Edition能让多个任务共享全表扫描。,9,9、在我观察 Enterprise Manager,或者对某个特殊的数据库运行“sp_helpdb的时候,数据库的拥有者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 用户还是 sa?如果 Windows NT 用户是拥有者,我如何才能将 dbo 改变为 sa ?,sa 帐户总是会被映射到 dbo 上,即使 sa 并不是数据库的真正拥有者。dbo 帐户注册于 master 数据库的 sysdatabases 系统表中,这正如 sp_helpdb 系统存储过程显示的一样。你可以将dbo 从 Windows NT 改变为 sa 实现这一目的的最快方法是首先别离detach该数据库,然后以 sa 身份重新连接该数据库。,10,10、我尝试将数据库备份到网络共享资源上的一个文件中,并将其恢复到另一台效劳器上。我试图通过以下语句借助net use命令在目标效劳器上创立共享资源:,NET USE * PS5C /USER:ONEDEVdomain id password /PERSISTENT:NO,然而,系统却始终返回消息“无法获得尚未分配的可用驱动器盘符。此时,SQL Server企业管理器明明显示出许多可用驱动器。请问我应如何解决这一问题?,您只需直接使用统一命名约定UNC路径来备份您的数据库。SQL Server并非按照与用户相同的方式来看待映射驱动器盘符。您需要在您的共享资源PS5C上为SQL Server效劳帐号授予完整的访问权限,创立一个新的共享资源,或使SQL Server效劳帐号成为名为PS5的计算机上的管理员组成员。,11,11、如何将数据库事务日志移动到不同的驱动器上?,可以通过用于别离与附加数据库的存储过程来移动事务日志,如果要将 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 上:,- 附加数据文件、日志文件,EXEC sp_attach_db pubs, d:mssql7datapubs.mdf, d:mssql7datapubs_log.ldf,12,12、如何将数据库事务日志移动到不同的驱动器上?,可以通过用于别离与附加数据库的存储过程来移动事务日志,如果要将 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 上:,- 附加数据文件、日志文件,EXEC sp_attach_db pubs, d:mssql7datapubs.mdf, d:mssql7datapubs_log.ldf,13,13、如何将数据库事务日志移动到不同的驱动器上?,可以通过用于别离与附加数据库的存储过程来移动事务日志,如果要将 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 上:,- 附加数据文件、日志文件,EXEC sp_attach_db pubs, d:mssql7datapubs.mdf, d:mssql7datapubs_log.ldf,14,14、触发器的作用?,触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。,15,15、什么是存储过程?用什么来调用?,存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创立一次,以后在该程序中就可以调用屡次。如果某次操作需要执行屡次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。,16,16、索引的作用?和它的优点缺点是什么?,索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创立索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。,17,17、什么是内存泄漏?,一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创立对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否那么就说该内存就不能被使用,我们就说该内存被泄漏了。,18,18、什么是内存泄漏?,一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创立对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否那么就说该内存就不能被使用,我们就说该内存被泄漏了。,19,19、维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?,我是这样做的,尽可能使用约束,如,check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。,20,20、什么是事务?什么是锁?,事务,-,就是被绑定在一起作为一个逻辑工作单元的,SQL,语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过,ACID,测试,即原子性,一致性,隔离性和持久性。,锁,-,在所以的,DBMS,中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。,21,21、什么叫视图?游标是什么?,视图 - 是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响根本表。它使得我们获取数据更容易,相比多表查询。,游标 - 是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。,22,22,、有一个数据表,pages,,有四个字段,id,、,url,、,title,、,body,里面储存了很多网页信息。,url,网页的链接地址,title,网页的标题,body,网页的内容,先要求您写一个,SQL,将,url,匹配的排在最前,,title,匹配的其次,,body,匹配最后,SELECT * FROM page WHERE url like %baidu% or title like %baidu% or 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 page WHERE,page.body LIKE %baidu%) AS a ORDER BY mark DESC,23,23、用一条SQL语句 查询出每门课都大于 80 分的学生姓名,name,kecheng,fenshu,张三,语文,81,张三,数学,75,李四,语文,76,李四,数学,90,王五,语文,81,王五,数学,100,王五,英语,90,SELECT DISTINCT,name,FROM,table,WHERE,name,NOT IN,(,SELECT DICTINCT,name,FROM,table,WHERE,fenshu = 80),24,24、删除学生表除了自动编号不同,其他都相同的学生冗余信息,学生表如下:,标识列,学号,姓名,课程编号,课程名称,分数,1,2005001,张三,0001,数学,69,2,2005002,李四,0001,数学,89,3,2005001,张三,0001,数学,69,DELETE,学生表,WHERE,标识列,NOT IN,(,SELECT MIN,(自动编号),FROM,学生表,GROUP BY,学号, 姓名, 课程编号, 课程名称, 分数),25,25、表 department 里面只有一个 name 字段,有 4 条纪录,分别是 a,b,c,d 对应四个球队。现在四个球队进行比赛,用一条 SQL 语句显示所有可能的比赛组合。,SELECT,a.name, b.name,FROM,team a, team b,WHERE,a.name b,THEN,a,ELSE,b,END,),(,CASE WHEN,b c,THEN,b,ELSE,c,END,),FROM,table_name,28,28、请取出 tb_send 表中日期SendTime 字段为当天的所有记录 (SendTime 字段为 datetime 型,包含日期与时间)?,SELECT,*,FROM,tb,WHERE,DATEDIFF,(dd, SendTime,GETDATE,(),=,0,29,29、有一张表,里面有3个字段:语文,数学,英语。其中有 3 条记录分别表示语文 70 分,数学 80 分,英语 58 分,请用一条 SQL 语句查询出这三条记录并按以下条件显示出来,大于或等于 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,成绩表,30,30、在 SQL Server 2000 中下面创立的临时表1和临时表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 都消失的时候,它也自动删除,31,31、下表中包含大量的记录,但主键 Id 不重复 ,如何快速删除表中的重复记录?,Id,Title,Hyperlink,Description,1,A,A,A,2,B,B,B,3,C,C,C,10000,ABCDE,ABCDE,ABCDE,创立新表 B,用于存放记录,新表 A 结构与旧表 A 相同。,在新表中为 Title、Hyperlink、Description 列,创立组合索引,设置该索引为唯一索引,并忽略重复键,将旧表 A 的数据利用 INSERT INTO SELECT 插入到新表 B 中,删除旧表 A,将新表 B 重名为旧表的名称 A,32,32、简述 SQL Server 系统自带的 master、model、msdb、tempdb 数据库,分别有什么用途?,master 数据库,是 SQL Server 系统最重要的数据库,它记录了 SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server 的初始化信息和其他系统数据库及用户数据库的相关信息。因此,如果 master 数据库不可用,那么 SQL Server 无法启动。在 SQL Server 2005 中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中。,model 数据库用,作在 SQL Server 实例上创立的所有数据库的模板。因为每次启动 SQL Server 时都会创立 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。当发出 CREATE DATABASE创立数据库语句时,将通过复制 model 数据库中的内容来创立数据库的第一局部,然后用空页填充新数据库的剩余局部。 如果修改 model 数据库,之后创立的所有数据库都将继承这些修改。例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。,msdb数据库,是代理效劳数据库,为其报警、任务调度和记录操作员的操作提供存储空间。,tempdb,数据库,是一个临时数据库,它为所有的临时表、临时存储过程及其他临时操作提供存储空间。,Tempdb,数据库由整个系统的所有数据库使用,不管用户使用哪个数据库,他们所建立的所有临时表和存储过程都存储在,tempdb,上。,SQL Server,每次启动时,,tempdb,数据库被重新建立。当用户与,SQL Server,断开连接时,其临时表和存储过程自动被删除。,33,33、能不能在 SQL Server 上的视图,执行 DELETE、UPDATE、INSERT 等数据操作?假设能要遵守的原那么是什么?,可以执行 DELETE、UPDATE、INSERT 等操作,遵守的原那么是:原表原行原列,34,34、创立索引时,我们可以为其指定“填充因子,简述“填充因子的用途?,在创立聚集索引时,表中的数据按照索引列中的值的顺序存储在数据库的数据页中。在表中插入新的数据行或更改索引列中的值时,Microsoft SQL Server 可能必须重新组织表中的数据存储,以便为新行腾出空间,保持数据的有序存储。这同样适用于非聚集索引。添加或更改数据时,SQL Server 可能不得不重新组织非聚集索引页中的数据存储。向一个已满的索引页添加某个新行时,SQL Server 把大约一半的行移到新页中以便为新行腾出空间。这种重组称为页拆分。页拆分会降低性能并使表中的数据存储产生碎片。,35,35、简述“聚集索引和“非聚集索引的不同点?,聚集索引确定表中数据的物理顺序。聚集索引类似于 簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列组合索引,就像 簿按姓氏和名字进行组织一样。,36,36、解释 TRUNCATE TABLE 删除数据的特点?,TRUNCATE TABLE,删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。,TRUNCATE TABLE,是不能回滚的,是不可恢复的操作,用了这个命令后就收回了表空间。要清空一个非常大的表时,TRUNCATE,要高效的多,与表中的数据量没什么关系。,37,37、创立索引的原那么是什么?,推荐创立索引的情形,在经常用来检索的列上创立索引如经常在 WHERE 子句出现的列,在表的主键、外键上创立索引,在经常用于表间连接的字段上建立索引,不推荐创立索引的情形,在查询中几乎不涉及的列,很少有唯一值的列即包含太多重复值的列,如性别字段,数据类型为 TEXT、NTEXT 或 IMAGE 的列,只有较少行数的表没有必要创立索引,当写的性能比查询更为重要时,应少建或不见索引,38,38、表联接分为几种?,内连接,INNER JOIN,外连接,LEFT JOIN,、,RIGHT JOIN,完全联接,FULL JOIN,交叉联接,CROSS JOIN,自联接,39,39、磁盘柜上有14块73G的磁盘, 数据库为200G 大小包括日志文件,如何设置磁盘要说明这14磁盘是怎么用的?,首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能读/写要求。来决定raid的级别。,如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用raid0+1,这样可使用的磁盘容量为:14*73*50%=511G。,如果读/写性能要求不高,而且还比较抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。,至于如何使用应该是说数据库物理文件的部署。注意说出将tempdb,data file,log file分开存放以减少I/O竞争即可。其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。,40,40、自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程?,一般自定义函数主要用于其他 SQL 中的调用,如:,SELECT 自定义函数(.) FROM 数据表,这种情况下,一般只能通过函数实现。,存储过程的功能要远远强于函数,例如动态执行SQLsp_executesql的使用和一些特殊的功能,自定义函数中是不支持的,只能用存储过程实现。,41,谢 谢!,42,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!