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等。

  • 相关阅读:
    CS round--36
    Vijos 1002 过河 dp + 思维
    汇编模拟36选7
    1137
    E. Mike and Foam 容斥原理
    Even-odd Boxes hackerrank 分类讨论
    112. 作业之地理篇 最小费用最大流模板题
    1550: Simple String 最大流解法
    Sam's Numbers 矩阵快速幂优化dp
    java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
  • 原文地址:https://www.cnblogs.com/HuSay/p/5940289.html
Copyright © 2011-2022 走看看