程序员面试笔试宝典学习记录(三)(数据库相关知识)

    关系数据库系统与文件数据库系统的区别如下:

    (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化。

    (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件。

    (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式。

 

    acid,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。

 

    数据查询:select select * from table where 条件语句

    数据操作:insert into table(字段名1,字段名2...)values(值1,值2...)

                  update table set 字段名=字段值 where 条件语句

                  delete from table where 条件表达式

    数据定义:create table tablename(字段1,字段2...)

                  drop table tablename

    数据控制:grant <系统权限>|<角色>[,<系统权限>|<角色>]...to <用户名>|<角色>|public[,<用户名>|<角色>]...[with admin option]

                  revoke <系统权限>|<角色>[,<系统权限>|<角色>]...from <用户名>|<角色>|public[,<用户名>|<角色>]...

 

    内连接和外连接的区别

 

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

 

    在数据库中,锁主要是堆数据进行读/写的一种保护机制,从数据库系统的角度来看,一般可以将锁分为共享锁和互斥锁。共享锁简称S所,也叫读锁。互斥锁简称X锁,也叫排他锁,用于数据的修改操作。

 

    常见的范式有1NF,2NF,3NF,BCNF,以及4NF。

 

    视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表。它是一个虚表,在数据库中,存放的只是视图的定义而已,不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中。

 

    触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动。当数据库有特殊的操作时,对这些操作由数据库中的事件来出发,自动完成这些SQL语句。使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束。

    事前触发发生在事件之前验证一些条件或进行一些准备工作;事后触发发生在事件发生之后,做收尾工作,保证事务的完整性。而事前触发可以获得之前和新的字段值。语句级触发器可以在语句执行之前或之后执行,而行级触发在触发器所影响的每一行触发一次。

 

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

    索引结构一般B树,B+树,当然也可以使哈希表。创建索引可以大大提高系统的性能:

    (a)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

    (b)通过索引,可以大大加快数据的检索速度。

    (c)通过索引可以加速表和表之前的连接,从而有效实现数据的参考完整性。

    (d)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

    (e)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    B+树最常用,性能也不差,用于范围查询和单值查询都可以。特别是范围查询,非得用B+树这种顺序的才可以了。

   HASH的如果只是对单值查询的话速度比B+树快一些。

   位图的使用情况很局限,只有很少的情况才能用,一定要确定真正合适使用这种索引采用(值的类型很少并且需要复合查询),否则建立一大堆位图一点意义都没有了。

 

    游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

 

    

 

 

  

posted @ 2014-08-12 20:16  weixliu  阅读(...)  评论(...编辑  收藏