数据库错题记录

1. 嵌入式SQL需要用游标机制把集合转换成单记录处理方式

2. 分布式数据库的特点是数据的分布性整体的逻辑性

3. 在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系,例如两个元组的候选键相同即表中的任意两行相同,就不能表示一个关系)

4. 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。相应地,非关系数据模型的数据操作方式则为一次一记录的方式。

5. 数据库的完整性是指数据库的正确性和相容性

6. 数据库具有数据结构化、最小冗余度、较高数据相容性等特点

7. 两个表的运算得到的关系数

并:属性不变,元组可能增加(集合相等时不增加) 交:属性不变,元组可能减少(集合相等时不减少)

投影:属性可能减少(全投影时不减少),元组可能减少(投影后无重复项时不减少)

笛卡尔积:属性增加,元组可能增加(只有1个元组时不增加

8. Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

9. 对数据库模型的规范化,主要是解决插入异常、删除异常、数据冗余过大

10. 概念模型:面向信息世界,按照用户的观点对数据建模,如E-R图

数据模型:面向计算机世界,按计算机系统观点对数据建模

以下为数据模型

层次模型:用树状<层次>结构来组织数据的数据模型

网状模型:用有向图表示实体和实体之间的联系的数据结构模型

关系模型:使用表格表示实体和实体之间关系的数据模型
 
11. 关系代数运算是以集合运算为基础的运算,关系演算语言是以谓词演算为基础的运算
12. 数据库专门的关系运算包括投影、选择、连接和除四种,其中关系系统必须支持的关系运算包括投影、选择、连接
13. 在数据库中,数据的基本单位是存储记录
14. 用户权限定义合法权检查机制构成DBMS的安全子系统
15. 数据库提供四个方面的数据控制(保护措施):完整性控制、安全性控制、并发控制、数据库恢复

16. 故障恢复的基本手段有数据转储、登记日志文件

17. 数据管理经历了人工管理阶段、文件系统阶段、数据库管理阶段

18. 关系数据模型的三个组成部分 完整性规则、 数据结构、 数据操作

19. 一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性

该关系的码则有三种情况:
若联系为1:1,则每个实体的码均是该关系的后选码。
若联系为1:n,则关系的码为n端实体的码。
若联系为m:n,则关系的码为诸实体码的组合。

20.FOREIGN KEY 和 PRIMARY KEY的区别,以及UNIQUE 

参照(引用)完整性要求,外键只能是空值或者被引用表中的某个主键。

然而在实际使用中,FOREIGN KEY 是可以参照另外一个表的主键 PRIMARY KEY,也可以参考一个唯一约束(是以唯一索引形式存在的) UNIQUE(即候选键,可以是属性组合) , 目的都是保证实体唯一性

但是UNIQUE允许存在空值,在SQL Sever中不允许多个空值只能一个,但是在MySQL中允许多个空值
总的来说PRIMARY KEY = NOT NULL + UNIQUE

MS : 如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过组成 FOREIGN KEY 约束的所有值的验证。若要确保验证了组合 FOREIGN KEY 约束的所有值,请将所有参与列指定为 NOT NULL。

 


 

1.查询优化的一般步骤

①把查询转化为某种内部表示,通常是语法树

②利用优化算法,把原始的语法树转换成优化的形式(代数优化)

③选择底层的存取路径(物理优化)

④生成查询计划,选择代价最小的

 

2.数据库的完整性和安全性有什么区别和联系

①完整性是为了防止数据库存在不合语义的数据,防止错误信息的输入输出,即所谓垃圾进垃圾出造成的无效操作和错误结果。

②安全性是防止数据库被恶意破坏非法存取

③安全性措施防范的是非法用户和非法操作,完整性措施防范的是不合语义的数据

 

3.自主存取控制方法和强制存取控制方法

①自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户访问数据对象时先检查用户存取权限,防止不合法用户对数据库的读取。

自主的含义是:用户可以将自己拥有的存取权限“自主”授予其他用户,有一定自主权。

②强制存取控制方法:每一个数据对象被强制标以一定的密级,每一个用户也被强制授予某一级的许可。系统规定只有某一级许可级别的用户才能存取某一个密级的对象。

 

4.简述两段锁协议

两段锁协议是指所有事务都必须:在对任何数据读、写之前,都先要获得封锁;在释放第一个封锁后,事务不能再申请和获得其他锁。

“两段”的含义是事务分为两个阶段:

第一阶段是获得封锁,也称扩展阶段。事务可以申请获得锁,但不能释放锁。

第二阶段是释放封锁,也称收缩阶段。事务可以释放锁,不能申请获得锁。

 

5.关系模型的优缺点

优点:

  • 关系模型与格式化模型不同,是建立在严格的数学概念基础上的
  • 关系模型概念单一,数据结构简单。无论实体还是实体间的联系都用关系来表示。对数据的检索和更新结果也是关系(表)
  • 存取路径对用户透明(不可见),从而有更高的数据独立性、安全性

缺点:

  • 由于存取路径是隐蔽的(透明),查询效率不如格式化数据模型,需查询优化

6. 什么是实体完整性和参照完整性

  • 实体完整性是:元组在主键属性上不能有空值。
  • 参照完整性是:“不引用不存在的实体”。定义如下:若属性集K是关系模式R1的主键,K是R2的外键,那么R2的关系中K的取值只能是,空值或者是R1中的某个主键值。

7.说明死锁产生的原因和预防死锁方法

产生原因:多个事务都封锁了一些数据对象,又请求对已被其他事务封锁的数据加锁,出现死等待

预防方法:(1)一次封锁法,事务必须将要用到的所有数据一次加锁

(2)顺序封锁法,预先对数据对象规定封锁顺序,事务必须按照顺序实行封锁

8.说明文件系统和数据库系统的主要区别

文件系统:面向某一应用程序,数据共享性差,冗余度大,数据独立性差
数据库系统:面向现实世界,共享性高,冗余度小,数据独立性高,实现整体结构化——数据库的主要特征之一,也是数据库系统与文件系统的本质区别

 

 9.说明完整性

(1)
实体完整性:指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。
(2)
域完整性:
style="color: rgb(51,51,51);">是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN
KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。


(3)参照完整性:
属于表间规则。


(4)用户定义完整性:
是对数据表中字段属性的约束,
用户定义完整性规则也称为域完整性规则
。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间等。

 

 


 

1.  UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 

2. not exist https://blog.csdn.net/xu810260277/article/details/89324024

3. 内连接=交集,外连接=左连接/右连接   自然连接=某些属性相同的元组自动组合(如果不写则默认所有取公共属性)

https://blog.csdn.net/wcc27857285/article/details/86439313

https://blog.csdn.net/qq_38125058/article/details/79946850

自然连接和内连接的区别https://blog.csdn.net/weixin_42194151/article/details/81135212

4. INSERT

INSERT INTO 表名称 VALUES (值1, 值2,....)

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

5. GRANT/REVOKE

Grant  <权限>  on  表名[(列名)]  to  用户 With  grant  option

例子:把对SPJ表查询和修改QTY属性的权限授予张山

GRANT SELECT,UPDATE(QTY) ON SPJ TO 张山;

REVOKE <权限> ON <数据对象>  FROM <数据库用户名>

6. 删除约束

sql server中删除约束的语句是:
alter table 表名 drop constraint 约束名

mysql中删除约束的语句是:
1)删除主键约束:
alter table 表名 drop primary key;
2)删除外键约束:alter table 表名 drop foreign key 外键(区分大小写); 

 

7.如需在表中添加列,请使用下列语法:

ALTER TABLE table_name
ADD column_name datatype
要删除表中的列,请使用下列语法:

ALTER TABLE table_name
DROP COLUMN column_name

mysql的删除列可以省略掉COLUMN关键字,但添加列必须说明数据类型

 

8.select count(*)和select count(1)的区别:

一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的。
假如表没有主键(Primary key), 那么count(1)比count(*)快,
如果有主键的话,那主键作为count的条件时候count(主键)最快,如果你的表只有一个字段的话那count(*)就是最快的。
count(*) 跟 count(1) 的结果一样,都包括对NULL的统计,而count(column) 是不包括NULL的统计。

同时avg(),sum(),max(),count()等聚合函数都不统计NULL,distinct()和group by()把NULL看成一项

9.数据库关系代数符号

https://blog.csdn.net/Gpwner/article/details/51474651

除运算解释https://blog.csdn.net/skyejy/article/details/80890842

 

10.SQL SERVER中的数据库用户是一般用户。

登录用户是指DBA(数据库管理员)。

没有登录名,进不了大楼--有了登录名,就能进大楼

没有用户名,进不了房间--有了用户名,才能进房间
补充一点,大楼的钥匙可以在大楼内建立房间/删除房间,以及配置整个大楼的安保等功能。而用户只能对自己的房间进行收拾

 

11.文件系统与数据库系统的区别与联系

区别:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库系统提供数据安全性,完整性,并发控制和恢复力。
联系:文件系统于数据库系统都是计算机系统中管理数据库的软件。解析文件系统是操作系统的重要组成部分。而DBMS是独立于操作系统的软件。到时DBMS狮子啊操作系统的基础上实现的。数据库系统的组织和存储是通过操作系统中的文件系统来实现的。

 

 

 

 

 


posted @ 2020-03-12 10:33  幽灵化石  阅读(389)  评论(0编辑  收藏  举报