数据库笔试面试题及答案解析(一)
整理了个人在准备笔试面试过程中的一些基础知识及错题解析。Dcl数据控制语言,如 commit、 rollback、 grant、 revoke等grant:授权。回收授权什么是事务、特点、在 Oracle中具体的应用?事务是数据库中最小的一个逻辑工作单元特点:ACID,分别指事务的原子性:就是事务所包含的数据库操作要么都做,要么都不做;事务的一致性:是事务原子性的体现,事务所对应的数据库操作要么成功要么失败没冇第三种情况。事务不管是提交成功与否都不能影响数据库数据的一致性状态事务的隔离性:事务对数据的操作不能够受到其他事务的影响;事务的持续性:也就是说事务对数据的影响是永久的。在 oracle中已 commit或 rollback作为上个事务的结束标志及下一个新事物开始的标忐Truncate与 delete的区别?delete一般用于删除少量记录的操作,而且它是要使用回滚段并且要进行显示的提交事务。而 truncate则使用于大量删除数据,而且隐式提交事务,其速度要比使用 delete快的1). Truncate和 delete都可以将数据实体删掉, truncate的操作并不记录到rollback口志,所以操作速度较快,但同时这个数据不能恢复2). Delete操作不腾出表空问的空间3) Truncate不能对视图等进行删除4). Truncate是数据定义语言(DDL),而 delete是数据操纵语言(DML)Oracle使用什么语句给用户分配权限?GRANT权限列表TO用户。ER模型的组成包括那些元素(实体)(属性)关系)如果指定参照完整性的删除规则为"级联",则当删除父表中的记录吋A:系统自动备份父表中被删除记录到一个新表中B:若子表中有相关记录,则禁止删除父表中记录C:会自动删除了表中所有相关记录D:不作参照完整性检查,删除父表记录与子表无关参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。参照完整性又称引用完整性参照冗整性是关系模型的完整约朿之一,属于数据完整性的一种,其余还有:实体完整性、用户自定义完整性。“级联”的含义是()。更新父表中的连接字段值时,用新的连接字段值自动修改字表中的所有相关记录实体(行)完整性:实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为NulI且不能有相同值。定义表中的所有行能唯一的标识,般用主键,唯一索引 unique关键字,及 identity属性比如说我们的身份证号码,可以唯一标识一个人参照完整性:参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。参考完整性维护表问数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现还可以用触发器来维护参考完整性川户自定义完整性:用户白定义完整性指针对某一具体关系数据库的约束条件,它反映某一具休应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范闱在0100之间等。任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的唯一约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。不同的应用有着不同的具休要求,这些约東条件就是用户根据需要自己定义的。对于这类完整性,关系模型只提供定乂和检验这类完整性的机制,以使用户能够满足自己的需求,而关系模型自身并不去定义任何这类完整性规则。设有两个数据库表,父表和子表之间是一对多的联系,为控制了表和父表的关联,可以设置"参照完整性规则",为此要求这两个表(B)A:在父表连接字段上建立普通索引,在子表连接字段上建立主索引B:在父表连接字段上建立主索引,在子表连接字段上建立普通索引C:在父表连接字段上不需要建立任何索引,在子表连接字段上建立普通索引D:在父表和子表的连接字段上都要建立主索引数据库系统中采用封锁技术的目的是为了保证(A)?数据的一致性B.数据的可靠性C.数据的完整性D.数据的安全性封锁技术锁分为两种:一种是排他型锁(X锁),另一种是共享型锁(S锁)排他锁:若事务T对数据对象A加上ⅹ锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的所。直到T释放A上的锁。可见X锁只允许一个事务独锁某个数据,具有排他性。2、共享锁:若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加上S锁,这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A进行任何修改。(允许并发读,但不允许修改。)封锁协议1、一级封锁协议:事务在修改数据A之前必须先对其加ⅹ锁,直到事务结束才释放。一级封锁协议可以解决丢失更新问题。(事务结束包括正常结束( COMMIT)和非正常结束( ROLLBACK))2、二级封锁协议:在一级封锁协议的基础上,加上事务T在读数据A之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议可以解决读“脏数据的问题。3、三级封锁协议:在一级封锁协议的基础上,加上事务T在读数据A之前必须先对其加S锁,直到事务结朿时释放S锁。三级封锁协议除了防止丢失更新和读“脏”数据外,还进一步防止了不可重复读。在数据库设计中,表小用户业务流程的常用方法是(A)?DFDB.程序流程图C.ER图D.数据结构图DFD图即为数据流图( Data Flow Diagram)Oracle的索引有几种,各有何用途?唯一索引:索引列的所有值都只能出现一次,即必须唯非唯一索引:索引列的值可以重复函数索引:保存了数据列基于 function返回的值反向索引:转了索引码中的字节,是索引条目分酣更均匀,用于减少索引叶的竞争。位图索引:适合与决策支持系统;做 UPDATE代价非常高;非常适合OR操作符的查询;基数比较少的时候才能建位图索引域索引:主要用于多媒体数据;mysql存储引擎常用的有3种,分别是什么,各自分别有什么特点,应用场景是哪些?LI innoDB优点:支持事务管理,崩溃修复能力和并发控制,支持自动増长列,支持外键;缺点:读写效率较差,占用数据空间大应川场景:适合于对事务完整性要求高,要求并发控制,需要频繁更新,删除等操作的数据库;1.2 MyISAM优点:占用空问小,处理速度快;缺点:不支持事务的完整性和并发性应用场景:适用于表主要用于插入新纪录和读出记录,对应用完整性和并发性要求低;1.3 MEMORY存储引擎优点:处理速度快缺点:数据易丢失,生命周期短;应用场景:适用于读写速度快,对数据安全性要求低,使用相对较小的数据库表请描述char, varchar, nvarchar的区别?CHAR:存储定长数据VARCHAR:存储变长数据NVARCHAR:存储变长数据, Unicode编码,支持多语言何为范式,有几种,试列举并简要描述之?设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式旱递次规范,越高的范式数据库冗余越小第一范式(INF)实体中的某个属性有多个值时,必须拆分为不同的属性,确保每一列的原子性第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分,非键字段必须依赖于键字段第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息,在1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说:任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)试论 Oracle与 SQL Server, MYSQL三类之区别?Oracle oracle的应用,主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。此外,高新制造业如芯片厂也基木都离不开 Oracle;电商也有很多使用者。建立支持高并发的 Oracle数据库,通过OLTP系统用来对海量教据实时处理、操作,建立高运算量的 Oracle数据仓库,用OLAP系统用来分析营收数据及提供自动报表。MySQL。 MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向, MySQL的高并发存取能力并不比人型数据库差,同时价格便宜,安装使用简使快捷,深受广大互联网公司的喜爱。并且由于 MySQL的廾源特性,针对一些对数据库有特别要求的应用,可以通过修改代码来实现定向优化,例如SNS、LBS等互联网业务。MS SQL Server windows生态系统的产品,好处坏处都很分明。好处航是,高度集成化,微软也提供了整套的软件方突,基本上一套win系统装下来就齐活了。因此,不那么缺钱,但很缺IT人才的中小企业,会偏爱 MS SQL Server例如,自建ERP系统、商业智能、垂直领域零售商、餐饮、事业单位等等数据库怎样实现每隔30分钟备份一次?通过操作系统的定时任务调用脚本导出数据库以下不属于 Oracle数据类型的是(C)A. number b. date C. varchar D. varchar2如何删除 mysql表中的重复数据,只保留一条记录?select distinct into #Tmp from tableNamedrop table tableNameselect* into table Name from #Impdrop table #Tmpwith check option选项创建的视图?首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。1.对于 update,有 with check option,要保证 update后,数据要被祧图查询出来2对于 delete,有无 with check option都一样3对于 insert,有 with check option,要保证 insert后,数据要被视图查询出来4对于没有 where子句的视图,使用 with check option是多余的自然连接与内连接分别如何实现?自然连接只对两个关系模型中都出现的属性上取值相同的元组对进行匹配,不允许使用ON指定匹配条件。check约東?CHECK约束用于限制列中的值的范围。如果对单个列定义 CHECK约束,那么该列只允许特定的值。如果对一个表定义 CHECK约束,那么此约束会在特定的列中对值进行限制可以在定义表时添加,也可以使用SQL语句对 Check约束进行增删。SQLOracle是怎样分页的?Oracle中使用 rownum来进行分页,这个是效率最好的分页方法, hibernate也是使用 rownum来进行orae分页的select *s fromselect rownum r, a from tabName where rownum <=20where r>10OLAP和OLTP分别是什么有什么区别?联机事务处理OLTP( on line transaction processing)主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的笔交易记录,就是一个典型的事务。OLTP的特点一般有:1.实时性要求高。我记得之前上大学的时候,银行异地汇款,要隔天才能到账,而现在是分分钟到账的节奏,说明现在银行的实时处理能力大大增强。2.数据量不是很大,生产库上的数据量一般不会太大,而且会及时做相应的数据处理与转移。3交易一般是确定的,比如银行存取款的金额肯定是确定的,所以OLTP是对确定性的数据进行存取4高并发,并且要求满足ACID原则。比如两人同时操作一个银行卡账户比如大型的购物网站秒杀活动时上万的QPS请求。联机分析处理OLAP( On Line analytical Processing)是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的査询结果。典型的应用就是复杂的动态的报表系统。OLAP的特点一般有1实时性要求不是很高,比如最常见的应用就是天级更新数据,然后出对应的数据报表2.数据量大,因为OLAP支持的是动态查询,所以用户也许要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很人;3OLAP系统的重点是通过数据提供决策支持,所以査询一般都是动态自定义的。所以在OLAP中,维度的概念特别重要。一般会将用户所有关心的维度数据,存入对应数据平台。哪儿个命令会隐式产生事务?隐式事务又称自动提交事务。如果运行条 INSERT语句, SQL Server将把它包装到事务中,如果此 INSERT语句失败, SQL Server将回滚或取消这个事务。每条SQL语句均被视为一个自身的事务事务的分类1、显式事务:1)要去显式的调用DCL(2)只有用到 COMMIT以后才会真止写入数据库,也持久化了。2、隐式事务:(1)如果人工要使用隐式事务, SET AUTOCOMMIT ON(只针对一个连接)(2)以下情况为自动提交:1)正常执行完成的DDL(数据定义语句)语句:create:创建alter:改变Drop:删除Truncate:截断/摧毁2)正常执行完场的DCL(数据控制语句)语句 GRANT、 REVOKE3)正常退出的 SQLPlus或者 SQL Developer等客户端DML( data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、 UPDATE、 INSERT、 DELETE。主要用来对数据库的数据进行些操作。DDL( data definition language)数据库定义语言:其实就是我们在创建表的时侯用到的一些sql,比如说: CREATE、 ALtEr、DROP、 Truncate。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上DCL( Data Control Language)数据库控制谱言:是用来设置或更改数据库用户或角色权限的语句,包括( grant,deny, revoke等)语句。这个比较少用到Oracle数据库中发出一个查询。下列哪个选项不能查询对用户定义静态表达式执行数学运算时的查询组件?
用户评论