一、关于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固定资产临时表,则此表将被永久删除。