zoukankan      html  css  js  c++  java
  • 数据库面试

    1.事务

      用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

      细节:如果用户没有显示地定义事务,则由DBMS按照缺省规定自动划分事务。

         事务通常由BEGIN TRANSACTION开始,以COMMIT或者ROLLBACK结束。

    2.事务的特性:ACID

      原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的操作要么都做,要么全不做。

      一致性(Consistency):事务的执行结果必须使数据库从一个一致性状态变到另一个一致性状态。

      隔离性(Isolation):一个事务的执行不能被其他事务干扰。

      永久性(Durability):一个事务一旦提交,他对数据库中的数据的改变就应该是永久性。

    3.存储过程:

      一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

      存储过程是一个预编译的SQL语句,允许模块化的设计,只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用

      存储过程要比单纯SQL语句执行要快。一个存储过程可以调用其他存储过程。

    4.存储过程的优缺点:

      优点:

      1.存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂运算。

      2.可保证数据的安全性和完整性。

      # 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
      # 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
      3.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以存储过程可提高数据库执行速度。
      4.可以降低网络的通信量。
     
      缺点:
      1.调试麻烦
      2.移植、维护麻烦
      3.重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

    5.存储过程和函数的区别:

      函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。

      1.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

      2.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

      3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

    6.日志的作用是什么?

      事务日志是数据库中已发生的所有修改和执行每次修改的事务的一连串记录。事务日志记录每个事务的开始。

      它记录了在每个事务期间,对数据的更改及撤消所做更改(以后如有必要)所需的足够信息。

    7.触发器是什么?作用?

      通过事件来触发而执行。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。

    8.索引作用,优缺点,什么时候应该使用索引?什么时候不该使用索引?

      优点:

      1.索引是一种特殊的查询表,可以加速对数据的检索

      2.以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义

      3.在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间

      缺点:

      1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

      2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间

      3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度

      应用场合

      1.在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 
      2.在经常用在连接的列上,这 些列主要是一些外键,可以加快连接的速度; 
      3.在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 
      4.在经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; 
      5.在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

      避免:

      1.对于那些在查询中很少使用或者参考的列不应该创建索引。这是因 为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。

      相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 
      2.对于那 些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,

      结果集的数据行占了表中数据行的很大比 例,即需要在表中搜索的数据行的  比例很大。增加索引,并不能明显加快检索速度。 
      3.对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。 
      4.当修改性能远远大于检索性能时,不应该创建索 引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,

      但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因 此,当修改性能远远大于检索性能时,不应该创建索引

    9.锁的作用

      锁是实现事务的关键,锁可以保证事务的完整性和并发性,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或者数据结构,当然也是分级的。

    10.什么叫视图?游标是什么?

      视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增、改、查操作,视图通常是一个表或者多个表的行或列的子集。对视图的修改基本

      不影响基本表,它使得我们相比多表查询获取数据更容易。

      游标是对查询出来的结果集作为一个单元进行处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改,

      一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

    11.NULL是什么意思?

      NULL表示未知,它不表示“”(空字符).不能把任何与一个未知值比较,必须使用IS NULL操作符

    12.What is a "constraint"?

      A constraint allows you to apply simple referential integrity checks to a table.There are 5 primary types of constraints that are currently

      supported by SQL Server;

      PRIMARY/UNIQUE -enforces uniqueness of a particular table column.

      DEFAULT-specifies a default value for a column in case an insert operation does not provide one.

      FOREIGN KEY-validates that every value in a column exists in a column of another table.

      CHECK-checks that every value stored in a column is in some specified list

      NOT NULL-is a constraint which does not allow values in the specific column to be null.And also it is the only constranit which

      is not a table level constraint.

    13.What is a "primary key"?

      Primary key is a type of constraint enforcing uniqueness and data intergrity for each row of a table.All columns participating in a

      primary key constraint must process the NOT NULL property.

    14.What is a SQL View?

      View is a proecomplied SQL query which is used to select data from one or more tables.A view like a table but it doesn't physically

      take any space.View is a good way to present data in a particular format if you use that query quite often.

      View can also be used to restrict users from accessing the tables directly.

      A view otherwise known  as a virtual table is mere window over the base tables in the database. This helps us gain a couple of advantages:

      1.Inherent security exposing only the data that is needed to be shown to the end user.

      2.Views are updateable based on certain conditions.For examples,updates can only be directed to one underlying table of the view.After

      modification if the rows or columns don't comply with the conditions that the view was created with,those rows disapper from the view.

      You could use the CHECK OPTION with the view definition,to make sure that any updates to make the rows invalid will not be permitted to

      run.

      3.Views are not materialized(given a physical structure) in a database.Each time a view is a queried the definition stored in the database is

      run against the base tables to retrieve the data.One exception to this is to create a clustered index on the view to make it persistent in the

      database.Once you create a clustered index on the view,you can create any number of non-clustered indexes on the view.

    15.三级模式、二级映像

     三级模式:

       模式:数据库中全体数据的逻辑结构和特征的描述:

       外模式:数据库中局部数据的逻辑结构及其特征的说明

       内模式:描述数据的物理存储组织

     二级映像:

       外模式/模式:

        定义某一个外模式和模式之间的对应关系。

        数据库中的同一模式可以有任意多个外模式,对于每一个外模式,都存在一个外模式/模式映象。

        当模式改变时,外模式/模式的映像要作相应的改变,以保证外模式保持不变。

        由于应用程序是依据外模式编写的,这一映象功能保证了数据的逻辑独立性。

       模式/内模式:

        定义数据逻辑结构和存储结构之间的对应关系。

        当数据库的存储结构改变时,模式/内模式的映像必须作相应的修改,使得模式保持不变。

        通过映象功能,存储结构变化的影响被限制在概念模式之下,从而不必修改应用程序,即确保了数据的物理独立性

  • 相关阅读:
    Solr环境配置
    SolrJ解析MoreLikeThis查询结果
    思维导图软件PersonalBrain 6.0.6.4破解版使用
    离散对数-详解
    转:pptp和l2tp的区别
    DiffieHellman Key Exchange (DH)源代码
    磁盘IOPS计算
    转:TCP/IP Network Performance Benchmarks and Tools
    转:弄清楚你的业务类型——OLTP or OLAP
    U8软件的端口
  • 原文地址:https://www.cnblogs.com/daimingming/p/3252217.html
Copyright © 2011-2022 走看看