zoukankan      html  css  js  c++  java
  • 【转】数据库面试题

    本文整理自网络

    原文:https://zhuanlan.zhihu.com/p/26146000

    1.下面哪个用户不是Oracle缺省安装后就存在的用户(A)

    A、SYSDBA  B、SYSTEM   

    C、SCOTT   D、SYS

    解答:

    本题中,对于选项A,SYSDBA属于系统特殊权限,不属于用户,选项A的描述错误。所以,选项A正确。

    对于选项B,SYSTEM是系统默认用户,拥有DBA角色。所以,选项B错误。

    对于选项C,SCOTT用户属于测试用户。所以,选项C错误。

    对于选项D,SYS用户具有管理系统的最高权限,必须以SYSDBA来登录。所以,选项D错误。

    所以,本题的答案为A。

    2.学籍(学号,学生姓名) PK=学号

    成绩(科目号,成绩,学号) PK=科目代码,FK=学号

    已有表记录如下,能够插入成绩记录的是(BD)

    A、(1,99,5)   B、(5,68,1)   C、(3,70,7)  D、(7,45,NULL)

    解答:

    主键用来唯一地标识一条记录,主键不能有重复的记录,不允许为空,主键只能有一个,用来保证数据完整;表的外键是另一表的主键,外键可以有重复的,可以是空值,一个表可以有多个外键,用来和其它表建立联系用的。

    对于本题主要看外键列是否在主表中存在,若不存在,则报错:ORA-02291: integrity constraint (SYS.FK_XX) violated - parent key not found

    本题中,对于选项A,学号5在学籍表中不存在。所以,选项A错误。

    对于选项B,学号1在学籍表中存在。所以,选项B正确。

    对于选项C,学号7在学籍表中不存在。所以,选项C错误。

    对于选项D,外键列可以为空。所以,选项D正确。

    所以,本题的答案为B、D。

    3.下列关于NULL的描述中,不正确的是(D)

    A、当实际值是未知或没有任何意义时,可以使用NULL来表示它

    B、不要使用NULL来代表0,两者是不同的

    C、不要使用NULL来代替空格,两个是不同的

    D、算术表达式2000 + null结果等于2000

    NULL代表未知的,无意义,参与运算的结果为NULL。

    本题中,对于选项A,NULL表示未知,无意义。所以,选项A错误。

    对于选项B,NULL不代表0。所以,选项B错误。

    对于选项C,NULL不代表空格。所以,选项C错误。

    对于选项D,2000+NULL的结果为NULL。所以,选项D正确。

    所以,本题的答案为D。

    4.下列语句中使用了列别名,会导致错误的有(CD)(两个选项)

    A、SELECT EMPNO, ENAME, SAL*12 "Annual Salary" FROM EMP;

    B、SELECT EMPNO, ENAME, SAL*12 "AnnualSalary"  FROM EMP;

    C、SELECT EMPNO, ENAME, SAL*12 'Annual Salary' FROM EMP;

    D、SELECT EMPNO, ENAME, SAL*12 'AnnualSalary'  FROM EMP;

    E、SELECT EMPNO, ENAME, SAL*12   AnnualSalary   FROM EMP;

    若列的别名中含有空格,则用双引号括起来,不能使用单引号。

    本题中,对于选项A,别名中有空格,可以使用双引号。所以,选项A错误。

    对于选项B,别名中没有有空格,也可以使用双引号。所以,选项B错误。

    对于选项C和选项D,别名不能使用单引号括起来。所以,选项C、选项D正确。

    对于选项E,别名可以不加双引号。所以,选项E错误。

    所以,本题的答案为C、D。

    PS:以上选项在ORACLE中C/D是报错的,但是在SQL SERVER中5个都是可行的

    5.下列情况中,会导致Oracle事务结束的有(CE)(两个选项)

     A、PL/SQL块结束

     B、发出savepoint语句

     C、用户强行退出SQL*Plus

     D、发出SELECT语句

     E、发出commit或rollback语句

    事务结束可以采用COMMIT或ROLLBACK,若强行退出SQL*Plus,事务将自动回滚。

    本题中,对于选项A,PL/SQL块结束和事务是否结束没有关系。所以,选项A错误。

    对于选项B,SAVEPOINT不能结束事务。所以,选项B错误。

    对于选项C,用户强行退出SQL*Plus未提交的事务自动回滚。所以,选项C正确。

    对于选项D,SELECT语句不能结束事务。所以,选项D错误。

    对于选项E,COMMIT或ROLLBACK属于正常提交或回滚事务。所以,选项E正确。

    所以,本题的答案为C、E。

    6.下列对于视图的描述中,错误的是(D)

    A、视图可以限制对数据库的访问,因为视图可以选择性的显示数据库的一部分数据

    B、视图可以简化用户的查询,允许用户从多个表中检索数据而不需要知道基表是如何连接的

    C、可以通过视图实现对基表的DML操作

    D、在对视图执行DML操作时,可以不受基表的约束的限制

    本题中,对于选项A,视图可以有访问权限,但可以对基表没有访问权限,从而限制了数据库的访问。所以,选项A错误。

    对于选项B,由于视图可以是基于多个表的链接查询,所以,视图可以简化用户的查询,允许用户从多个表中检索数据而不需要知道基表是如何连接的。所以,选项B错误。

    对于选项C,简单的视图可以实现对基表的DML操作。所以,选项C错误。

    对于选项D,当视图执行DML操作时,同样受基于表上的约束的限制。所以,选项D正确。

    所以,本题的答案为D。

    Oracle中的约束包含主键约束、唯一约束、外键约束、条件约束、非空约束。

    TO_CHAR将日期转换为字符,TO_DATE将字符转换为日期格式。

    7.下列比较为真的有(A)

    A、TRUNC(123.56) = 123               

    B、TRUNC(123.56,1) = 123.6

    C、ROUND(123.56) = 123               

    D、ROUND(123.56,1) = 123.5

    本题考察的是TRUNC函数和ROUND函数的知识。其中,TRUNC函数的作用是舍去,不存在四舍五入的情况,ROUND函数截取的时候四舍五入

    本题中,对于选项A,计算结果为123。所以,选项A正确。

    对于选项B,保留一位小数,计算结果为123.5。所以,选项B错误。

    对于选项C,计算结果为124。所以,选项C错误。

    对于选项D,保留一位小数,计算结果为123.6。所以,选项D错误。

    所以,本题的答案为A。

    若数据库日志满了的话,则只能执行查询等读操作,不能执行更改、备份等写操作,原因是任何写操作都要记录日志。也就是说,基本上处于不能使用的状态。

    8.Oracle实例启动和关闭的信息记载到(A)中

    A、告警文件     

    B、后台进程跟踪文件    

    C、服务器进程跟踪文件    

    D、参数文件

    数据库启动和关闭的信息记录在告警日志里。

    本题中,对于选项A,Oracle实例启动和关闭的信息记载到告警文件。所以,选项A正确。

    对于选项B,后台跟踪文件记录的是数据库后台进程信息。所以,选项B错误。

    对于选项C,服务器进程跟踪的是用户的进程信息。所以,选项C错误。

    对于选项D,参数文件记录的是数据库的参数。所以,选项D错误。

    所以,本题的答案为A。

    从客户端通过SQL*Plus登陆Oracle某个特定用户,必须要提供的信息有:用户名、口令、本地服务名(如sqlplus user/password@tns_name)

     

    Oracle的进程比较多,常用的有如下几类:

    (1)数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件。

    (2)监控进程(pmon):负责在一个Oracle进程失败时清理资源。

    (3)归档进程(arcn):在每次日志切换时把已满的日志组进行备份或归档。

    (4)系统监控(smon):检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复。

    (5)检查点进程(ckpt):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

    (6)恢复进程(reco):保证分布式事务的一致性,在分布式事务中,要么同时COMMIT,要么同时ROLLBACK。

    (7)作业调度器(cjq):负责将调度与执行系统中已定义好的JOB,完成一些预定义的工作。

    (8)日志写进程(lgwr):将REDO日志缓冲区中的更改写入在线REDO日志文件。

    数据库中的数据通常可分为用户数据系统数据两部分,其中系统数据就可以称为数据字典。数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述。其目的是对数据流程图中的各个元素做出详细的说明数据字典可以分为主动和被动数据字典。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。数据字典包括对数据库的描述信息、数据库的存储管理信息、数据库的控制信息、用户管理信息和系统事务管理信息等,所以数据字典也可以称为系统目录

    E-R模型是一种用图形表示数据及其联系的方法,所使用的图形构件包括矩形、菱形、椭圆形和连接线。其中,矩形表示实体,矩形框内写上实体名。菱形表示联系,菱形框内写上联系名。椭圆形表示属性,椭圆形框内写上属性名。连接线表示实体,联系与属性之间的所属关系,或实体与联系之间的相连关系。

    9.删除STUDENT表的DEPT列,但是只有在没有视图或约束引用该列时才能执行删除,否则拒绝删除。正确表述上述需求的SQL语句是下列哪一个?(A)

    A、ALTER TABLE STUDENT DROP DEPT RESTRICT;

    B、ALTER TABLE STUDENT DELETE DEPT RESTRICT;

    C、ALTER TABLE STUDENT DROP DEPT CASCADE;

    D、ALTER TABLE STUDENT DELETE DEPT CASCADE;

    删除列使用DROP,排除B和D,有约束存在的时候使用RESTRICT,所以答案为A。

  • 相关阅读:
    Update语句到底是如何操作记录的?
    sp_helptext输出错行问题解决
    SSMS查询快捷方式设置
    快速定义临时表或表变量
    T-SQL逻辑查询
    基于交换的排序算法
    插入排序及其扩展
    Python之django基础第一天,认识django
    flask虚拟环境的安装和注意事项
    Linux基础
  • 原文地址:https://www.cnblogs.com/xphdbky/p/6894908.html
Copyright © 2011-2022 走看看