数据库面试基础知识

本文的总结全部来自《程序员面试笔试宝典》这本书(何昊、叶向阳、窦浩著)

1. 事务的四个属性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),即ACID4种属性。

2. 一般情况下通过执行COMMIT或ROLLBACK语句来终止事务

3. 什么是存储过程?它与函数有什么区别和联系?

答:SQL语句执行的时候要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过制定存储过程的名字来调用执行。(详见P244)

存储过程与函数在本质上没有什么区别,但具体而言有以下几个方面的区别:

<1> 存储过程一般是作为一股独立的部分来执行的,而函数可以作为查询语句的一个部分来调用。

<2> 存储过程实现的功能较复杂,而函数实现的功能针对性比较强

<3> 函数需要用括号包住输入的参数,且只能返回一个值或表对象,存储过程可以返回多个参数

<4> 函数可以嵌入在SQL中使用,可以在select中使用,存储过程不行

<5> 函数不能直接操作实体表,只能操作内建表

<6> 存储过程在创建时即在服务器上进行了编译,执行速度更快

4. 数据库中的主键列不一定是一列,可以是多列,一个表可以有多个外键,也可以为空

5. 产生死锁的四个条件:互斥、请求保持、循环等待、不可剥夺

6. 什么是共享锁,什么是互斥锁?

答:在数据库中,锁主要是对数据进行读写的一种保护机制,从数据库系统的角度来看,一般可以将锁分为共享锁和互斥锁。共享锁简称为S锁,也成为读锁,用于不可给该或不可更新数据的操作(读操作),共享锁可以防止其他并发运行的程序获取重叠的独占锁定,但是允许该程序获取重叠的共享锁定。

互斥锁简称X锁,也成为排它锁,用于数据库的修改操作,确保不会同时对统一资源进行多重更新。

而对于锁的使用,也有一定的限制:1. 先锁后操作。 2. 事务结束之后必须解锁。

7. 什么是CHECK约束?
答:CHECK约束是指限制表中某一列或某些列中可接受的数据值或数据格式,它用于限制列的取值范围,使用形式为:CHECK(约束表达式)。

8. 什么是视图?

答:视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表。它是一个虚表,不存放视图包含的数据项。视图的作用:1. 简化数据查询语句。 2. 可以使用户能从多角度看待同一数据。 3. 可以提高数据的安全性。 4. 提供了一定的逻辑独立性。

SQL高级应用

1. 什么是触发器?

答:触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动。当数据库有特殊的操作时,对这些操作由数据库中的事件来触发,自动完成这些SQL语句。使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束。根据SQL语句的不同,触发器可以分为两类:DML触发器和DLL触发器,DML触发器是当数据库服务器发生数据操作语言事件时执行的存储过程,有After和Instead Of 两种触发器。After触发器被激活出发是在记录改变之后进行的一种触发器。Instead Of触发器是在记录变更之前,去执行触发器本身定义的操作,而不是执行原来SQL语句里的操作。DLL触发器是在响应数据定义语言时间是执行的存储过程。(详见P248)

2. 什么是索引?

答:索引是一种提高数据库查询速度的机制,它是一个在数据库的表或视图上按照某个关键字段的值,升序或降序排序创建的对象。当用户查询索引字段时,它可以快速地执行检索操作,借助索引,在执行查询的时候不需要扫描整个表就可以快速地找到所需要的数据。索引是与表或视图关联的磁盘上的结构,即对表中列值排序的一种结构,可以加快从表或视图中检索行的速度,执行查询时不必扫描整个表就能更加快速地访问数据库中的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值