|
|
|
|
移动端

2.1 基本概念(1)

《程序员面试笔试真题与解析》本书针对当前各大 IT企业面试笔试中特性与侧重点,精心挑选了 3年以来近百家典型 IT企业的面试笔试真题,这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机 APP、安全关键软件等,面试笔试真题非常具有代表性与参考性。本节为大家介绍基本概念。

作者:猿媛之家来源:机械工业出版社|2017-12-07 11:04

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

第2章 数据库

2.1 基本概念(1)

【真题 284】以下不属于数据库事务正确执行的四个基本要素的是()。

A.隔离性 B.持久性 C.强制性 D.一致性答案:C。数据库事务正确执行的四个基本要素为原子性( Atomicity)、一致性( Consistency)、隔离性( Isolation)

和持久性( Durability)。一个支持事务( Transaction)的数据库系统,必须要具有这四种特性,否则,在事务过程(Transaction Processing)中就无法保证数据的正确性,交易过程极有可能失败,最终达不成交易。以下将分别对这四种特性进行介绍。

①原子性:一个事务( Transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚( Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

②一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的默认规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。例如,在转账的操作过程中,不管操作中出现任何错误,转账要么成功,要么失败,无论结果如何,都要保证两个账号里钱的总数是不变的。

③隔离性:当两个或者多个事务并发访问(此处访问指查询和修改的操作)数据库的同一数据时所表现出的相互关系。事务隔离分为不同级别,包括未提交读( Read Uncommitted)、提交读( Read Committed)、可重复读( Repeatable Read)和串行化( Serializable)。

④持久性:在事务完成以后,该事务对数据库所做的更改便持久地保存在数据库之中,并且是完全的。本题中,强制性不属于这四种特性。所以,选项 C错误。

【真题 285】存储过程是什么?它有哪些优点?

答案:SQL语句执行的时候,要首先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的 SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。具体而言,存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

例如,下面为一个创建存储过程的常用语法:

  1. create procedure sp_name @[参数名][类型]  
  2. as  
  3. begin  
  4. ........  
  5. end 

调用存储过程语法: exec sp_name [参数名]

删除存储过程语法: drop procedure sp_name

从上面的介绍可以发现,使用存储过程可以增强 SQL语言的功能和灵活性。由于用流程控制语句编写存储过程具有很强的灵活性,所以,使用存储过程可以完成复杂的判断和运算,并且可以保证数据的安全性和完整性,同时,存储过程可以使没有权限的用户在控制之下间接地存取数据库,也保证了数据的安全。具体而言,存储过程主要有如下优点:

1)执行效率高。

2)减少网络流量。因为在调用的时候不需要每次都把 SQL语句传输到数据库上。

3)安全机制好。通过对存储过程进行授权,从而保证安全性。

【真题 286】以下有关聚集索引的描述中,正确的是( )。

A.有存储实际数据  B.没有存储实际数据  C.物理上连续

D.逻辑上连续  E.可以用 B树实现  F.可以用二叉排序树实现

答案:A、C。

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。数据库中索引可以分为两种类型:聚簇索引(聚集索引)和非聚簇索引(非聚集索引)。

聚集索引:表数据是按照索引的顺序来存储的,也就是说,索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。正因为索引的数据需与数据物理存储的顺序一致,在一张表上最多只能创建一个聚集索引。

非聚集索引:表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页、数据行的逻辑指针。为了提高索引的性能,一般采用 B树来实现。所以,本题的答案为 A、C。

【真题 287】当执行 Mysql查询时,只有满足连接条件的记录才包含在查询结果中,这种连接是()。

A.左连接 B.右连接 C.内连接 D.全连接答案:C。在 SQL中,内连接也称为自然连接,只有两个表相匹配的行才能在结果集中出现,返回的结果集

是两个表中所有相匹配的数据,而舍弃不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配行的所有行,所以,内连接可能会造成信息的丢失。内连接的语法如下:

  1. select fieldlist from table1 [inner] join table2 on table1.column=table2.column 

内连接是保证两个表中所有的行都要满足连接条件。与内连接不同的是,外连接不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个连接表(全外连接)中的所有数据行。SQL的外连接共有 3种类型:左外连接(关键字为 LEFT OUTER JOIN)、右外连接(关键字为 RIGHT OUTER JOIN)和全外连接(关键字为 FULL OUTER JOIN)。外连接的用法和内连接一样,只是将 INNER JOIN关键字替换为相应的外连接关键字即可。

内连接只显示符合连接条件的记录,外连接除了显示符合连接条件的记录外,例如若用左外连接,还显示左表中记录。

例如,如下有两个学生表 A和课程表 B。

对表 A和表 B进行内连接后的结果见下表:

对表 B和表 A进行左外连接后结果见下表:

所以,本题的答案为 C。

【真题 288】下列关于视图与基本表的对比描述中,正确的是()。

A.视图的定义功能强于基本表 B.视图的操作功能强于基本表

C.视图的数据控制功能弱于基本表 D.上面提到的三种功能二者均相当答案:A。视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表,它是一个虚表,在

数据库中,存放的只是视图的定义而已,而不存放数据,这些数据仍然存放在原来的基本表结构中。只有在使用视图的时候才会执行视图的定义,从基本表中查询数据。视图的作用非常多,主要有以下几点:首先,它可以简化数据查询语句;其次,它可以使用户从多角度看待同一数据;再次,它可以提高数据的安全性;最后,它提供了一定程度的逻辑独立性等。

通过引入视图机制,用户可以将注意力集中在其关心的数据上而非全部数据,这样就大大提高了用户效率与用户满意度,而且如果这些数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分数据来源于其他视图,并且搜索条件又比较复杂时,需要编写的查询语句就会比较繁琐,此时定义视图就可以使数据的查询语句变得简单可行。定义视图可以将表与表之间复杂的操作连接和搜索条件对用户不可见,用户只需要简单地对一个视图进行查询即可,所以,增加了数据的安全性,但是不能提高查询的效率。

对于选项 A,视图可以被定义为多个表的连接,也可以被定义为只有部分列可见,或满足条件的部分行可见,因此,有更强的定义功能。所以,选项 A正确。

对于选项 B,视图有的操作表都有,视图一般被用来查找而使用。所以,选项 B错误。

对于选项 C,视图的数据控制能力要强于表,视图可以被定义为多个表的连接,也可以被定义为只

有部分列可见,或满足条件的部分行可见,通过定义不同的存储过程,并授予不同的权限,可以很灵活地对数据进行控制。所以,选项 C错误。对于选项 D,自然也就错了。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

敏捷Acegi、CAS:构建安全的Java系统

本书是关于Acegi、CAS的权威教程,是Java/Java EE安全性开发者的必备参考书。无论是Java EE安全性编程模型的背景和基础知识,还是Acegi、CA...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊