数据库复试问答

数据库

数据库索引

数据库索引是按照数据库表一列或者多列的值进行排序的数据结构,主要目的是加速数据访问,类似书的目录。

主要在查询比较多数据量大,规模大的表使用索引

事务

单个逻辑单元的一系列操作,要不全部执行,要不全部撤销,事务的四大特性有ACID,原子性,持久性,一致性,隔离性,是数据库运行的逻辑单位。

四大特性
  1. 原子性:事务中所有操作,要么全部完成,要么全部失败的回滚
  2. 一致性:必须使数据库从一个一致性变换到另一个一致性状态,事务执行前和执行后都必须处于一致性状态
  3. 隔离性:多个用户并发访问数据库时,数据库为每个用户开启的事务不能被其他用户干扰,并发事务要相互隔离。
  4. 持久性:一个事务一旦被提交了,那么对数据库中的数据改变就是永久的
事务的隔离级别
  1. Read Uncommitted(读取未提交)最低隔离级别,一个事务可以读到另一个事务的结果,所有的并发事务都会发生。

  2. Read Committed(读取提交内容)只有在事务提交后,其更新结构才会被其他事务看见,可以解决脏读问题。

  3. Repeated Read(可重复读) 在一个事务中,对于同一份的数据读取结果总是相同的,无论是否有其他事务进行操作,以及事务是否提交,可以解决脏读,不可重复读。

  4. Serialization(可串行化)隔离级别最高,牺牲了系统并发性,可以解决所有并发事务的问题。

    隔离级别脏读不可重复读幻读
    Read Uncommitted
    Read Committed
    Repeated Read
    Serialization

事务隔离

同一时间,只允许一个事务请求同一数据,不同事物之间彼此没有任何干扰。

等值联接和左联接

左联接返回左表所有记录和右表中联接字段相等的记录

右联接返回右表所有数据和左表中联接字段相等的数据

等值联接返回左右两表中联接字段相等的数据

三大范式

第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时。属性不可分。

第二范式:关系模式满足第一范式,并且R的所有非主键属性完全依赖于R的每一个候选关键属性。非主键属性,完全依赖于主键属性

第三范式:属性不依赖于其他非主属性,就是在第二范式的基础上消除了非主属性对键的传递函数依赖。非主键属性无传递依赖

BCNF:消除主属性对候选码的部分和传递函数依赖

SQL优化方式有哪些

通过建立索引对查询进行优化

对查询进行优化,尽量避免全表扫描

常见关系型数据库管理系统产品有

MYSQL,SQL Server, Oracle

SQL语言包含哪几部分

数据定义语言(DDL)

Create ,drop

数据查询语言(DQL)

Select

数据操纵语言(DML)

Insert update Delete

数据控制语言(DCL)

grant revoke 授权和撤销

完整性约束包含哪些

  1. 实体完整性约束

    主属性不能取空值

  2. 参照完整性约束

    外键,一个表是外键,它的值要么是空值,要么和外键所连接表的主键值相同。

  3. 用户自定义完整性

    必须满足语义上的要求

用什么可以确保表格里的字段只接受特定范围的值

check

基本表与视图

基本表就是本身独立的表,一个关系就对应一个基本表。

视图是由一个或几个表导出的表,本身不独立存储,是个虚标。用户对视图的操作并不影响基本表。

视图的优点

可以简化用户操作,用户可以从多角度看待同一数据,视图逻辑独立,视图安全

相关子查询和不相关子查询

嵌套查询中,如果子查询的查询结果不依赖与父查询,称为不相关子查询,如果子查询的查询条件依赖于父查询,称为相关子查询

drop、truncate、delete区别

delete是数据操纵语言,删除表中一行数据

truncate和drop是数据定义语言,truncate是删除表内所有数据,保留表结构,而drop是删除所有

索引优化

索引目的是为了加速查找,两个方面进行优化,选择合适数据结构hash表或者B树。选择合适查找算法,顺序查找,折半查找,分块查找等。

索引优缺点

优点:提高在数据库中获取信息的速度

缺点:要花时间和空间去维护索引表,

主键外键索引的区别

主键:唯一标识一条记录,不能有重复的,不允许为空

外键:可以为空,或是另一个表中主键,一个表可以有多个 外键

索引:索引没有重复值,一个表中可以有多个索引。

什么是触发器

触发器是与表相关的数据库对象,在满足定义条件时触发,并执行触发器定义条件。

什么是游标

SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。游标提供了在逐行的基础上操作表中数据的方法。

什么是存储过程,用什么来调用

存储过程类似其他语言的函数,由过程化sql语句书写的过程,这个过程编译优化后存储在数据库中,使用时调用即可。使用CALL和Perform等方式调用

存储过程的优缺点

优点:可以将一段操作的代码封装起来,保存在数据库中,每次使用只需要调用,节约了很多时间,编译后存储在数据库中效率更高。

缺点:每个数据库存储过程语法几乎都不一样,兼容性很差

实现并发控制的一项重要技术,在多个事务同时存取同一组数据时有的封锁机制,作为控制。先加锁,在访问,然后再解锁释放资源

乐观锁与悲观锁

乐观锁,假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。(也就是先把资源分配出去,等操作结束后,查看是否有问题)
悲观锁,假设会发生并发冲突,屏蔽一切可能违反数据完整性的操作。

排它锁和共享锁

x锁和s锁

三级封锁协议

一级封锁,修改时加X锁,事务结束时释放

二级封锁,一级的基础上,在读取时加s锁,读取结束时释放。

三集封锁,一级的基础上,在读取时加s锁,事务结束时释放。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cLV5Nk6x-1648555645011)(C:\Users\11028\AppData\Roaming\Typora\typora-user-images\image-20220329195531670.png)]

两段封锁协议

在事务执行过程中,不允许加锁解锁交叉执行。分为申请封锁期和释放封锁期

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值