数据库中如何写视图,以及视图项目中实际应用

          最近遇到一个需求需要查出3个表的数据,并且有两个表不能连表查询,他们有各自的筛选条件,写出的sql语句如下:

select 'c' || ec.base_dep_code || '_' || ec.no id,
                 ec.base_dep_code || '_' || ec.no username,
                 ec.name,
                 'c' usertype,
                 bd.input_code base_dep_name,
                 ec.no
                  from ERP_CUSTOMER ec
                  left join base_dep bd
                    on bd.code = ec.base_dep_code
                 where 1 = 1
                   and Upper(ec.name || ec.base_dep_code || ec.no ||
                             ec.input_code) like '%CP%'
                union all
                select ee.id         ID,
                       ee.name       as username,
                       ee.name       as Name,
                       ee.Input_Code usertype,
                       bd.short_name     base_dep_name,
                       ee.id         as NO
                  from ERP_EMPLOYEE ee
                  left join base_dep bd
                  on bd.code = ee.base_dep_code
                 where 1 = 1
                   and Upper(ee.name || ee.input_code || ee.email) like "cp"
                       '%CP%'
这样写很不灵活,遇到筛选条件一变就无法继续使用了,
现在我们可以这样做,写一个视图,把这3个表所有的数据用一个视图查出来,放在一个虚拟的表中,然后再在这个虚拟的表上加筛选条件即可,这了样让语句变的灵活,且达到视图的复用,并且更易阅读.
create or replace view v_system_user as
select
       'c' || e.base_dep_code||'_'||e.no as id,
       e.base_dep_code||'_'||e.no as username,
       e.name,
       '' password,
       'c' as type,
       '客户' as type_name,
       input_code,
       e.sex gender,
       (select name from base_dep bd where bd.code = e.base_dep_code) base_dep_name,
       e.base_dep_code,
       '' state,
       telephone,
       e.email,
       mobile,
       qq,
       '' receive_sms,
       '' receive_sms_start_time,
       '' receive_sms_end_time,
       '' question,
       '' answer
  from erp_customer e
  union all
select
       'w' || ee.id as id,
       ee.id username,
       ee.name,
       '' password,
       'w' as type,
       '员工' as type_name,
       input_code,
       ee.sex gender,
       (select name from base_dep bd where bd.code = ee.base_dep_code) base_dep_name,
       ee.base_dep_code,
       '' state,
       telephone,
       ee.email,
       mobile,
       qq,
       '' receive_sms,
       '' receive_sms_start_time,
       '' receive_sms_end_time,
       '' question,
       '' answer
  from erp_employee ee;
这个视图查出来的数据是包括这几个表联合后的所有信息,这样如果在这个试图基础上去加筛选条件就会使得查询数据变得十分的简单.
在写代码的时候就可以把数据库变成试图这样代码更加清晰且容易阅读,并且也十分规范.
private static final String TABLENAME = "V_SYSTEM_USER";申明视图
StringBuffer sql = new StringBuffer();
sql.append(" select * from " + TABLENAME + " t where 1=1 " );
if(!CommonFun.isNe(filter)){
sql.append(" and Upper(id||username||name||type_name||base_dep_code||email||input_code) like :filter");
}
params.put("filter", "%" + filter.toUpperCase() + "%");

在编程行业中,复用真的应该无处不在,特别是面向对象语言中,一定要养成这种习惯.

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库审计系统在医院HIS数据库应用全文共3页,当前为第1页。数据库审计系统在医院HIS数据库应用全文共3页,当前为第1页。数据库审计系统在医院HIS数据库应用 数据库审计系统在医院HIS数据库应用全文共3页,当前为第1页。 数据库审计系统在医院HIS数据库应用全文共3页,当前为第1页。 数据库审计系统在医院HIS数据库应用 一、医院数据库使用DBS系统的意义   数据库安全审计系统主要用于监视并记录对数据库服务器的各类操作行为,通过对网络数据的分析,实时地、智能地解析对数据库服务器的各种操作,并记入审计数据库以便日后进行查询、分析、过滤,实现对目标数据库系统的用户操作的监控和审计。它可以监控和审计用户对数据库数据库表 、视图、序列、包、存储过程、函数、库、索引、同义词、快照、触发器等的创建、修改和删除等,分析的内容可以精确到SQL操作语句一级。它还可以根据设置的规则,智能的判断出违规操作数据库的行为,并对违规行为进行记录、报警。由于数据库安全审计系统是以网络旁路的方式工作于数据库主机所在的网络,因此它可以在根本不改变数据库系统的任何设置的情况下对数据库的操作实现跟踪记录、定位,实现数据库的在线监控,在不影响数据库系统自身性能的前提下,实现对数据库的在线监控和保护,及时地发现网络上针对数据库的违规操作行为并进行记录、报警和实时阻断,有效地弥补现有应用业务系统在数据库安全使用上的不足,为数据库系统的安全运行提供了有力保障。   二、医院数据库系统实际应用   第一次使用设备,需要更改ip地址以便后期使用,配置ip地址后在ie地址栏输入更改的ip地址后,登陆到DBS系统,初次登本文由毕业论文网收集整理陆系统需要配置需要审计的数据库类型,数数据库审计系统在医院HIS数据库应用全文共3页,当前为第2页。数据库审计系统在医院HIS数据库应用全文共3页,当前为第2页。据库服务器的ip地址,操作系统及系统版本,配置完成后,便可以使用了.   在系统首页可以看到系统概括,其包括事件类型,大延时数,攻击事件等.   其攻击事可详细观察危险等级,攻击的源ip,攻击事件描述,特征规则以及危险等级.比较详细的了解当前数据库被攻击的次数和行为.   延时分析可以看到什么事件使用了什么语句执行耗费时间较长的,后期可以用来对数据库进行优化.   统计分析可以看到时间和业务量的分布图,下面的还可以看到这一天的时间内总共执行了多少条SQL语句以及分别是什么类型的语句.还可以以柱状图的方式体现各种统计信息,比如客户端IP,TCP会话,SQL模板等柱状图.   还有一项比较重要的功能就是监控高危操作,这个功能需要再策略心里进行定义,比如SQL比较危险的DELETE语句,还有医院最需要避免的统方操作,这都是可以进行监控的.   三、日常维护   由于这个审计系统内置了一个500g的硬盘,这个DBS系统和审计数据都是保存在这个硬盘,随着审计数据每天增长,硬盘容量也变的相对有限,所以我们要对数据进行维护,设定磁盘预警和数据保留天数.   在系统配置-工作参数配置磁盘预警和数据处理 数据库审计系统在医院HIS数据库应用全文共3页,当前为第3页。数据库审计系统在医院HIS数据库应用全文共3页,当前为第3页。  磁盘预警配置预警阀值,保护阀值和处理方式,一般我们设置为预警阀值81%,保护阀值91%,处理方式选择覆盖,这表示如果达到阀值的话会覆盖最早的数据来避免数据超出阀值.   数据保留天数,一般设置30天后删除(也是默认的保存天数)   四、总结   锐捷网络RG-DBS系列数据库安全审计系统,是锐捷网络推出的以精确完整审计、定位到人为核心技术,并能够对数据库进行优化的数据库安全审计系统。通过对网络数据库操作的精准判断,结合政策规定的自定义过滤,输出准确、详细的审计日志,达到who、when、where、what的4W精准审计。间件是数据库普遍应用的,RG-DBS系列在有间件的环境下仍然做到精准定位到人。数据库常遇到运行缓慢、死锁的问题,RG-DBS系列通过对SQL语句的延时分析,帮助优化数据库,从根本上解决问题。    数据库审计系统在医院HIS数据库应用全文共3页,当前为第2页。 数据库审计系统在医院HIS数据库应用全文共3页,当前为第2页。 数据库审计系统在医院HIS数据库应用全文共3页,当前为第3页。 数据库审计系统在医院HIS数据库应用全文共3页,当前为第3页。 感谢您的阅读! 数据库审计系统在医院HIS数据库应用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值