易截截图软件、单文件、免安装、纯绿色、仅160KB

数据库视图(oracle)

使用数据库视图通常出于以下两个目的:1。降低操作复杂度;视图是预编译的查询操作,一次定义,之后可快速调用;2。提高系统安全。视图作为数据库对象,可以将其权限独立出来赋给用户,可避免用户对基表的盲目危险操作,同时也可屏蔽一部分私密的属性列。
定义语句:
 CREATE
[OR REPLACE
]
[FORCE
|NOFORCE
] VIEW
YOUR_VIEW_NAME
        (COLNAME1,COLNAME2,COLNAME3,...,COLNAMEn)
AS
        [YOUR_QUERY_STATEMENTS WILL WRITE HERE !]
        [WITH CHECK OPTION
[CONSTRAINTNAME
constraint_name]]
        [WITH READ ONLY
]
对视图的查询操作实际是运行建立视图的sql语句。所以当用户自己修改基表信息时,主表改变,查询视图时也同时输出最新的信息,这样做可以尽可能减少对数据库空间的占用,并且不需要同步操作。
视图也可进行DML操作,但是在操作时要注意以下原则:
条件一:在连接视图中不能有Order by排序语句。
      这主要是因为采用了Order by排序语句后,记录的物理存储顺序发生了改变。此时,若在视图上进行了数据更新,则其对应的基础表找不到具体更改的物理位置。所以,会以失败告终。
  类似的,也不能够在SQL语句中含有Group by、connetc
by等语句。若有这些语句的话,则数据库都不允许对数据进行数据更新操作。
条件二:基础表中所有的NOT NULL列都必须在这个视图中。
      若想在视图上进行数据更新操作的话,则必须要求对应基础表中的所有不允许空的字段都在当前的视图中。其实这很好理解,若每个字段不允许为空,则又不在当前的视图中,则新增加记录的时候,这个字段就没有被赋值,故在保存时就会被基础表所拒绝。
      另外,需要注意的是,无论是更新还是删除语句,若基础表中的某个非空列不在这个视图中,都无法进行更改。也许有人会问,如果用户不是增加记录,而只是更新
数据。那难道也要求在视图中包含所有的非空字段呢?答案是肯定的。因为数据库系统在提交更新事务之前就会对这个条件进行判断。
条件三:需要更新的列不是虚拟列。
     在视图中,可能有些列的结果是通过列表达式定义的,在基础表中并不存在。我们


相关文档:

oracle 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

(转)oracle和db2区别

项目中一直都是用db2,所以对db2也算有个一知半解,而对oracle则是知之甚少,一直苦于没有机会来练手。最近项目组在做db2到oracle的迁移,终于逮着机会了。今天简单说些在实际项目遇到得一些问题,以后再慢慢补充。同时也希望仁人志士多多指点。   
         由于 ......

Oracle中TO_DATE格式

TO_DATE格式(以时间:2007-11-02   13:45:25为例)
Year:     
yy two digits 两位年            显示值:07
yyy three digits 三位年          &nbs ......

查询oracle当前连接数

   我们假设是数据库管理员,为了数据库的安全,我们需要知道当前有多少连接数,最大支持多少连接数,可以用以下语句查询
      select username,count(username),machine,status from v$session         
    &n ......

oracle监听启动不了

1 问题描述
oracle数据库在服务器上运行正常,但是不能通过网络连接(即使用客户端不能连接数据库,在服务器端正常,诊断的初步原因为监听器问题)。在服务器端使用以下命令:
bash-3.1$ cd $ORACLE_HOME/bin
bash-3.1$ ./lsnrctl
LSNRCTL> status
结果出现:
CONNECT (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=E ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号