经典常用sql语句

2022-07-31

第一篇:经典常用sql语句

审计模式下常用的SQL查询语句示例

随着信息技术的不断发展,被审计对象的财务和业务系统也大多使用了专用软件进行计算机管理,如果暂不考虑计算机软硬件本身的系统审计,那么我们所面对的审计也就分为了以财务账套为基础的账套式审计模式和直接对数据本身(包括财务数据和业务数据)审计的数据式审计模式。但不论是何种审计模式,最根本的还是要使用计算机语句对具体问题进行查询分析,即通过数据库的SQL查询语句对数据库中的数据表进行查询分析。

虽然SQL语句的功能很多,且不同数据库环境下的具体使用也会因为所遵循的官方标准不同而略有差别,但多数情况下的使用是相通的。同时因为审计工作的特点,所使用的SQL语句也多是对数据的查询,一般并不会包括对原始数据的增加、删除、修改等操作,所以在计算机审计中重点需要掌握的内容就是灵活利用SQL语句的查询功能。实际审计工作当中,在数据审计模式下我们所常用的是如下所示的语句,也是从实际审计工作中收集出具有代表性的语句,并且所有语句都基于Access数据库,在AO现场审计实施系统中可正常使用。

一、对单个表的条件查询,用where指定查询条件,也有不使用where的情况,多用于对原始表的统计、分类等

该类情况下SQL语句的语法是“select * from 表名 where 条件”。可以指定单个条件或多个条件,并可配合其他函数或关键字使用,常用到的类型有如下几类。

(一)对单个条件的简单查询:

select * from 存款表 where 金额>=100000; 该情况的使用较为简单,适用于任何单条件查询。

(二)对多个条件的查询,各条件间可能是and或or的关系:

select * from 存款表 where金额>=100000 and 存款时间 >= #2006-1-1#;

该情况常用于对多个条件的查询,根据关键字and或or来决定是同时满足所有条件还是仅满足某些条件。

(三)对多个条件的查询,得到符合条件的某字段的合计值:

select sum(金额) from 存款表 where金额>=100000 and 存款时间 >= #2006-1-1# and 存款时间<= #2006-12-31# order by 金额 desc, 存款时间 asc;

该情况一般用于统计某种条件下的合计值,常用于对某种情况下的总金额情况进行了解。

(四)用集函数按条件查询:

select count(* ) from 凭证表 where 金额>=100000; select max(发生金额) from 存款表; select avg(发生金额) from 存款表;

该情况类似于上面求和函数的使用,可根据具体需求进行应用。

(五)对关键字的内容进行查询:

select * from 凭证表 where 摘要 like „%招待费%‟; 该情况较为常用,查询包含某些关键字的所有记录,也可结合关键字and或or等查询多个条件。

(六)查询内容是否包含在给定的范围内:

select * from 科目代码表 where 科目代码 in („101‟,‟102‟); 该情况用于所关心的字段包含内容类别较少的情况,常用在已基本确定查询范围之后。当所关心内容类别较多时可使用下面将提到的两张表的嵌套查询。

(七)对某个字段进行分组,查询各字段属性分别对应的发生次数,并按发生次数进行排序:

select 款项代码, count(款项代码) as 次数from大额现金支取表 group by 款项代码 order by count(款项代码) desc; 该情况常用于对某个所关心字段的分类统计,得出每个类别所发生的次数,并可按发生次数进行排序。

(八)按某个字段的长度进行分类并进行排序:

select len(科目代码) as 发生次数from 科目代码表 group by len(科目代码) order by len(科目代码) desc;

该情况用于了解某字段的长度分组情况,可对所取得的原始数据进行验证,以证实原始数据的规范性或找出不规范情况的问题所在。

(九)分组查询,group与having联用:

select 客户号,count(*) as 发生次数

from 存款表

where 发生金额>=100000 group by 客户号 having count(*)>1;

该类语句常用于要列出所关心某字段的某一个或几个条件限制下发生次数超出某范围的情况。如查询发生多次(即同一关键字发生的记录数大于1)大额存取的客户号及其存取次数,查询结果按客户号分组。

以上各类对单个表的查询结果并未直接存储成新表,不利于对查询结果的进一步分析利用,我们可以使用“select * into 新表名 from 表名 where 条件”这种语句格式把查询结果保存成新表,如

select * into 大额存款发生情况表 from 存款表 where 金额>=100000;

二、对多个表的条件查询,一般需根据各表的相应关键字进行连接

这种情况下必须对各表的对应关键字进行关联,一般情况下是对两张表的关联查询,当有更多张表要操作时可以每次对两张表操作后再和剩余的表关联操作,也可以扩展SQL语句同时对两个以上的表操作,以下只列出对两张表操作的情况。

(一)两张结构相同的表合并并生成新表,使用关键字union进行联合查询:

select * into 中间表 from

(select * from 原始表1 union select * from 原始表2); 该情况常用于对多个原始表的整理以生成中间表,便于后续的查询工作。如合并采集到的原始数据,将原本分月存储的数据表全并成分年度存储的数据表。

(二)两张表的连接,生成新的中间表:

select a.*,b.客户名称into 含客户名称的现金支取表 from现金支取表 as a, 客户基本信息表 as b where a.款项代码=b.款项代码; 使用该类语句的前提是两张表存在相关联的关键字,常用于一张表根据两表的连接关键字引入另一张表的某些字段,为后续的查询准备好中间表。其中使用别名可以简化SQL语句的输入。如财务数据中采集到的凭证表是两张表时,可连接两表引入摘要字段等。

(三)两张表的关联查询,可加入多个条件:

select a.*,b.科目代码 from 对公活期存款明细表 as a, 活期存款账户动态表 as b where a.款项代码=b.款项代码 and 科目代码 like ‟201%‟;

该情况可看作对两张表连接的扩展,即根据where所限定的条件来对两张表关联查询。

(四)两张表的嵌套查询,两层查询间要使用关键字in:

select * into频繁发生大额现金支取

from大额现金支取

where 交易金额>=100000 and 款项代码 in (

select 款项代码

from款项代码发生次数_大额现金支取

where 次数 >= 10 )

order by 款项代码,交易金额,记账日期;

这种情况也可理解为简单查询,不同的是其中where所指定的某个条件是由另一张表的又一个查询所指定的,与单表查询的语句

select * from 科目代码表 where 科目代码 in („101‟,‟102‟); 进行对比后发现,可将两张表的嵌套查询看作如上语句的扩展。如利用大额现金支取表和大额现金支取的款项代码发生次数表查询交易金额大且发生次数多的情况。再比如利用贷款表和股东表查询贷款表中含股东贷款的情况。

(五)多表的连接操作

多表连接可分为内连接、外连接、自身连接、交叉连接。其中内连接又分为等值连接、不等连接和自然连接,外连接又分为左连接、右连接和全连接。实际审计工作当中所用到的多是内连接与外连接,较少用到自身连接与交叉连接。多表的连接使用需根据具体情况而定,下面列出部分示例。

1.内连接的等值连接:

select * from 存款表 as a inner join 客户信息表 as b on a.款项代码=b.款项代码;

以上语句用于列出存款表和客户信息表中款项代码相同的记录。

2.外连接的左连接。

select * from 存款表 as a left join 客户信息表 as b on a.款项代码=b.款项代码; 左连接的特点是显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。右连接与此类似,其特点是显示全部右边表中的所有项目,甚至是左边表中没有和它匹配的记录。

以上列出的是数据审计模式下根据实际工作总结出的常用SQL语句,虽然所列内容并不全面,更不可能完全体现SQL查询的全面功能与精妙所在,但只要能够很好地分析出审计需求,把用自然语言表达的审计思路转化为计算机的SQL查询语句,并结合以上的常用语句适当组合运用,一定能使数据审计模式下的工作达到事半功倍的效果,更好地推动计算机审计的快速发展。

第二篇:SQL语句练习

1.用SQL语句在“商学院教学管理”数据库中建立学生表、课程表、成绩表、教师表、授课表、班级表。实现下列要求:

(1)按课本第99-100页表结构要求建立以上六张表。

(2)在学生表中插入一个学生记录:(”99082901”,”程丽”,”女”,1981-2-10,”群众”, ”200704”)。

(3)使选修CZ004号课的同学的成绩为NULL值。

(4)为课程表加一”教师”列。

(5)修改课程表,使“肖贵”老师教CJ001号课。

(6)列出“王勇”老师所授课程的课号和课名。

(7)列出年龄不小于20的男生的学号和姓名。

(8)统计学生所选课程的门数。

(9)列出选修CJ001号课的学生的平均年龄。

(10)列出选修“计算机基础”课的学生的平均成绩、最高分和最低分。

(11)列出所有姓“李”的同学的姓名、年龄和性别。

(12)列出成绩表中成绩为空值的学生的姓名、课号。

(13)列出年龄大于女生平均年龄的男生的姓名和年龄。

(14)删除成绩表中无成绩的记录。

(15)把低于CJ001号课平均成绩的所有同学的所有课程的成绩提高5分。

(16)按学号升序,成绩降序列出每个同学的选课情况(包括姓名、课名、成绩)。

(17)按课号和成绩降序列出每门课的选课情况包括课名、姓名、成绩。

(18)按成绩降序列出每个同学的姓名、总成绩。

(19)求出学习全部课程的所有同学的名单。

(20)列出平均成绩大与80分同学的学号和平均成绩,按平均成绩降序排列。

(25)查询平均成绩排在前5名的学生姓名及平均成绩。

(26)统计选修课程在3门以上(含3门)的学生的学号、姓名和平均成绩。

(27)查询学生年龄超过21岁的学生信息。

(28)列出所有姓“李”的同学的学号、姓名、年龄和性别。

(29)按成绩降序列出每个同学的姓名、总成绩。

第三篇:SQL查询语句

第一次:查询(显示)、条件、排序、空记录

第二次:通配符、生成表、文件(记事本)、数组、临时表,数学函数、分组、嵌套查询

第三次:插入记录、删除记录、更新记录 第四次:超连接、新建(打开)数据库、表的建立、表的删除、

第五次 表结构的修改,添加记录 显示同张芳同一天出生的学生的信息 格式:

1、 查询(显示)记录

显示所有男学生的学号,姓名,性别 区分:字段、条件、表名

Select 字段名列表(*)from 表名; where 条件表达式;

into table(dbf) 文件名;

into cursor 临时表名;

into array 数组名;

to file 文件名;

order by 字段名列表(asc desc);

group by 字段名 having 条件;

显示所有大于平均分的学生的学号、姓名 显示同E4挣同样工资的职工信息

Select * from 职工 where 工资=(select 工资 from 职工 where 职工号=”E4”) 职工(仓库号C(10),职工号 C(10),工资 N(10,2))

显示所有工资大于1500的员工的仓库号、职工号及所在的城市

2、 插入记录

Insert into 表名(字段名列表) values(记录值)

3、 删除记录

Delete from 表名 where 条件

4、 更新记录

Update 表名 set 字段名=记录值; Where 条件

5、 表的删除

drop table 表名

6、 表的建立

create table 表名(字段名 数据类型(宽度))

7、 表结构的修改select * from 职工where 职工号!="E4" AND 工资=(select 工资 from 职工 where 职工号="E4")

alter table 表名

1)增加字段

alter table student add 身份证号 c(10)

2)删除字段

alter table student drop colum 身份证号

3)修改字段名

alter table student rename colum 出生日期 to 出生年月

4)增加字段有效性规则

alter table student alter 成绩 set check 成绩>=0 and 成绩<=100;

error "成绩输入错误,成绩应该在0-100之间"

5)删除字段有效性规则

alter table student alter 成绩 drop check 注意:

以上题目中用到的 SQL语句粘贴到计事本文件XY.TXT中(每行一条语句)。 对两个表操作的方法:

1) 同时打开两个表

select 仓库.仓库号,城市,职工号,工资 from 仓库,职工;

where 职工.仓库号=仓库.仓库号 and 工资=1250

2) 超连接(内连接、左连接、右连接、全连

接)

内连接:只显示符合条件的记录

左连接:显示符合条件的记录及第一个表中不符合条件的记录

右连接:显示符合条件的记录及第二个表中不符合条件的记录

全连接:显示符合条件的记录及第

一、二个表中不符合条件的记录

成绩表(score)

学号姓名课程名成绩 2001张三计算机10 2003张四英语20 2001张三语言30 2005张三数据40 2003张四计算机50

Select sum(成绩)from score group by 学号

Select sum(成绩)from score group by 课程名

select 字段名列表(*) from 表名; where 条件;

order by 字段名列表 asc|desc;

into table(dbf) 表名;

into array 数组名;

to file 文件名;

into cursor 临时表名

题目练习

实现以下功能:在考生文件夹下,打开“陶的数据库”的数据库,并利用SQL语句在该数据库中新建一个表:gongzi(职工号 c(4),实发工资 n(7,0)),将zhigong表中基本工资大于1330(含1330)的记录存储在gongzi表中,其中实发工资为:基本工资+加班费(白天20,晚上30),最后将所有的SQL语句保存到考生目录下的sqlanswer.txt文件中(自行建立,一行一条语句)

open database 陶的数据库

create table gongzi(职工号 c(4),基本工资 n(7,2))

select 职工号,基本工资+白班*20+晚班*30 from zhigong ; where 基本工资>1350 into array xy

insert into gongzi from array xy

第四篇:SQL结构化查询语句

一、数据定义功能

创建表:Createtable 表名(字段名……) 修改表:Altertable表名

删除表:Droptable表名

二、数据操纵功能

数据插入:Insertinto 表名values ( …,…,) 数据更新:Update表名Set表达式 Where 条件 数据删除:DeleteFrom 表名Where 条件

三、查询功能

SELECT*FROM表名

WHERE条件

ORDERBY 字段排序

GROUPBY 字段分组

函数:SUM( )AVG( )COUNT( )MAX( )MIN( )去向:

INTOTABLE表

INTOCURSOR临时表

INTOARRAY数组

第五篇:实验四使用SQL语句修改SQL Server数据库

1、实验目的:

(1) 了解SQL Server数据库的逻辑结构和物理结构;

(2) 掌握使用SQL语句修改数据库的方法;

2、实验准备:

(1)要明确能够修改数据库的用户必须是系统管理员,或者是被授权使用CREATE DATABASE语句的用户;

(2)修改数据库必须要明确:除存储位置,即物理文件名不能修改外,其它项均可以修改,包括数据库名、数据库大小和增长量等数据;

(3)了解使用SQL语句修改数据库的方法。

3、实验内容:

(1)删除实验三中创建的数据库;

(2)用自己名字创建一个数据库,包含一个主数据文件data1和一个日志文件log1,最大值都是5M;增长量分别为10%和1M;存储在自己的文件夹下;

(3)添加一个数据文件data2,最大值为3M;

(4)添加一个日志文件log2,最大值为4M;

(5)添加一个文件组group1;

(6)添加一个次数据文件data3放在文件组group1中;

(7)修改数据文件data2,将最大值改为5M;

(8)删除日志文件log1;

(9)删除次数据文件data

3、data2;

(10)修改文件组,将group1改名为group2;

(11)删除文件组group2;

(12)将log2的增长量改为1M。

(13)缩小该数据库的大小,保留自由空间1M,保留释放的文件空间。

(14)将数据库的日志文件log2缩小到3M。

(15)将数据库更名为stud+自己的名字。

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【经典常用sql语句】相关文章:

常用经典sql语句07-31

常用sql语句范文06-06

sql常用语句范文06-06

常用的sql语句06-21

常用简单sql语句07-31

sql常用语句一览07-31

vf常用sql语句07-31

vf常用sql语句大全06-03

公文写作常用经典语句12-03

sql选择语句04-09

上一篇:关于lkk的二三事下一篇:cad画三维图教程

本站热搜