zoukankan      html  css  js  c++  java
  • sql的升阶

    前言:基本数据库操作根本无法满足实际的需要,需要引入更多的操作。

     

    触发器-隐式的,主动的,更新数据表中的信息。带有inserted和deleted两个临时表,代表新操作和旧操作。


       它是一种特殊的存储过程,它不能被显式地调用,而是在往表中做出更改操作时自动激活。触发器可以用来对表实施复杂的完整性约束。
       触发器语句的用法——里面的几个示例可以让你快速掌握触发器的应用。

     

    索引-提高数据库的查询数据


          索引是一种提高数据库查询速度的机制,它是一个数据库的表或视图上按照某个关键字端的值,升序或降序排序创建的对象。当用户查询索引对象时,它可以快速执行检索操作。
          create index命令创建索引如下:
          create [unique][clustered|nonclustered] index index_name on{table|view} colunm{asc|desc}[,...n][ WITH < index_option > [ ,...n] ]  [ ON filegroup ]

                             例如:
                                create unique clustered index pk_表名//注这个可以自己注意命名
                                 on 表名(列名)
                                with
                                pad_index,fillfactor=10,
                                drop_existing

                             创建索引能大大提高系统的性能,主要表现在以下几个方面:

                              1,创建唯一性索引,可以保证每一行数据的唯一性。
                              2,通过索引,可以大大加快数据的检索速度。
                              3,通过索引可以加速表和表之间的连接,从而有效实现数据的参考完整性。
                              4,使用分组和排序字句进行数据检索时,可以减少查询时间。
                              5,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

     

    回滚-数据库或,应用程序出错时,数据库能够被还原。

     

         回滚执行相反的操作,可以撤销操作,从而保证数据的完整性。回滚是指将数据库的状态恢复到执行事物之前的状态。

     

    数据备份的种类


         完全备份,差异备份,事物日记备份,增量备份。

     

    游标-参考


          游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力。
    (有点分而治之的意思。)

         它的缺点是处理大数据量时,效率低下,比较占内存。一般来说,能使用其他方式处理数据时,最好不要使用游标,除非是当你使用while循环,子查询,临时表,表变量,自建函数或其他方式都无法处理某种操作的时候,再考虑使用游标

     

    数据库日志满了,会出现什么情况?


         日志文件记录对所有数据库数据的修改。一旦满了,只能进行查询操作。

     

    并发环境保证数据的一致性


         并发一般是指多用户同时访问相同的数据。数据一致性是指系统中每个用户都能够取得其具备一致性的数据,同时还能看到自己或其他用户所提交的事务对数据的修改。
         并发环境下,一般可以采用多种机制来保证数据的一致性。例如,事务级的一致性,行级锁,表级锁。
         使用行级锁,会在试图修改一个没有提交的事务更新的行时产生等待。第二个事务等待其他事务提交或者撤销来释放它的锁,才能更新给定的行。

     

    查看哪个用户往数据库中插入一行数据


    1,审计功能。
    2,触发器。
    create of replace trigger tgname after insert on tbname for each row begin insert into ta(日期) values(sysdate)  commit; end;
    3,通过logmnr日志查看
    logmnr是oracle公司提供的分析工具。

     

    参考资料:程序员面试笔试宝典,百度知道,CSDN等。

  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/HuSay/p/5940289.html
Copyright © 2011-2022 走看看