sql面试题及答案
sql面试题及答案一
  1. 简述索引存取的方法的作用和建立索引的原则
  作用:加快查询速度。
  原则:
  (1) 如果某属性或属性组经常出现在查询条件中,考虑为该属性或属性组建立索引;
  (2) 如果某个属性常作为最大值和最小值等聚集函数的参数,考虑为该属性建立索引;
  (3) 如果某属性经常出现在连接操作的连接条件中,考虑为该属性或属性组建立索引;
  2. 简述数据库的设计过程
  数据库设计分为五个阶段:
  需求分析:主要是准确收集用户信息需求和处理需求,并对收集的结果进行整理和分析,形成需求说明。
  概念结构设计:对用户需求进行综合、归纳、抽象,形成一个与与具体的DBMS无关概念模型(一般为ER模型)。
  逻辑结构设计:将概念结构设计的概念模型转化为某个特定的DBMS所支持的数据模型,建立数据库逻辑模式,并对其进行优化,同时为各种用户和应用设计外模式。
  物理结构设计:为设计好的逻辑模型选择物理结构,包括存储结构和存取方法等,建立数据库物理模式。
  实施和维护:实施就是使用DLL语言建立数据库模式,将实际数据载入数据库,建立真正的数据库。维护阶段是对运行中的数据库进行评价、调整和修改。
  3. 什么是内存泄漏?
  答案:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,
大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。
  4. 什么是基本表?什么是视图?
  答案:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。
数据库优化sql语句  视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表
  5. 试述视图的优点
  (1) 视图能够简化用户的操作
  (2) 视图使用户能以多种角度看待同一数据;
  (3) 视图为数据库提供了一定程度的逻辑独立性;
  (4) 视图能够对机密数据提供安全保护。
  6. 所有的视图是否都可以更新?为什么?
  答案:不是。
  视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。
  因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。
  7. 哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。
  答案:基本表的行列子集视图一般是可更新的。若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。
  8. 维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?
  答案:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,
当为下下之策。
  9. 在为视图创建索引前,视图本身必须满足哪些条件?
  (1) 视图以及视图中引用的所有表都必须在同一数据库中,并具有同一个所有者
  (2) 索引视图无需包含要供优化器使用的查询中引用的所有表。
  (3) 必须先为视图创建唯一集索引,然后才可以创建其它索引。
  (4) 创建基表、视图和索引以及修改基表和视图中的数据时,必须正确设置某些 SET 选项(在*档的后文中讨论)。另外,如果这些 SET 选项正确,查询优化器将不考虑索引视图。
  (5) 视图必须使用架构绑定创建,视图中引用的任何用户定义的函数必须使用 SCHEMABINDING 选项创建。
  (6) 另外,还要求有一定的磁盘空间来存放由索引视图定义的数据。
  10. 什么是SQL Server的确定性函数和不确定性函数?
  答案:只要使用特定的输入值集并且数据库具有相同的状态,不管何时调用,始终都能范围相同结果的函数叫确定性函数。几十访问的数据库的状态不变,每次书用特定的输入值都可能范围不同结果的函数叫非确定性函数。
 
sql面试题及答案二
  1. 提高数据库运行效率的办法有哪些?
  答案:在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是:
  (1) 在数据库物理设计时,降低范式,增加冗余, 少用触发器, 多用存储过程。
  (2) 当计算非常复杂、而且记录条数非常巨大时(例如一千万条),复杂计算要先在数据库外面,以文件系统方式用C++语言计算处理完成之后,最后才入库追加到表中去。这是电信计费系统设计的经验。
  (3) 发现某个表的记录太多,例如超过一千万条,则要对该表进行水平分割。水平分割的
做法是,以该表主键PK的某个值为界线,将该表的记录水平分割为两个表。若发现某个表的字段太多,例如超过八十个,则垂直分割该表,将原来的一个表分解为两个表。
  (4) 对数据库管理系统DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。
  (5) 在使用面向数据的SQL语言进行程序设计时,尽量采取优化算法。总之,要提高数据库的运行效率,必须从数据库系统级优化、数据库设计级优化、程序实现级优化,这三个层次上同时下功夫。
  2. 通俗地理解三个范式
  答案:通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解):
  第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
  第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟 一性;
  第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。