数据库错题记录
1. 嵌入式SQL需要用游标机制把集合转换成单记录处理方式
2. 分布式数据库的特点是数据的分布性和整体的逻辑性
3. 在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系,例如两个元组的候选键相同即表中的任意两行相同,就不能表示一个关系)
4. 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。相应地,非关系数据模型的数据操作方式则为一次一记录的方式。
5. 数据库的完整性是指数据库的正确性和相容性
6. 数据库具有数据结构化、最小冗余度、较高数据相容性等特点
7. 两个表的运算得到的关系数
并:属性不变,元组可能增加(集合相等时不增加) 交:属性不变,元组可能减少(集合相等时不减少)
投影:属性可能减少(全投影时不减少),元组可能减少(投影后无重复项时不减少)
笛卡尔积:属性增加,元组可能增加(只有1个元组时不增加
8. Having与Where的区别
- where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定
- having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
9. 对数据库模型的规范化,主要是解决插入异常、删除异常、数据冗余过大
10. 概念模型:面向信息世界,按照用户的观点对数据建模,如E-R图
数据模型:面向计算机世界,按计算机系统观点对数据建模
以下为数据模型
层次模型:用树状<层次>结构来组织数据的数据模型
网状模型:用有向图表示实体和实体之间的联系的数据结构模型
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中的数据库用户是一般用户。
没有登录名,进不了大楼--有了登录名,就能进大楼
11.文件系统与数据库系统的区别与联系
①区别:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库系统提供数据安全性,完整性,并发控制和恢复力。
②联系:文件系统于数据库系统都是计算机系统中管理数据库的软件。解析文件系统是操作系统的重要组成部分。而DBMS是独立于操作系统的软件。到时DBMS狮子啊操作系统的基础上实现的。数据库系统的组织和存储是通过操作系统中的文件系统来实现的。