审计中使用SQL的探讨——基于AO(2008)现场审计实施系统,本文主要内容关键词为:现场论文,系统论文,SQL论文,AO论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
一、关于Structured Query Language
Structured Query Language(以下简称SQL),即结构化查询语言,美国国家标准协会(ANSI)将其作为关系数据库的标准语言。SQL功能强大,集成实现了数据库生命周期中的全部操作,集数据定义(CREATE、ALTER、DROP)、数据操纵(INSERT、UPDATE、DELETE)、数据控制(COMMIT、ROLLBACK)、数据查询(SELECT)功能于一体;SQL简洁易懂,只有9条命令:CREATE、DROP、ALTER、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE,且语法简单,与英语自然语言很接近,容易学习和掌握;SQL高度非过程化,只要求用户指出做什么而不需要指出怎么做;SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
二、SQL语言在计算机辅助审计中的应用
在计算机辅助审计软件中,可以使用SQL语句的数据查询功能、数据定义功能、数据操纵功能。
(一)数据查询功能及其在计算机辅助审计中的应用
数据查询功能是SQL语言最主要、最核心的内容。在审计软件中引入SQL查询器,把审计思路转化为计算机的SQL查询语句,从数据库中获取所需要的数据,分析出审计需求,能使信息化环境下的审计工作达到事牛功倍的效果,推动计算机辅助审计的快速发展。
在审计查询中所使用的SQL语句大多是对财务数据和业务数据的查询,分为单表查询和多表查询两类。
1.单表查询
单表查询是指所处理的问题仅涉及一个表的记录。如在审计软件的SQL查询器中输入语句:Select[姓名],[单位名称]From[业务_先进工作者];如查询所有表中数据:SQL语句为Select*From[业务_先进工作者];如对单个表有条件查询,则用where指定查询条件,此种情况下SQL语句的语法为“select*from表名where条件”,如查询总会计师系列的候选人的记录,SQL语句为Select*From[业务先进工作者]WHERE[参评系列]LIKE总会计师系列';也可以指定单个条件或多个条件,各条件间可能是and或or的关系:如查询总会计师系列、会计管理工作系列、注册会计师系列的候选人的姓名和单位名称,参评系列的所有记录,SQL语句为Select[姓名],[单位名称],[参评系列]From[业务_先进工作者]WHERE[参评系列]IN('总会计师系列','会计管理工作系列','注册会计师系列');如查询编号的尾号为22的会计工作系列的候选人信息的记录,SQL语句为Select*From[业务_先进工作者]WHERE[参选编号]LIKE'%22'AND[参评系列]LIKE'会计工作系列';也可配合其他函数或关键字使用,如查询注册会计师系列的侯选人的得票合计数,SQL语句为SelectSUM([合计])From[业务_先进工作者]WHERE[参评系列]LIKE'注册会计师系列',即得到符合条件的合计值:也可用集函数按条件查询:如查询所有候选人的总人数,SQL语句为Select COUNT(*)From[业务_先进工作者],即得到符合条件的统计值:也可对关键字的内容进行查询:如查询所有姓张的侯选人的详细信息,SQL语句为Select*From[业务_先进工作者]WHERE[姓名]LIKE‘张%’;此种情况较为常用,查询包含某些关键字的所有记录,也可结合关键字and或or等查询多个条件。也可对某个字段进行分组,查询各字段属性分别对应的发生次数,并按发生次数进行排序:如统计每个系列的候选人人数,列出系列名字和人数,按候选人数进行排序,SQL语句为Select[参评系列],COUNT(*)From[业务_先进工作者]CROUPBY[参评系列],此情况常用于对某个所关心字段的分类统计,得出每个类别所发生的次数,并可按发生次数进行排序。分组查询使用也非常普遍,此时group与having联用:如查询参评系数人数在100人以上的参评系列名称和人数,SQL语句为Select[参评系列],COUNT(*)From[业务_先进工作者]CROUPBY[参评系列]HAVINGCOUNT(*)>100,此类语句常用于要列出所关心某字段的某一个或几个条件限制下发生次数超出某范围的情况。
2.多表查询
多表查询一般需根据各表的相应关键字进行连接。这种情况下必须对各表的对应关键字进行关联,连接是关系数据库模型的主要特点,也是它区别于其他类型数据库管理系统的一个标志。一般情况下是对两张表进行关联查询,多表连接可分为内连接、外连接、自身连接、交叉连接。其中内连接又分为等值连接、不等连接和自然连接,外连接又分为左连接、右连接和全连接。审计工作中所用到的多是内连接与外连接,较少用到自身连接与交叉连接。多表联接查询的语法一般为Select*From表a Join表b inner/left/fight/full/outer on表a,关键字=表b.关键字,两表关键字应相同。如查询凭证库中科目级次,以凭证库中科目编码和会计科目库中的科目编码为关键字,SQL语句为Select凭证库.科目编码,凭证库.科目名称,会计科目.科目级别From凭证库LEFT ON凭证库.科目编码=会计科目.科目编码。由于ACCESS数据库不支持全连接和全外连接,在AO 2008单机作业模式中不能使用此两种连接进行查询。
另外SQL语句还能设计出子查询和嵌套查询,能把查询结果作为参数返回给另一个查询,将多个查询绑定在一起,解决较为复杂的审计需求。
(二)数据定义功能及其在计算机辅助审计中的应用
数据定义功能包括创建表、修改表结构、删除表结构及表等三类语句。
创建表就是定义表中各个列的类型和约束,一般使用CREATE语句,如创建一个固定资产临时表,要求表结构为七列,分别为固定资产编码,固定资产名称,固定资产类别,所属部门,数量,金额,存放地点等,除数量,金额为数值型外,其他列定义均为字符型,无约束,SQL语句为CREATETABLE固定资产临时表(固定资产编码char(15),固定资产名称char(30),固定资产类别char(10),所属部门char(20),数量int,金额int,存放地点char(20)),执行后即得到固定资产临时表,在AO2008中创建表后并无显示,应点击“添加表”将这张表加入,新建的表将出现在数据表中的用户自定义栏目下。
如果想对刚刚创建的固定资产临时表进行修改,需要使用ALTER语句,如将表中固定资产编码一栏修改为数值型便于查询归类操作,SQL语句为ALTERTABLE固定资产临时表MODIFY固定资产编码int。
如果审计后不需要使用此张临时表,可将其删除,删除表使用DROP语句,它的功能是从数据库中删除一个指定的表以及与之相关的索引和视图,此命令一旦执行没有办法恢复表。如执行SQL语句DROPTABLE固定资产临时表,则此表将被永久删除。
(三)数据操纵功能及其在计算机辅助审计中的应用
数据操纵功能主要包括数据插入、删除与修改。
如果想在表中插入一条记录,则使用INSERT语句,如想在固定资产临时表中增加一条购置车辆的新纪录,SQL语句为INSERTINTO固定资产临时表(固定资产编码,固定资产名称,固定资产类别,所属部门,数量,金额,存放地点)VALUES(990328,宝马轿车,资产管理部,1,328000.00,资产管理部),执行后即增加一条新记录。
如果要修改表中已经存在的一条或多条记录,则使用UPDATE语句,可以使用WHERE子句来设计更新条件。如将固定资产临时表中的所有管道泵的金额更改为7500元,SQL语句为UPDATE固定资产临时表SET金额=7500 WHERE固定资产名称LIKE‘%管道泵%’。
如果想删除表中记录,则使用DELETE语句,DELETE语句将只会把整条记录全部删除,但不影响表结构,执行语句后,符合设定条件的记录将被删除。如将固定资产临时表中所有管道泵的记录删除,SQL语句为DELETEFROM固定资产临时表WHERE固定资产名称LIKE‘%管道泵%’。
三、SQL语句在计算机辅助审计中应用实例
审计中,将人员数据包及电子数据包通过审计软件的导出功能转为相应的数据包,再导入审计项目组成员的审计软件中,按审计工作方案对电子数据进行审计查询分析。下面介绍几个重点问题审计分析中SQL语言的应用。
1.多计提相关附加费,发现少计收入、漏缴税费、隐匿资产等问题
对资本公积(311)中涉及到“收入”项目的进行过滤筛选,SQL语句为Select*Fro[凭证库]wherer[科目编码]LIKE'3111%'AND[摘要]LIKE'%收入%':得到问题表,进行疑点分析,并对照管理部门提供的资料进行比较,表中所增加的资本公积均为按收入比例的10%提取的相关附加费;进一步分析,SQL语句为Select month([凭证日期])AS月份,sam([贷方金额])AS违规提取附加费From[凭证库]WHERE[科目编码]LIKE'311%'AND[摘要]LIKE'%收入%'GROUPBYmonth([凭证日期]);得到问题表,对此进行各月附加费和收入分析。根据有关规定确定多提附加费、少计收入,少缴了各项相关税费的事实。
进一步分析,SQL语句为Selectsam([贷方金额])AS隐匿资产From[凭证库]WHERE[科目编码]LIKE'311%'AND[摘要]LIKE'%收入%'ANDmonth([凭证日期])<=2;得到问题表。该公司已改制,改制资产评估与清算以2月28日为基准日,1月1日至2月28日多计提的附加费改制清算时调整为企业负债,构成虚增企业负债,未计入企业资产。
2.扩大费用支出
对有关奖金、税金、审计评估等进行疑点过滤,逐一排查,SQL语句为Select*From[凭证库]WHERE[科目编码]LIKE'502%'AND[借方金额]>=50000;得到问题表,并进行疑点落实。经查该公司委托某事务所对职工集资住宅楼进行决算审计,审计费列入“管理费用——办公费”。该项费用应计入建房成本由购房人负担,扩大了费用支出。
3.欠缴相关附加费
根据该公司提供的相关审计证据,全年计提相关附加费减去1月至2月计提的相关附加费,截止上一年底计提的相关应上缴费用未按规定上缴。SQL语句为Select month([凭证日期])AS月份,sum([贷方金额])AS违规提取附加费From[凭证库]WHERE[科目编码]LIKE'311%'AND[摘要]LIKE'%收入%'GROUP BYmonth([凭证日期])ANDmonth([凭证日期])<=2;得到问题表。
4.欠缴、截留税费
对各项税费进行分类、计算,SQL语句为SelectDISTINCT[科目编码],[科目名称],[期末余额]AS欠缴截留税费额From[科目余额]where[科目编码]LIKE'217%'ANDlen([科目编码])>4;得到问题表,根据表中所列,截至当年底,欠缴营业税、城市维护建设税、增值税、房产税、土地税、教育费附加、截留个人所得税等。
5.管理费用中的混乱支出
首先对管理费用各明细科目当年发生额进行分类筛选,SQL语句为Select[科目编码],[科目名称],sam([借方金额])AS借方发生额合计,sam([贷方金额])AS贷方发生额,count(*)AS笔数From[凭证库]WHERE[科目编码]LIKE'502%'ANDlen([科目编码])>4GROUPBY[科目编码],[科目名称];得到问题表,对其管理费用各项目进行比率分析,抽查比率较高的项目。尤其关注招待费和会议费支出,SQL语句为Select*From[凭证库]WHERE[科目编码]LIKE'502%'AND(摘要LIKE,%招待%,OR摘要LIKE'%会议%'),得到问题表抽查疑点。