《高级审计培训SQL入门讲义》由会员分享,可在线阅读,更多相关《高级审计培训SQL入门讲义(94页珍藏版)》请在金锄头文库上搜索。
1、SQL Server 2000SQL Server 2000本机本机IP:基本概念基本概念基本概念基本概念查询语句查询语句查询语句查询语句主要内容主要内容数据库类型数据库类型数据库类型数据库类型实体关系模型实体关系模型实体关系模型实体关系模型数据库基本知识数据库基本知识数据库基本知识数据库基本知识SQL server 2000 SQL server 2000 SQL server 2000 SQL server 2000 安装与使用安装与使用安装与使用安装与使用创建数据库、表和字段创建数据库、表和字段创建数据库、表和字段创建数据库、表和字段SelectSelectSelectSelect语句、
2、连接、分组和函数语句、连接、分组和函数语句、连接、分组和函数语句、连接、分组和函数SQL serverSQL serverSQL serverSQL server数据导入数据导入数据导入数据导入/ / / /导出工具导出工具导出工具导出工具AOAOAOAO的的的的SQL SQL SQL SQL 语句操作语句操作语句操作语句操作第一部分基本概念第一部分基本概念一、数据库是什么一、数据库是什么数据库是相互关联的数据的集合。1.具有较小的数据冗余,2.可供多个用户共享,3.具有较高的数据独立性,4.具有安全控制机制,5.能够保证数据的安全、可靠,6.允许并发地使用数据库,能有效、及时地处理数据,7.
3、能保证数据的一致性和完整性。基本概念基本概念基本概念基本概念实体关系模型实体关系模型数据的三种范畴抽取抽取抽取抽取存储存储存储存储实例化实例化实例化实例化数据模型是用来抽象、表示和处理现实世界中的数据和信息的。即,数据模型就是对现实世界的模拟。(如:数据库、文件、文档)基本概念基本概念基本概念基本概念数据库关键概念数据库关键概念实体实体:客观存在并可以相互区分的客观事物或抽象事件称为实体。属性属性:描述实体的特性。如职工的职工号,姓名,性别,出生日期,职称等。 关键字:如果某个属性或属性组合的值能唯一地标识出实体集中的每一个实体,可以选作关键字。联系:联系:实体集之间的对应关系称为联系,实体集
4、之间的对应关系称为联系,它反映现实世界事物之间的相互关联它反映现实世界事物之间的相互关联 基本概念基本概念基本概念基本概念联系的三种类型联系的三种类型 1)一对一联系()一对一联系(1:1) 2)一对多联系()一对多联系(1:n) 3)多对多联系()多对多联系(m:n) 基本概念基本概念基本概念基本概念二、二、数据模型数据模型 为了准确地反映事物本身及事物之间的各种联系,数据库中的数据必须有一定的结构。模型结构包括:1、层次模型、2、网状模型、3、关系模型、4、面向对象模型 数据模型还包括:数据模型还包括:数据操作和完整性基本概念基本概念基本概念基本概念数据库发展趋势数据库发展趋势后关系型数据
5、库后关系型数据库XMLSQL审计数据整合审计数据整合基本概念基本概念基本概念基本概念三、常见关系型数据库三、常见关系型数据库 SQL serverOracleSyBaseDB2Access基本概念基本概念基本概念基本概念数据库系统的组成数据库系统的组成1.DBMS2.DB3.DBA4.APP5.SYSTEM基本概念基本概念基本概念基本概念第二部分:第二部分:SQL server 2000安装安装企业管理器企业管理器查询分析器查询分析器数据库数据库SQL DBSQL DB数据库数据查询过程数据库数据查询过程提交查询语句提交查询语句提交查询语句提交查询语句返回查询结果返回查询结果返回查询结果返回查
6、询结果第三部分 SQL基本知识3.1 SQL的动词SQL功能命令动词数据查询SELECT数据定义CREATE、DROP、ALTER数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE、DENY3.2 SQL Server注释注释行内注释:行内注释:-块注释:块注释:/* */ 3.3 SQL数据类型数据类型 1. 数值型数值型 :int,numeric,float2. 字符串型字符串型:char,varchar3. 日期、时间型日期、时间型:datetime4. 货币类型货币类型:3.3.1 3.3.1 数值型数值型定长定长(准确表达)(准确表达) 整数整数整数整数
7、:INTINT(全字长(全字长(全字长(全字长3232位),位),位),位),SMALLINTSMALLINT(半字长)(半字长)(半字长)(半字长) 小数小数小数小数:NUMERICNUMERIC(p,qp,q)或)或)或)或DECIMALDECIMAL(p,qp,q),),),), 其中:其中:其中:其中:p p为数字位长度,为数字位长度,为数字位长度,为数字位长度,q q:小数位长度。:小数位长度。:小数位长度。:小数位长度。浮点浮点(近似)数:(近似)数:FLOAT、REAL等等 3.3.2.字符串型字符串型CHAR(n):定长存储,定长存储,n8000 VARCHAR(n):不定长存
8、储:不定长存储(按实际长度存储),长度最大不(按实际长度存储),长度最大不超过超过n 3.3.3. 日期时间型日期时间型 DATE TIME (8字节):年月日时分秒字节):年月日时分秒毫秒毫秒(例:(例:2001/08/03 10:30:00 000 ) SmallDateTime(4字节):年月日时分字节):年月日时分(例:(例: 2001/08/03 10:30:00 ) 4. 货币类型货币类型表示正的或负的货币值表示正的或负的货币值表示正的或负的货币值表示正的或负的货币值MoneyMoney:精确到货币单位的千分之十。存储大:精确到货币单位的千分之十。存储大:精确到货币单位的千分之十。
9、存储大:精确到货币单位的千分之十。存储大小为小为小为小为 8 8 个字节。个字节。个字节。个字节。SmallmoneySmallmoney:精确到货币单位的千分之十。:精确到货币单位的千分之十。:精确到货币单位的千分之十。:精确到货币单位的千分之十。存储大小为存储大小为存储大小为存储大小为 4 4 个字节。个字节。个字节。个字节。限制到小数点后限制到小数点后限制到小数点后限制到小数点后 4 4 位。位。位。位。货币数据不需要用单引号货币数据不需要用单引号货币数据不需要用单引号货币数据不需要用单引号 () () 括起来。但是,括起来。但是,括起来。但是,括起来。但是,货币数值之前必须带有适当的货
10、币符号。例如,货币数值之前必须带有适当的货币符号。例如,货币数值之前必须带有适当的货币符号。例如,货币数值之前必须带有适当的货币符号。例如,若要指定若要指定若要指定若要指定 100 100 英镑,请使用英镑,请使用英镑,请使用英镑,请使用 100100。 数据定义功能 数据库的定义数据库的定义基本表的定义与删除基本表的定义与删除数据库的定义数据库的定义create database DB_NAMEDB_NAMEONON( NAME=( NAME=数据文件逻辑名数据文件逻辑名数据文件逻辑名数据文件逻辑名, , FILENAME= FILENAME=物理存储位置物理存储位置物理存储位置物理存储位置
11、, , SIZE= SIZE=初始大小初始大小初始大小初始大小, , MAXSIZE= MAXSIZE=最大大小最大大小最大大小最大大小, , FILEGROWTH= FILEGROWTH=增长方式增长方式增长方式增长方式) ) LOG ONLOG ON 参数同上参数同上数据库的定义例数据库的定义例CREATE DATABASE XShGLCREATE DATABASE XShGLONON( NAME= XShGL_data, ( NAME= XShGL_data, FILENAME=, FILENAME=, SIZE=5MB, SIZE=5MB, MAXSIZE=15MB, MAXSIZE=
12、15MB, FILEGROWTH=20%) FILEGROWTH=20%) LOG ONLOG ON (NAME=XShGL_log, (NAME=XShGL_log, FILENAME=, FILENAME=, SIZE=2MB, SIZE=2MB, MAXSIZE=5MB, MAXSIZE=5MB, FILEGROWTH=1MB) FILEGROWTH=1MB) CREATE TABLE (列定义(列定义 | 约束定义)约束定义)(1)表名:表达本表应用语义的字串。(2)列定义(单列定义序列):单列定义 ,单列定义, 单列定义由列名、列类型、尺寸、列取值约束,列缺省值子句组成(用空格分隔)
13、表定义表定义约束定义约束定义 列取值约束列取值约束列取值约束列取值约束Not nullNot null default( default(值值值值) ) 表主码约束表主码约束 Primary keyPrimary key ( )外码引用约束(外码主表数据引用)外码引用约束(外码主表数据引用)FOREIGN KEYFOREIGN KEY ( )REFERENCESREFERENCES ( )例:定义学生表例:定义学生表 (学号学号,姓名,性别,姓名,性别,年龄、所在系)年龄、所在系)CREATE TABLECREATE TABLE StudentStudent( ( iSno iSnoint p
14、rimary key,int primary key, cName cName char(10) not null,char(10) not null, iSex iSex int default(0),int default(0),dtBirthDay DateTime ,dtBirthDay DateTime ,cDept cDept varchar(64) varchar(64) ) ) 定义课程表定义课程表 (课程号课程号,课程名,学,课程名,学分,学期)分,学期)Create Table Course ( iNo int not null, cName varchar(32) not
15、 null, nCredit numeric(6,1) not null, -学分学分 iSemester int, -学期学期primary key (iCno) )学生修课成绩表(学生修课成绩表(学号学号,课程号课程号,成,成绩)绩)Create Table Create Table Score Score ( ( iSNo iSNo int int not null,not null,iCNo iCNo int int not null,not null,nGrade numeric(4,1) default(0),nGrade numeric(4,1) default(0),prima
16、ry keyprimary key ( iSno,iCno ), ( iSno,iCno ),foreign keyforeign key ( iSno ) ( iSno ) referencesreferences Student(iSno), Student(iSno),foreign keyforeign key ( iCno ) ( iCno ) references references Course(iCno)Course(iCno) ) )练习:练习:1、创建财务数据库:、创建财务数据库:CWDB2、创建科目代码表:、创建科目代码表:KMB3、创建凭证主表、创建凭证主表:PZ4、
17、创建凭证明细表、创建凭证明细表:PZMX参见练习一参见练习一参见练习一参见练习一3.5 删除数据库删除数据库从企业管理器的相关对象上右键,选择删从企业管理器的相关对象上右键,选择删除即可。除即可。或者使用或者使用SQL语句语句3.6 删除表删除表从企业管理器对象树选择需要删除的表,从企业管理器对象树选择需要删除的表,右键,选择右键,选择【删除删除】或者或者SQLDrop table Student;3.7 追加、修改、删除字段追加、修改、删除字段从企业管理器对象树选择需要编辑的表,右键,从企业管理器对象树选择需要编辑的表,右键,选择选择【设计表设计表】,进行字段修改。,进行字段修改。或者或者S
18、QLalter table student add myCol int;alter table student add myCol int;alter table student add myCol int;alter table student add myCol int;alter table student alter column myCol varchar(12);alter table student alter column myCol varchar(12);alter table student alter column myCol varchar(12);alter tab
19、le student alter column myCol varchar(12);alter table student drop column myCol;alter table student drop column myCol;alter table student drop column myCol;alter table student drop column myCol;4.1 基本表数据的插入基本表数据的插入一单行数据的插入一单行数据的插入 第四部分第四部分 SQL 语句语句一单行数据的插入一单行数据的插入插入单行记录的插入单行记录的插入单行记录的插入单行记录的INSERTIN
20、SERTINSERTINSERT语句的格式为:语句的格式为:语句的格式为:语句的格式为:INSERT INTO INSERT INTO INSERT INTO INSERT INTO VALUES VALUES VALUES VALUES (值表)(值表)(值表)(值表)功能:新增一个符合表结构的数据行,将值表数据按表中功能:新增一个符合表结构的数据行,将值表数据按表中功能:新增一个符合表结构的数据行,将值表数据按表中功能:新增一个符合表结构的数据行,将值表数据按表中列定义顺序列定义顺序列定义顺序列定义顺序 或列名表顺序或列名表顺序或列名表顺序或列名表顺序 赋给对应列名。赋给对应列名。赋给对应
21、列名。赋给对应列名。 说明:说明:1. 1. 1. 1. 列列列列名名名名表表表表与与与与值值值值表表表表:列列列列名名名名必必必必须须须须在在在在表表表表中中中中已已已已定定定定义义义义,值值值值可可可可取常量或取常量或取常量或取常量或NULLNULLNULLNULL。2. 2. 2. 2. 赋值规则:赋值规则:赋值规则:赋值规则:(1)(1)(1)(1)值值值值与与与与列列列列名名名名按按按按顺顺顺顺序序序序对对对对应应应应,要要要要求求求求值值值值类类类类型型型型与与与与列列列列数数数数据据据据类型一致。类型一致。类型一致。类型一致。(2)(2)(2)(2)对语句中无值对应的列名赋对语句
22、中无值对应的列名赋对语句中无值对应的列名赋对语句中无值对应的列名赋NULLNULLNULLNULL。3.3.3.3. 如果如果如果如果INTOINTOINTOINTO子句中没有指明列名,则新插入记录子句中没有指明列名,则新插入记录子句中没有指明列名,则新插入记录子句中没有指明列名,则新插入记录的值的顺序必须与表中列的顺序一致,且每一的值的顺序必须与表中列的顺序一致,且每一的值的顺序必须与表中列的顺序一致,且每一的值的顺序必须与表中列的顺序一致,且每一列均有值(可为空)。列均有值(可为空)。列均有值(可为空)。列均有值(可为空)。 例例1将新生记录(将新生记录(95020,陈冬,陈冬,男,信息系
23、,男,信息系,18岁)插入到岁)插入到Student表中表中 INSERT INTO Student VALUES VALUES VALUES VALUES (1 1 1 1,陈冬陈冬陈冬陈冬,0 0 0 0,1976-03-20,IS1976-03-20,IS1976-03-20,IS1976-03-20,IS ) 例例2在在SC表中插入一新记录,表中插入一新记录,成绩暂缺成绩暂缺INSERT INTO SCore(iSno, iCno,iGrade) VALUES(1 1,1,1001,100) 注: 此时必须列出列名(因为有缺省) SC中的Grade必须允许为0 实际插入的值为:(950
24、20,1,0)练习二练习二4.2 数据查询功能1.简单简单SQL 语句语句SELECT (需要哪些列)(需要哪些列) FROM (从哪些表)(从哪些表) WHERE (根据什么条件)(根据什么条件) 查询过程查询过程Select PZH,KMDH,KMMC,DF Select PZH,KMDH,KMMC,DF Select PZH,KMDH,KMMC,DF Select PZH,KMDH,KMMC,DF from ACCTTwofrom ACCTTwofrom ACCTTwofrom ACCTTwo where DF0 where DF0 where DF0 where DF02.查询所有数据
25、查询所有数据Select * from AcctOne3.选择需要的列选择需要的列select PZH,FSRQ,SHY from AcctOne4.4.给列取别名(重命名)给列取别名(重命名)给列取别名(重命名)给列取别名(重命名)select PZH as 凭证号凭证号, FSRQ as 发生日期发生日期, SHY as 审计员审计员 from AcctOne5.选择数据行选择数据行l l使用使用使用使用WhereWhere条件判断句条件判断句条件判断句条件判断句l l比较运算比较运算比较运算比较运算1.1.数值类型的数据判断:数值类型的数据判断:数值类型的数据判断:数值类型的数据判断:=
26、,=,=,=,=,=,2.2.日期类型判断:日期类型判断:日期类型判断:日期类型判断:=,=,=,=,=,=,3.3.字符串判断:字符串判断:字符串判断:字符串判断:like,=,not likelike,=,not like4.4.集合判断集合判断集合判断集合判断:in,not in:in,not in5.5.空值判断空值判断空值判断空值判断:is null:is null6.6.确定范围确定范围确定范围确定范围:between and :between and l l 6.数值条件:数值条件:查询借方金额大于查询借方金额大于10000的分录的分录select * from accttwo
27、where JF=100007.7.日期条件:日期条件:日期条件:日期条件:查询查询查询查询20052005年上半年的凭证年上半年的凭证年上半年的凭证年上半年的凭证Select * from acctOne where FSRQ=2005-7-112.2 逻辑运算或者逻辑运算或者所有发生额大于所有发生额大于10000的分录的分录select * from AcctTwo where JF=10000 or DF=1000012.3 删除结果集的重复行删除结果集的重复行Distinct查看余额表余额方向的样本查看余额表余额方向的样本select distinct JDFX from KMYE 1
28、3对查询结果排序对查询结果排序可对查询结果进行排序可对查询结果进行排序可对查询结果进行排序可对查询结果进行排序 排序子句为:排序子句为:排序子句为:排序子句为:ORDER BY ORDER BY , , ASC | DESC ASC | DESC 说明:按说明:按说明:按说明:按 进行升序(进行升序(进行升序(进行升序(ASCASC)或降序)或降序)或降序)或降序(DESCDESC)排序。)排序。)排序。)排序。排序举例:排序举例:按照借方金额进行排序按照借方金额进行排序Select * From AcctTwoOrder by JF-从小到大排序从小到大排序Select * From Acc
29、tTwoOrder by JFDesc-从大到小排序从大到小排序14.获得查询的前获得查询的前n行行获取借方金额前获取借方金额前10名的分录名的分录Select top 10 * from AcctTwoOrder by JF desc15. SQL提供的计算函数提供的计算函数COUNT( * )COUNT( * )COUNT( * )COUNT( * ):统计表中元组个数:统计表中元组个数:统计表中元组个数:统计表中元组个数 COUNT(COUNT(COUNT(COUNT():统计本列非空列值个数:统计本列非空列值个数:统计本列非空列值个数:统计本列非空列值个数 SUM(SUM(SUM(SU
30、M():计算列值总和(计算列值总和(计算列值总和(计算列值总和(必须是数值型列必须是数值型列必须是数值型列必须是数值型列) AVG(AVG(AVG(AVG():计算列值平均值(计算列值平均值(计算列值平均值(计算列值平均值(必须是数值型列必须是数值型列必须是数值型列必须是数值型列) MAX(MAX(MAX(MAX():求列值最大值:求列值最大值:求列值最大值:求列值最大值 MIN(MIN(MIN(MIN():求列值最小值:求列值最小值:求列值最小值:求列值最小值 15.1.查询记录数查询记录数Select count(*) as 记录数记录数 from AcctOne15.2 15.2 求最大
31、值和最小值求最大值和最小值求最大值和最小值求最大值和最小值Select max(JF) as Select max(JF) as Select max(JF) as Select max(JF) as 最大值最大值最大值最大值,min(JF) as ,min(JF) as ,min(JF) as ,min(JF) as 最小值最小值最小值最小值 from AcctTWOfrom AcctTWOfrom AcctTWOfrom AcctTWOSelect max(JF) as Select max(JF) as 最大值最大值最大值最大值,min(JF) as ,min(JF) as 最小值最小值
32、最小值最小值from AcctTWOfrom AcctTWOWhere JF0Where JF0Select * Select * into Temp1into Temp1From AcctTWOFrom AcctTWOWhere YF=1Where YF=116 16 查询结果保存到新表查询结果保存到新表Select * Select * into Temp2into Temp2From AcctTWOFrom AcctTWOWhere YF=2Where YF=2例:例:例:例:1 1 1 1季度凭证详细信息保存到季度凭证详细信息保存到季度凭证详细信息保存到季度凭证详细信息保存到3 3 3
33、 3张临时表张临时表张临时表张临时表Select * Select * into Temp3into Temp3From AcctTWOFrom AcctTWOWhere YF=3Where YF=3Select YF,PZH,KMDH, JF,DF from temp1Select YF,PZH,KMDH, JF,DF from temp1Select YF,PZH,KMDH, JF,DF from temp1Select YF,PZH,KMDH, JF,DF from temp1UnionUnionUnionUnionSelect YF,PZH,KMDH, JF,DF from temp2
34、Select YF,PZH,KMDH, JF,DF from temp2Select YF,PZH,KMDH, JF,DF from temp2Select YF,PZH,KMDH, JF,DF from temp2UnionUnionUnionUnionSelect YF,PZH,KMDH, JF,DF from temp3Select YF,PZH,KMDH, JF,DF from temp3Select YF,PZH,KMDH, JF,DF from temp3Select YF,PZH,KMDH, JF,DF from temp317 17 多个表合并多个表合并例:将例:将例:将例:将
35、1 1 1 1月、月、月、月、2 2 2 2月凭证表合并成一张表月凭证表合并成一张表月凭证表合并成一张表月凭证表合并成一张表五五.对查询结果分组对查询结果分组作作用用:可可以以分分别别对对每每张张凭凭证证进进行行借借贷贷平衡计算。平衡计算。对对每每一一组组数数据据进进行行求求最最大大值值,最最小小值值,平均值,求和,计数等。平均值,求和,计数等。分组语句的一般形式:分组语句的一般形式: GROUP BY GROUP BY HAVING HAVING 例:例:请检算凭证表的借贷是否平衡。请检算凭证表的借贷是否平衡。分析分析:(1 1)检查全部数据是否平衡检查全部数据是否平衡(2 2)检查各月是否
36、平衡)检查各月是否平衡(3 3)检查各凭证是否借贷平衡)检查各凭证是否借贷平衡(4 4)显示借贷不平衡的凭证的详细信息)显示借贷不平衡的凭证的详细信息(1 1)检查全部数据是否平衡检查全部数据是否平衡Select sum(JF) as Select sum(JF) as Select sum(JF) as Select sum(JF) as 借方合计,借方合计,借方合计,借方合计,sum(DF) as sum(DF) as sum(DF) as sum(DF) as 贷方合计贷方合计贷方合计贷方合计 From AcctTwoFrom AcctTwoFrom AcctTwoFrom AcctTw
37、o(2 2)检查各月是否平衡)检查各月是否平衡select select select select YF,YF,YF,YF,sum(JF) as sum(JF) as sum(JF) as sum(JF) as 借方借方借方借方, sum(DF) as , sum(DF) as , sum(DF) as , sum(DF) as 贷方贷方贷方贷方from AcctTwofrom AcctTwofrom AcctTwofrom AcctTwogroup by group by group by group by YFYFYFYFHaving sum(JF)!=sum(DF)Having sum
38、(JF)!=sum(DF)Having sum(JF)!=sum(DF)Having sum(JF)!=sum(DF)Having abs(sum(JF)-sum(DFHaving abs(sum(JF)-sum(DFHaving abs(sum(JF)-sum(DFHaving abs(sum(JF)-sum(DF直接显示有哪些借贷不平衡的月份直接显示有哪些借贷不平衡的月份直接显示有哪些借贷不平衡的月份直接显示有哪些借贷不平衡的月份select select select select YF,YF,YF,YF,sum(JF) as sum(JF) as sum(JF) as sum(JF)
39、as 借方借方借方借方, sum(DF) as , sum(DF) as , sum(DF) as , sum(DF) as 贷方贷方贷方贷方from AcctTwofrom AcctTwofrom AcctTwofrom AcctTwogroup by group by group by group by YFYFYFYF浮点数不是精确数,浮点数不是精确数,浮点数不是精确数,浮点数不是精确数,不能直接使用等不能直接使用等不能直接使用等不能直接使用等号进行比较号进行比较号进行比较号进行比较select select select select YF, PZHYF, PZHYF, PZHYF,
40、PZH ,sum(JF) as sum(JF) as sum(JF) as sum(JF) as 借方借方借方借方, , , , sum(DF) as sum(DF) as sum(DF) as sum(DF) as 贷方贷方贷方贷方from AcctTwofrom AcctTwofrom AcctTwofrom AcctTwogroup by group by group by group by YFYFYFYF,PZHPZHPZHPZHHaving abs(sum(JF)-sum(DFHaving abs(sum(JF)-sum(DFHaving abs(sum(JF)-sum(DFHav
41、ing abs(sum(JF)-sum(DF(3 3 3 3)检算每张凭证借贷平衡情况检算每张凭证借贷平衡情况检算每张凭证借贷平衡情况检算每张凭证借贷平衡情况Select *From AcctTWOWhere YF=? And PZH=?(4 4)显示借贷不平衡的凭证的详细信息)显示借贷不平衡的凭证的详细信息4.8 条件筛选和分组条件筛选和分组1月份各科目余额月份各科目余额Select KMDH,sum(JF),sum(DF)Select KMDH,sum(JF),sum(DF)Select KMDH,sum(JF),sum(DF)Select KMDH,sum(JF),sum(DF)From
42、 AcctTwo From AcctTwo From AcctTwo From AcctTwo Where YF=1Where YF=1Where YF=1Where YF=1Group by KMDHGroup by KMDHGroup by KMDHGroup by KMDH先筛选,后分组,再筛选,再选择先筛选,后分组,再筛选,再选择先筛选,后分组,再筛选,再选择先筛选,后分组,再筛选,再选择条件筛选和组筛选条件筛选和组筛选验证分录数大于验证分录数大于3条的,条的, 6月份的凭证借贷月份的凭证借贷发生额发生额Select PZH,sum(JF),sun(DF)Select PZH,sum(
43、JF),sun(DF)Select PZH,sum(JF),sun(DF)Select PZH,sum(JF),sun(DF)From AcctTwo From AcctTwo From AcctTwo From AcctTwo Where YFWhere YFWhere YFWhere YF6 6 6 6Group by PZHGroup by PZHGroup by PZHGroup by PZHHaving count(*)3Having count(*)3Having count(*)3Having count(*)34.3 多表连接查询 若一个查询同时涉及两个或两个以上的表,若一个查
44、询同时涉及两个或两个以上的表,若一个查询同时涉及两个或两个以上的表,若一个查询同时涉及两个或两个以上的表,则称之为连接查询。则称之为连接查询。则称之为连接查询。则称之为连接查询。连接查询是关系数据库中最主要的查询连接查询是关系数据库中最主要的查询连接查询是关系数据库中最主要的查询连接查询是关系数据库中最主要的查询连接查询包括内连接、外连接和交叉连接等。连接查询包括内连接、外连接和交叉连接等。连接查询包括内连接、外连接和交叉连接等。连接查询包括内连接、外连接和交叉连接等。 理解表连接理解表连接Table1Table1Table1Table1A A A AB B B B10010020020010
45、1101300300102102400400Table2Table2Table2Table2X X X XY Y Y YZ Z Z Z101101 abcabc56.8956.89102102 defdef256.41256.41新表新表A A A AB B B BX X X XY Y Y YZ Z Z Z100100200200101101abcabc56.8956.89100100200200102102defdef256.41256.41101101300300101101abcabc56.8956.89101101300300102102defdef256.41256.41102102
46、400400101101abcabc56.8956.89102102400400102102defdef256.41256.41JoinJoin例:例:查看每张凭证的凭证日期,摘要和金额查看每张凭证的凭证日期,摘要和金额Select From AcctOne a Join AcctTwo bOn = and =例:按以下形式显示例:按以下形式显示1 1季度各月各科目余额(假设各月各科目季度各月各科目余额(假设各月各科目均有发生额)均有发生额)KMDHKMDH1 1月余额月余额月余额月余额2 2月余额月余额月余额月余额3 3月余额月余额月余额月余额1011101110141014(1)一月各科目
47、发生额)一月各科目发生额Select KMDH,sum(JF) -sum(DF) as Select KMDH,sum(JF) -sum(DF) as 余额余额Into tmpYE1Into tmpYE1from ACCTTWO from ACCTTWO where YF=1 where YF=1 Group by KMDHGroup by KMDH(2)二月各科目发生额)二月各科目发生额Select KMDH,sum(JF) -sum(DF) as 余额余额Into tmpYE2from ACCTTWO where YF=2 Group by KMDH(3)一月各科目发生额)一月各科目发生额
48、Select KMDH,sum(JF) -sum(DF) as 余额余额Into tmpYE3from ACCTTWO where YF=3 Group by KMDH(4)合并各月余额表)合并各月余额表select ,select ,a.a.a.a.余额余额余额余额 as 1as 1as 1as 1月月月月,b.b.b.b.余额余额余额余额 as 2as 2as 2as 2月月月月,c.c.c.c.余额余额余额余额 as 3as 3as 3as 3月月月月 from tmpYE1 a from tmpYE1 a join tmpYE2 b on =join tmpYE2 b on =join
49、 tmpYE3 c on =join tmpYE3 c on =例:从学生数据库,查询学生各科成绩,例:从学生数据库,查询学生各科成绩,要求显示学生的姓名,科目和成绩要求显示学生的姓名,科目和成绩select ,from student s join SCore sc on =join course c on =外连接外连接外连接会返回外连接会返回 FROM FROM 子句中提到的至子句中提到的至少一个表的所有行,只要这些行符合少一个表的所有行,只要这些行符合任何任何 WHERE WHERE 或或 HAVING HAVING 搜索条件。搜索条件。 分类:分类:LEFT OUTER JOIN L
50、EFT OUTER JOIN 或或或或 LEFT JOINLEFT JOIN:左外连:左外连:左外连:左外连接接接接RIGHT OUTER JOIN RIGHT OUTER JOIN 或或或或 RIGHT JOINRIGHT JOIN:右:右:右:右外连接外连接外连接外连接 1. 1. 使用左外连接使用左外连接 左向外连接运算符左向外连接运算符 LEFT OUTER JOIN LEFT OUTER JOIN 指明,指明,不管第二个表中是否有匹配的数据,结果不管第二个表中是否有匹配的数据,结果将包含第一个表中的所有行。将包含第一个表中的所有行。运算过程:运算过程:(1 1)首先将)首先将2 2张
51、表完全连接;张表完全连接;(2 2)在完全连接的表中,保留那些符合条)在完全连接的表中,保留那些符合条件的数据行,删除不符合条件的数据行。件的数据行,删除不符合条件的数据行。(3 3)在完全连接的表中,如果左边表某行)在完全连接的表中,如果左边表某行与右边表中任何一行都不符合匹配条件,与右边表中任何一行都不符合匹配条件,则保留左边表的那一行数据,对应右边表则保留左边表的那一行数据,对应右边表的数据列全部为的数据列全部为nullnull。例:例:在学生数据库中查询没有选课的学生在学生数据库中查询没有选课的学生Select s.*From student s left join score sc
52、on =Where is null例例查询没有被学生选学的课程查询没有被学生选学的课程Select c.*From Course c Left join score sc on =Where is null例:例:从某财务数据库从某财务数据库从某财务数据库从某财务数据库xDataxDataxDataxData提取科目表,验证科目表的提取科目表,验证科目表的提取科目表,验证科目表的提取科目表,验证科目表的科目是否完整。科目是否完整。科目是否完整。科目是否完整。分析分析分析分析: : : :在该未知财务数据中,没有明确的科目表,需要进行提取。在该未知财务数据中,没有明确的科目表,需要进行提取。在该
53、未知财务数据中,没有明确的科目表,需要进行提取。在该未知财务数据中,没有明确的科目表,需要进行提取。但在凭证明细表中和科目余额表中,均有科目代码和但在凭证明细表中和科目余额表中,均有科目代码和但在凭证明细表中和科目余额表中,均有科目代码和但在凭证明细表中和科目余额表中,均有科目代码和科目名称字段。科目名称字段。科目名称字段。科目名称字段。因此科目表可以从此两表中提取。两个表提取的科目表到因此科目表可以从此两表中提取。两个表提取的科目表到因此科目表可以从此两表中提取。两个表提取的科目表到因此科目表可以从此两表中提取。两个表提取的科目表到底哪一个涵盖了哪一个?还是互相不涵盖?需要逐一底哪一个涵盖了
54、哪一个?还是互相不涵盖?需要逐一底哪一个涵盖了哪一个?还是互相不涵盖?需要逐一底哪一个涵盖了哪一个?还是互相不涵盖?需要逐一验证。验证。验证。验证。过程:过程:过程:过程:(1 1 1 1)分别提取科目表)分别提取科目表)分别提取科目表)分别提取科目表KMAKMAKMAKMA,KMBKMBKMBKMB(2 2 2 2)使用外连接,)使用外连接,)使用外连接,)使用外连接,KMAKMAKMAKMA是否存在比是否存在比是否存在比是否存在比KMBKMBKMBKMB多出的科目多出的科目多出的科目多出的科目(3 3 3 3)使用外连接,)使用外连接,)使用外连接,)使用外连接,KMBKMBKMBKMB是
55、否存在比是否存在比是否存在比是否存在比KMAKMAKMAKMA多出的科目多出的科目多出的科目多出的科目(4 4 4 4)根据分析结果,选用科目表)根据分析结果,选用科目表)根据分析结果,选用科目表)根据分析结果,选用科目表(1 1)分别提取科目表)分别提取科目表KMAKMA,KMBKMBSelect distinct KMDH,KMMCinto KMAfrom ACCTTWOselect distinct KMDH,KMMC into KMBfrom KMYE(2 2)使用外连接,)使用外连接,KMAKMA是否存在比是否存在比KMBKMB多出的科目多出的科目select *from KMA a
56、 left join KMB b on =where is null(3 3)使用外连接,)使用外连接,KMBKMB是否存在比是否存在比KMAKMA多出的科目多出的科目select * from KMB a left join KMA b on =where is null(4 4)根据分析结果,选用科目表)根据分析结果,选用科目表. .分析结果:分析结果:KMAKMA表的所有行含在表的所有行含在KMBKMB中,中,KMBKMB中有中有3838行不含在行不含在KMAKMA中。因此中。因此KMBKMB可以当作科可以当作科目代码表使用。目代码表使用。4.5 删除数据删除数据1、删除表内全部数据、删
57、除表内全部数据Delete Temp1Delete Temp12 2、按照条件删除、按照条件删除、按照条件删除、按照条件删除Delete student where cName=Delete student where cName=游七游七游七游七 4.6 批量插入数据批量插入数据将查询语句的结果插入到一个已经创建将查询语句的结果插入到一个已经创建数据表中。数据表中。Insert into Insert into Insert into Insert into student_BK(iSno,cName,dtBirthay,iSex)student_BK(iSno,cName,dtBirtha
58、y,iSex)student_BK(iSno,cName,dtBirthay,iSex)student_BK(iSno,cName,dtBirthay,iSex)Select iSno,cName,dtBirthay,iSex Select iSno,cName,dtBirthay,iSex Select iSno,cName,dtBirthay,iSex Select iSno,cName,dtBirthay,iSex from student from student from student from student where dtBirthay1982-1-1where dtBirt
59、hay1982-1-1where dtBirthay1982-1-1where dtBirthay1982-1-14.7 表中列数据更新表中列数据更新格式格式:UPDATE SET , WHERE 例例:将所有学生的成绩加一分:将所有学生的成绩加一分 Update Score set nScore=nScore+1例例例例:将高等数据的学分加一分:将高等数据的学分加一分:将高等数据的学分加一分:将高等数据的学分加一分 Update Score set nGrade=nGrade+1Where iCno=2例例例例:将摘要为空的摘要改成:将摘要为空的摘要改成:将摘要为空的摘要改成:将摘要为空的摘
60、要改成“ “无摘要无摘要无摘要无摘要” ” Update AcctOne set ZY=无摘要无摘要Where ZY is null第五部分第五部分 SQL server 2000数据与数据与Access数据迁移数据迁移l l一、从一、从一、从一、从SQLSQL导出导出导出导出AccessAccess(1 1)创建空的)创建空的)创建空的)创建空的AccessAccess文件文件文件文件(2 2)【程序程序程序程序】【Microsoft SQL serverMicrosoft SQL server】【导入和导出数据导入和导出数据导入和导出数据导入和导出数据】二、从二、从Access到到SQL
61、server 2000(1 1)在)在)在)在SQL serverSQL server创建目标数据库创建目标数据库创建目标数据库创建目标数据库(2 2)【程序程序程序程序】【Microsoft SQL serverMicrosoft SQL server】【导入和导出数据导入和导出数据导入和导出数据导入和导出数据】第六部分第六部分 AO2008单机版项目数据简介单机版项目数据简介1 1 1 1、系统数据库:、系统数据库:、系统数据库:、系统数据库:查看本地项目情况查看本地项目情况查看本地项目情况查看本地项目情况C:Program FilesC:Program FilesC:Program Fi
62、lesC:Program Files现场审计实施系统现场审计实施系统现场审计实施系统现场审计实施系统2008200820082008版版版版SystemSystemSystemSystem2 2 2 2、项目数据库:、项目数据库:、项目数据库:、项目数据库:项目帐套信息项目帐套信息项目帐套信息项目帐套信息C:Program FilesC:Program FilesC:Program FilesC:Program Files现场审计实施系统现场审计实施系统现场审计实施系统现场审计实施系统2008200820082008版版版版3 3 3 3、审计分析数据库审计分析数据库审计分析数据库审计分析数据库:C:Program FilesC:Program Files现场审计实施系统现场审计实施系统现场审计实施系统现场审计实施系统20082008版版版版直接从审计分析数据库进行数据分析直接从审计分析数据库进行数据分析l l一般使用查询分析面板进行语句编写一般使用查询分析面板进行语句编写一般使用查询分析面板进行语句编写一般使用查询分析面板进行语句编写谢谢谢谢20082008年年年年1 1月月月月6 6日日日日