1、 动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计
和实现查询?答:讲查询封装进存储过程中,通过调用存储过程实现动态调
用;表结构发生变化后修改相应的存储过程即可再不修改程序的情况下实现
查询。
2、 如何优化数据库,如何提高数据库的性能?答:优化数据库主要是优化
查询语句,通过高性能的查询语句提高数据库的性能。
3、 设计数据库应注意那些问题答:首先应尽量满足三范式的要求,在一定
程度上打破 3 范式的要求以提高数据库的性能。
4、 表与表之间的关联关系答:分为 3 种:一对一、一对多、多对多。
5、 主键和外键的区别答:主键在本表中是唯一的、不可唯空的,外键可以
重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外
键。
2、 2 事务是什么?事务是作为一个逻辑单元执行的一系列操作,一个逻辑
工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久
性)属性,只有这样才能成为一个事务:原子性,事务必须是原子工作单
元;对于其数据修改,要么全都执行,要么全都不执行。一致性,事务在
完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则
都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有
的内部数据结构(如 B 树索引或双向链表)都必须是正确的。隔离性,由
并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看
数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是
另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串
行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结
束时的状态与原始事务执行的状态相同。持久性,事务完成之后,它对于
系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
3、 3 游标的作用?如何知道游标已经到了最后?游标用于定位结果集的
行,通过判断全局变量@@FETCH_STATUS 可以判断是否到了最后,通常此
变量不等于 0 表示出错或到了最后。
4、 4 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发
和行级触发有何区别。事前触发器运行于触发事件发生之前,而事后触发
器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字
段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所
影响的每一行触发一次。
5、 •批是包含一个或多个 Transact-SQL 语句的组,从应用程序一次性地发
送到 Microsoft SQL Server 执行。批作为一个整体执行,以 GO 命令结束。
批处理是客户端作为一个单元发出的一个或多个 SQL 语句的集合。每个批
处理编译为一个执行计划。
6、 触发器•触发器是在对表进行插入、更新或删除操作时自动执行的存储过
程•触发器通常用于强制业务规则•触发器可以确保数据的完整性和一致
性
7、 事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一
个不可分割的工作单位(构成单一逻辑工作单元的操作集合)如果某一事
务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永
久组成部分。