面试题错题解析4_数据库

时间:2024-05-20 17:43:12

                                   面试题错题解析4_数据库

查询优化策略中,正确的策略是( )。
A.尽可能早地执行笛卡尔积操作
B.尽可能早地执行并操作
C.尽可能早地执行差操作
D.尽可能早地执行选择操作
解析:D
1.尽可能的早做选择和投影(基本思路):可以使中间结果变小,节省几个数量级的执行时间 
2.把选择和投影串接起来:一元运算序列可一起执行,只需对整个关系进行一趟扫描 
3.把投影与其前或后的二元运算结合:在第一次用关系时去掉一些无关属性,可以避免多次扫描整个关系 
4.把某些选择与其前的笛卡尔积合并成一个连接:当RxS前有选择运算且其中条件是R,S属性间比较运算的时。可以将其转换为连接运算节省时间 
5.执行连接运算前对关系做适当的预处理:排序,索引 
6.找出表达式里的公共子表达式:若公共的子表达式结果不大,则预先计算,以后直接读入结果,尤当视图情况下使用

数据库、数据库系统和数据库管理系统三者之间的关系是 
A.据库系统包括数据库和数据库管理系统
B.数据库管理系统包括数据库和数据库系统
C.数据库包括数据库系统和数据库管理系统
D.数据库系统就是数据库,也就是数据库管理系统
解析:A
数据库系统是一个由硬件、软件(操作系统、数据库管理系统和编译系统等)、数据库和用户构成的完整计算机应用系统。现代的计算机系统差不多是数据库系统了。
综上,DBS包含了DB和DBMS.

JDBC是由一系列连接(Connection)、SQL语句(Statement)和结果集(ResultSet)构成的,其主要作用概括起来有如下3个方面: 建立与数据库的连接。 向数据库发起查询请求。 处理数据库返回结果。

在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是( )。
A.外模式
B.内模式
C.存储模式
D.模式

解析:D
首先数据库的三级模式不包括C。
A.外模式是模式的一个子集,不同用户从不同角度部分看待数据库的方式,当前用户视图也是外模式,面向用户(对外)。
B.内模式,物理机构和存储方式的描述,比如存储范式是顺序的还是hash的等,面向物理存储器件(对内)。
D.模式,即概念模式/逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

1NF->2NF是消除非主属性部分函数依赖,2NF->3NF是消除非主属性传递依赖

层次模型可以表示多对多的联系。请问这句话的说法是正确的吗?
A.正确
B.错误

解析:B
层次模型采用树型结构表示数据与数据间的联系。在层次模型中,每一个节点表示记录类型(实体),记录之间的联系用节点之间的连线表示,并且根节点以外的其他节点有且仅有一个双亲节点。层次模型不能直接表示多对多联系,若要表示多对多的联系,可采用如下两种方法: 
・ 冗余节点法――两个实体的多对多的联系转换为两个一对多的联系,该方法的优点是节点清晰,允许节点改变存储位置,缺点是需要额外的存储空间,有潜在的数据不一致性。 
・ 虚拟节点分解法――将冗余节点转换为虚拟节点,虚拟节点是一个指引元,指向所代替的节点,该方法的优点是减少对存储空间的浪费,避免数据不一致性,缺点是改变存储位置可能引起虚拟节点中指针的修改。

关于关系型数据库,正确且全面的描述是:
A.在关系模型中数据的逻辑结构是一张二维表
B.DML是介于关系代数和关系演算之间的语言,它充分体现了关系数据库语言的特性和优点
C.关系模型的完整性规则是对关系的某种约束,分为实体完整性和参照完整性约束
D.关系数据库中,关系也称为数据库,元组也称为行,属性也称为列

解析:A
A. 在关系模型中数据的逻辑结构是一张二维表(A正确)
B. SQL语句是介于关系代数和关系演算之间的(结构化查询)语言(B错 )
C. 关系模型的完整性 包括实体完整性 域完整性 参照完整性和用户定义完整性。 域完整性,实体完整性和参照完整性,是关系模型必须满足的完整性约束条件。(C错 不完整)
D. 关系是一张表,表中的每行(即数据库中的每条记录)是一个元组,每列是一个属性。(D错 说反了)

下列四项中,不属于数据库系统的特点的是( )
A.数据结构化
B.数据由DBMS统一管理和控制
C.数据冗余度大
D.数据独立性高

解析:C
1.数据结构化
2.数据的共享性高,冗余度低,易扩充
3.数据独立性
4.数据由DBMS统一管理和控制

子模式DDL用来描述数据库的局部逻辑结构.

下面Transact-SQL语句中可以用于创建主键的是()
A.alter table table1 with notcheck add constraint [PK_table1] primary key nonclustered (column1) on primary;
B.alter table table1 column1 primary key;
C.alter table table1 column1;
D.create table table1 (column1 char(13) not null primary,column2 int not) on primary;

解析:A
创建SQL的主键和外键约束的方法:
--在创建表时就可以对字段加上约束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)
StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)
StudentAge int DEFAULT ((0)), --加默认值约束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式)
)

--如果在表创建好了以后再加约束,则格式分别为:

-- 主键:
alter table 表名
add constraint PK_字段名--"PK"为主键的缩写,字段名为要在其上创建主键的字段名,'PK_字段名'就为约束名
primary key (字段名) --字段名同上

--唯一约束:
alter table 表名
add constraint UQ_字段名
unique (字段名)

--外键约束:
alter table 表名
add constraint FK_字段名--"FK"为外键的缩写
foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'

alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)

alter table 成绩表 add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
级联更新,级联删除,这样在删除主表Student时,成绩表中该学生的所有成绩都会删除。

--检查约束:
alter table 表名
add constraint CK_字段名
check (条件表达式) --条件表达式中的条件用关系运算符连接

--默认值约束:
alter table 表名
add constraint DF_字段名
default '默认值' for 字段名--其中的'默认值'为你想要默认的值,注意'for'

--删除创建的约束:
alter table 表名
drop constraint 约束名--约束名为你前面创建的如:PK_字段这样的约束名
--注意:如果约束是在创建表的时候创建的,则不能用命令删除
--只能在'企业管理器'里面删除

对表进行水平方向的分割,用的运算是()。
A.交
B.投影
C.选择
D.连接
解析:C
选择是将表进行水平分割的运算,其目的是为了保留某些符合条件的元组。投影是对表进行垂直分割的运算,其目的是实现属性的筛选。

数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作的是(   )

A.建立库结构
B.扩充功能
C.加载数据
D.系统调试

解析:B
数据库实施阶段包括两项工作:一是数据的载入,即包括A选项的建立库结构和C选项的加载数据;二是应用程序的编码和调试,即D选项的系统调试。

在数据库的安全控制中,为了保证用户只能存取他有权存取的数据,在授权的定义中数据对象的(范围越小),授权子系统就越灵活
解析:授权粒度:衡量授权机制是否灵活。粒度越细,可以定义的数据对象的范围越小,授权子系统越灵活。

对基本表 S,执行操作 DROP TABLES RESTRICT 的作用是()。
A.删除基本表 S 中的所有元组
B.把基本表 S 及产生的一切视图全部删除
C.当没有由 S 中的列产生的视图或约束时将表 S 删除
D.删除表 S,将引用表 S 的视图中的一切视图的属性值置为空值
解析:C
drop table         从一个数据库中删除一个表
drop table Restrict   确保只有不存在相关视图或完整性约束的表才可以被删除
drop table cascade   任何引用的视图或完整性约束都将被删除

在关系模式 R分解成数据库模式ρ时,谈论无损联接的先决条件是存在泛关系。

假如在MySQL中有存储过程proc1(员工编号,月份)用来查询员工的工资,两个参数类型均为字符类型,则下列调用存储过程的方法正确的是()
A.call Proc1(‘emp001’ ,’ 201601’ );
B.exec Proc1(‘emp001’ ,’ 201601’ );
C.call Proc1(‘emp001’ ,null);
D.call Proc1(‘emp001’ ,);
解析: A、C

首先要注意的是题目中说明的是MySQL中存储过程的调用,而不是Sql Server,exec 是sql server的存储过程调用方式,call是mysql的存储过程调用方式,MySQL的存储过程参数没有默认值,所以在调用MySQL存储过程时,不能省略参数,但是可以用null来代替.


图中(      )是最小关系系统

面试题错题解析4_数据库 面试题错题解析4_数据库 面试题错题解析4_数据库 面试题错题解析4_数据库

            A                          B                        C                          D
解析:B
关系系统的一种【数据库系统原理相关的概念】,关系系统可分为(最小)关系系统、完备关系系统、全关系系统。 (最小)关系系统: 仅支持关系数据结构和选择、投影、连接三种关系操作。很多微机上使用的系统如FoxBASE和FoxPro就属于这一类。结构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation),阴影表示关系系统支持的模型程度,最小关系系统仅支持数据结构s和数据操作I,所以选第二个.

下列关于数据库模式的说法中,正确的是(  )。
A.在应用程序中,用户使用的是内模式
B.在一个数据库系统中可以有多个外模式
C.模式是外模式的一个子集
D.在一个数据库系统中,可以有多个内模式和外模式

解析:B
面试题错题解析4_数据库
用户级对应外模式,概念级对应概念模式,物理级对应内模式。数据库对应一个内模式,多个外模式

内模式是系统程序员用一定的( 文件 )形式组织起来的一个存储文件和联系手段。

mysql数据库中一张user表中,其中包含字段A,B,C,字段类型如下:A:int,B:int,C:int根据字段A,B,C按照ABC顺序建立复合索引idx_A_B_C,以下查询语句中使用到索引idx_A_B_C的语句有哪些?
A.select *from user where A=1 and B=1
B.select *from user where 1=1 and A=1 and B=1|
C.select *from user where B=1 and C=1
D.select *from user where A=1 and C=1
解析: ABD
 复合索引: Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。 例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效

关系规范化中的插入操作异常是指 (      ) 
A.不该删除的数据被删除
B.不该插入的数据被插入
C.应该删除的数据未被删除
D.应该插入的数据未被插入

解析: D
 关系规范化中的4个问题
- 1:数据冗余:比如,每一个系的系主任姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。这将浪费很大的存储空间。
- 2:更新异常:由于数据冗余,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。比如,某系更换系主任后,必须修改与该系学生有关的每一个元组。
-3 : 插入异常:如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库。
所以插入操作异常是指应该插入的数据未被插入。
-4 : 删除异常:如果某个系的学生全部毕业了,则在删除该系学生信息的同时,这个系及其系主任的信息也丢掉了 。

数据库系统的核心是(数据库管理系统 )

当B属性函数依赖于A属性时,属性A与B的联系是( )。
A.1对多
B.多对1
C.多对多
D.以上都不是

解析:B
分多种情况
B属性依赖A属性
1.A属性不依赖于B属性,一对多,比如班级(B)对学生(A)
班级跟学生是一对多的关系,班级依赖于学生,而学生不依赖于班级,即学生跟班级为多对一的关系。
2.A属性也依赖于B属性,一对一:比如夫妻;
学生不依赖于课程,课程也不依赖于学生属于多对多,学生号和课程号。

下列sql语句中哪条语句可为用户zhangsan分配数据库userdb表userinfo的查询和插入数据权限()。
A.grant select,insert on userdb.userinfo to'zhangsan'@'localhost'
B.grant'zhangsan'@'localhost'to select,insert for userdb.userinfo
C.grant select,insert on userdb.userinfo for'zhangsan'@'localhost'
D.grant'zhangsan'@'localhost'to userdb.userinfo on select,insert

解析:A
格式应该是:grant [权限] on [table] to 'username'@'localhost';
授予权限的格式是grant on(表名)to(角色名),@localhost(本地主机)是指这台计算机的用户张三。

对数据表进行修改的语句正确的是()
A.alter table employee add memo
B.alter table employee drop column age
C.alter table employee add column
D.alter table employee drop age
解析:BD
删除列可以省略column,添加列必须说明数据类型

oracle 数据库中最常见的索引类型是()
A.文本索引
B.反向键值索引
C.位图索引
D.b-tree索引
解析: D
1. b-tree索引 Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。
2. 位图索引(bitmap index) 位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。
3. 基于函数的索引 比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。
4. 分区索引和全局索引 这2个是用于分区表的时候。前者是分区内索引,后者是全表索引
5. 反向索引(REVERSE) 这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值(10001,10002,10033,10005,10016..)。这种情况默认索引分布过于密集,不能利用好服务器的并行,但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。
6.HASH索引 HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。使用HASH索引必须要使用HASH集群。


对于串行调度,各个事务的操作没有交叉,也就没有相互干扰,当然也不会产生并发所引起的。事务对数据库的作用是将数据库从一个一致的状态转变为另一个一致的状态。多个事务串行执行后,数据库仍旧保持一致的状态。 可串行性(Serializability)  是并发事务正确调度的准则。在RDBMS中,作为并发控制的正确性准则。一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度.

关于数据完整性,以下说法正确的是?
A.引用完整性通过主键和外键之间的引用关系实现
B.引用完整性通过限制数据类型、检查约束等实现
C.数据完整性是通过数据操纵者自身对数据的控制来实现的
D.如果两个表中存储的信息相互关联,那么只要修改了一个表,另外一个表也要做出相应的修改,则称该这两个表中的数据具备完整性
解析:A、D
四类数据完整性:
实体完整性,确保不出现完全相同的数据记录
区域完整性, 通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现
参考完整性,避免因一个数据表的记录改变而造成相关数据表内的数据变成无效值。
用户自定义完整性,用户自定义由用户根据实际应用中的需要自行定义。

SQL语言具有(     数据定义、数据操纵、数据控制  )的功能。

在关系数据库设计中,设计关系模式是( )的任务。
A.需求分析阶段
B.概念设计阶段
C.逻辑设计阶段
D.物理设计阶段
解析:C
需求分析阶段的任务是在调查、分析的基础上明确用户对系统的需求。概念设计阶段的任务是设计概念模型,较著名的是E-R图。逻辑设计阶段的任务是把概念模型转化为特定DBMS的逻辑结构(模式和外模式),物理设计阶段的任务是设计合适的物理(存储)数据库结构。

一条SQL语句中,group by子句应位于什么位置
A.在where子句关键字之前
B.在where子句之后
C.在from关键字之前
D.在order by子句之后

解析:B
select的执行顺序为:from where group having order by limit

数据库中的数据项之间和记录之间都存在联系


mysql 导出数据命令是?
1.导出整个 数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

Oracle导出命令为export
 

1.脏读:
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

2.不可重复读:
是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。(即不能读到相同的数据内容)
例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。

3.幻读:
是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象
发生了幻觉一样。

例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主复本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。

4、丢弃修改


规范化过程主要为克服数据库逻辑结构中的插入异常、删除异常以及 (冗余度大) 的缺陷。

关于mysql_pconnect说法错误的是
A.数据库建立持久连接
B.与数据库进行多连接
C.与mysql_connect功能相同
D.与@mysql_connect功能相同

解析:BCD
mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接。
mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别:

  1. 当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
  2. 其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。

     

(事务  )是 DBMS 的基本单位,它是用户定义的一组逻辑一致的程序序列。

在数据库中,产生数据不一致的根本原因是(数据冗余 )。
由于数据冗余,有时修改数据时,一部分数据修改,而一部分数据没有修改,造成同一种数据有多个值,产生数据不一致。

关系规范化中的删除操作异常是指 不该删除的数据被删除。

MYSQL实现主从复制的日志是哪种?
A.READ LOG
B.UNDO LOG
C.BINLOG
D.GENERAL LOG
解析:C

mysql主(称master)从(称slave)复制的原理:
(1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
(2).slave将master的binary log events拷贝到它的中继日志(relay log)
(3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

附简要原理图:

面试题错题解析4_数据库