中级SQL与数据库的连接方式

                                                                        中级SQL与数据库的连接方式

1.视图

       出于安全考虑我们有时需要向用户隐藏特定的数据,或在逻辑层上让用户跟直观的看到想要的数据我们可以使用视图。它是一个逻辑商店概念,能对数据进行更好的封装。

        视图可以看作是逻辑层上的表,它在需要的时候才被创建(将数据从关系中查询出来)。它可以在某种程度上替代关系,sql同样可以基于视图使用。

        视图的创建:create view 视图名 as select语句             这就是把查询的结果创建层一个视图(逻辑上的表)

        如果视图会随关系中元组的改变而导致select结果改变,从而引起视图的改变那么这个视图就是物化的,它的结果会存放在数据库中。保持物化视图一直在最新状态的过程称为物化视图维护或简称视图维护。由于视图是逻辑层上的,我们一般不允许对视图进行修改(像插入操作可能会违反非空约束)。

视图、关系、表的区别:关系是一种规范化了的表(关系中每一个属性值都是不可分解的。关系中不允许出现相同的元组(没有重复元组)。由于关系是一个集合,因此不考虑元组间的顺序,即没有行序。元组中,属性在理论上也是无序的,但在使用时按习惯考虑列的顺序。),视图是在关系上建立的逻辑层上的表。

2.索引

        当需要查询打来那个的记录时,我们可以在关系的属性上创建索引,它是一种数据结构能够方便我们的查询。如果查询能够从索引中获益,那么sql查询会自动使用索引。

索引分为聚集索引(主索引)和非聚集性索引(辅助索引)

创建索引:create index 索引名 on 关系名(属性);


3.完整性约束约束(防止破坏数据的一致性)

nou null:非空约束      unique:候选码约束(即没有两个元组能在该约束中的元组取值完全相同)  check(P):子句(条件)约束   参照完整性约束:foreign/primary key

4.授权

         给用户对数据库操作的权限(有增删改查四中权限)

         授权:grant <权限> on 关系名/视图名 to 用户        收回权限:revoke <权限> on 关系名/视图名 from 用户

5.函数和过程

          函数和过程允许“业务逻辑”作为存储过程记录在数据库中,并在数据库内执行,尽管这样的业务逻辑能够写成程序设计语言过程并完全存储在数据库以外。但把它们定义成数据库中的存储过程有一下优点:允许多个应用访问这些过程,当业务逻辑改变时只需修改一次就行,代码可以调用存储过程而不是直接更新数据库(封装)。

         函数有返回值,过程没有返回值。创建语法:created function/procedure name(参数)

6.触发器(trigger)

         当对数据库作修改时,它自动别执行。设置触发器机制,必须满足两个要求:

          指明什么条件下执行触发器。分为引起触发器被检索的事件,和一个触发器执行要满足的条件

          指明触发器执行是的动作

           触发器通常不能执行数据库以外的更新,我们必须通过关系内部记录的更改,来引起系统外部进程(周期性扫描该记录)对外部数据进行更新。

         创建一个触发器:

                creat trigger 触发器名 before update/insert/delete of 属性 on 关系名

                         referencing old row as orow,new row as nrow

                          for each row

                          when

                                 //引发触发器的条件                           begin atomic

                                  //触发器的操作

                          end;

        触发器默认在创建时是有效的,但可以通过使用 alter trigger trigger_name disable设为无效。而且触发器的错误可能会引起另一个触发器,甚至是一个无线的触发器链,所以当有其他候选方法时我们应尽量避免使用触发器

 

7.事物

         事物是访问并可能更新数据项的一个程序执行单元。通常由高级数据操纵语言(SQL)或编程语言(C++,java)通过JDBC或ODBC嵌入式访问书写的用户程序的执行引起的。它由查询或更新语句的序列组成,sql标准规定当一条sql语句被执行时,就隐式的开始了一个事物。提交当前事物(commit)和回滚当前事物(rollback)将结束一个事物

事物的性质:

原子性:事物的所有操作在数据库中要么全部正确反映出来,要么完全不反映;

一致性:在没有其他事物并发执行的情况下保持数据库的一致性(数据不能凭空增加或删除);

隔离性:某一时刻只有一个事物在执行。尽管事物可以并发但只是在一段时间内看起来有多个事物同时执行,它们有先后顺序。

持久性:一个事物成功完成后,它对数据库的改变是持久的,即使出现系统故障。


9、通过JDBC连接数据库的方式
  
JDBC-ODBC bridge driver方式可以访问一个ODBC数据源,但每台客户端计算机需要安装并配置ODBC驱动程序。
   Native-API partly Java driver
方式将JDBC调用转换成特定数据库API的调用,该方式要求每台客户端计算机安装特定数据库的驱动程序。
   JDBC-Net pure Java driver
方式将JDBC调用转换为独立于数据库的中间件厂商的专有数据库访问协议,然后由其负责与数据库的连接活动。
   Native-protocol pure Java driver
方式将JDBC调用转换为数据库直接使用的标准网络协议(例如HTTP等)。这种方式不需要安装客户端软件,客户端计算机可以直接与数据库服务器进行数据交流活动。 

猜你喜欢

转载自startkeep.iteye.com/blog/2211922