1. 什么是触发器?它有什么作用?
触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
2. 什么是存储过程?怎么调用?
存储过程是一个预编译的SQL语句,允许模块化设计,只需创建一次;可以用一个命令对象来调用存储过程。
3. 什么是索引?作用和优缺点是什么?
索引是一种特殊的查询表,数据库搜索引擎可以利用其加速数据的索引;索引只允许单个列或多个列,减慢了数据录入速度,增加了数据库的大小。
4. 什么是内存泄漏?
一般的内存泄漏指的是堆内存泄漏,堆内存是程序从堆中分配的内存,使用结束必须用 free 或 delete 来释放该内存,不然就会造成内存泄漏。
5. 事务?锁?
事务 是被绑定在一起作为一个逻辑工作单元的SQL分组语句,若其中有语句操作失败,则操作会回滚到之前状态;为确保执行和不执行,可以用事务,并通过ACID测试:原子性、一致性、隔离性和持久性。
锁 是实现事务的关键,可以保证事务的完成性和并发性。
6. 事务的隔离级别
- 原子性
- 一致性
- 隔离性
- 持久性
7. 视图和游标
视图 是一种虚拟的表,具有表的功能,对视图的修改不会影响基本表
游标 是对查询出来的结果集作为一个单元来有效处理。
8. 主键和外键?
主键是表中的字段,只用来定义表的行,主键的值唯一;外键是一个用来建立两个表之间关系的约束。
9. 事前触发和事后触发的区别
事前触发运行于触发时间之前,而事后触发在之后;事前触发可以获取事件之前和新的字段值。
10. 语句级触发和行级触发有何区别
语句级触发可在语句执行前或者后执行,而行级触发在触发器影响的每一行触发。