视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
23、数据库工程师面试题(答案)
2025-10-03 14:45:26 责编:小OO
文档
考试时间:60分钟       开始时间:               结束时间:            日期:    年    月    日  

姓 名:                总分:100分                                         得 分:  

                                                            

一、填空题:(10空格,每空格3分,共30分)

1、SQL Server 2000中使用的数据库对象包括:    表     、    视图     、    存储过程     、    函数     、    存储过程     等。

2、存储过程是一个    完成特定功能     的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。

3、索引就一种特殊的   对数据库中表的一列或者多列特定排序的结构      ,数据库的搜索引擎可以利用它加速对数据的检索。

4、事务就是被绑定在一起作为一个      整体(单元)      的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会     回滚     到操作前状态,或者是上有个节点。

5、SQLServer2000中使用备份文件恢复数据库的写法是    RESTORE DATABASE XXXX FROM DISK = N'XXXX' 

二、简答题(每题5分,共30分)

ORACLE数据库中:

1.解释冷备份和热备份的不同点以及各自的优点 

热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。

2.你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

建控制文件,用带backup control file 子句的recover 命令恢复数据库。

3.如何转换init.ora到spfile?

使用create spfile from pfile 命令

4.解释data block , extent 和 segment的区别(这里建议用英文术语) 

data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.

5.给出两个检查表结构的方法 

1、DESCRIBE命令        

2、DBMS_METADATA.GET_DDL 包

6.怎样查看数据库引擎的报错s

alert log

三、SQL练习题(每题10分,共40分)

1.编写SQL,已知关系模式:

   s(s#,sname)

   c(c#,cname)

   sc(s#,c#,score)

1找出选修了c1课程的学员;

方案一:

SELECT *

FROM   s

WHERE  s# IN (SELECT s#

              FROM   sc

              WHERE  c# = 'c1')

方案二:

SELECT *

FROM   s

WHERE  EXISTS (SELECT *

               FROM   sc

               WHERE  sc.c# = 'c1'

                      AND sc.s# = s.s#) 

方案三: 

SELECT s.*

FROM   s,

       c,

       sc

WHERE  s.sno = sc.sno

       AND c.cno = sc.cno

       AND c.cname = 'c1'

2找出未选修c2课程的学员;

方案一:

SELECT *

FROM   s

WHERE  s# NOT IN (SELECT s#

                  FROM   sc

                  WHERE  c# = 'c2')

方案二:

SELECT *

FROM   s

WHERE  NOT EXISTS (SELECT *

                   FROM   sc

                   WHERE  sc.c# = 'c2'

                          AND sc.s# = s.s#)

方案三:

SELECT s.sname

FROM   s,

       c,

       sc

WHERE  s.sname = sc.sname

       AND c.cname = sc.cname

       AND c.cname NOT IN ( 'c1' ) 

3找出至少包含了s2选修了的课程的学员;

 SELECT * FROM sc a WHERE NOT EXISTS (SELECT * FROM sc b WHERE s#='s2' AND NOT EXISTS (SELECT * FROM sc c WHERE b.c#=c.c# AND a.s#=c.c#))

4找出选修了所有课程的学员.

SELECT s#

FROM   sc

GROUP  BY s#

HAVING Count(s#) = (SELECT Count(s#)

                    FROM   sc)

2、有订单表Order,单号字段RefNo VARCHAR(10),需要实现自动编号,格式为YYYYMMXXXX,其中XXXX为序号,如:2004050001,2004050002……2004059999等,采用SQL实现新订单编号的思路。

计算列   自定义函数都可以

 如何删除表中重复Name字段的数据,用SQL写出代码。

Select * from Temp

================

1A

2B

3B

4C

方案一:

DELETE FROM temp

WHERE  id = (SELECT Max(id)

             FROM   temp a

             WHERE  a.name = temp.name) 

 方案二:

WITH cte

     AS (SELECT Row_number()OVER(partition BY  Name ORDER BY ID) AS RN

         FROM   A)

DELETE FROM cte

WHERE  RN > 1

 找出当月的天数

SELECT Datediff(dd, Dateadd(dd, 1 - Day(Getdate()), Getdate()), Dateadd(mm, 1, Dateadd(dd, 1 - Day(Getdate()), Getdate()))) 下载本文

显示全文
专题