版权所有©1993-2012金蝶软件(中国)有限公司KIS专业版数据库专题分享研发中心-KIS产品部P2目录1SQL基础回顾3.2出纳6.1系统初始化1.1查询分析器3.3存货数据6.2凭证过账1.2事件探查器4数据-单据类6.3结转损益1.3基础语法4.1业务单据6.4期末结账1.4不可忽视的性能4.2应收应付6.5固定资产1.5第三方工具4.3学习方法6.6业务系统2数据-基础资料5数据-其他7数据库异常2.1系统级资料5.1固定资产7.1数据库异常2.2基础资料5.2其他8Q&A2.3核算项目5.3关键视图存储过程8.1Q&A题2.4学习方法5.4Access数据3数据-账务类5.5补充知识3.1财务数据6关键数据流P3一、SQL基础回顾查询分析器213事件探查器基础语法45不可忽视的性能第三方工具查询分析器简介查询分析器是一种图形工具,您可以使用它进行以下操作:1、创建、编写、执行SQL脚本(编辑器)2、由预定义脚本快速创建常用数据库对象。(模板)3、通过对象资源管理器快速对数据库进行操作。4、在参数未知的情况下执行存储过程。(对象浏览器过程执行功能)。5、调试存储过程。(T-SQL调试程序)6、调试查询性能问题。(显示执行计划、显示服务器跟踪、显示客户统计、索引优化向导)7、在数据库内定位对象(对象搜索功能),或查看和使用对象。(对象浏览器)。8、快速插入、更新或删除表中的行。(“打开表”窗口)9、向“工具”菜单添加常用命令。(自定义“工具”菜单功能)可以从“启动”菜单直接运行SQL查询分析器,或从SQLServer企业管理器内运行它。这也是平时应用SQL过程中使用最多的一个工具。P5查询分析器的启动在SQLServers的窗口中,选择或输入需要连接的SQL服务器的名称或IP。“.”特指本机。在“连接使用”处选择SQL安装时设置的登录方式及登录用户、密码安装SQL后,在程序组中,选择“查询分析器”,即可出现登录界面查询分析器的登录通过“工具”---》“选项”设置,如下图,可以设置一些其他的参数查询分析器设置执行结果的输出格式查询分析器的常用快捷键在SQL的查询分析器,经常会用到一些快捷键操作:CTRL+T:切换执行结果以文本格式输出CTRL+D:切换执行结果以表格格式输出CTRL+E/Alt+X/F5:执行选择的SQL语句CTRL+F5:对选定的SQL语句进行语法分析检查F1:在线帮助Shift+F1:在选择一个SQL命令或关键字后,按这个组合键,可以调出对应的帮助信息Alter+F1:在选择一个数据库表名后,按这个组合键,可以直接输出该对象的结构内容。在查询分析器打开数据库的方法在SQL查询分析器,可以有多种方法来打开一个数据库实体,并对它进行操作在一个数据库中查询另外一个数据库(本地/跨服务器)的内容,用法为:方法1:Select*fromTTTT..table_name方法2:采用链接桥(链接服务器)方式sp_addlinkedserver在查询分析器打开数据库的方法常见的执行结果P12请查询演示账套盘点单表头及表体信息,将结果以TXT格式输出练习P13一、SQL基础回顾查询分析器213事件探查器基础语法45不可忽视的性能第三方工具SQLSever事件探查器,用于跟踪服务器正在执行的SQL,了解掌握运行情况。SQLServer事件探查器,只有在安装了SQLServer后才可以使用;安装MSDE无法在本地服务器使用,需外部访问使用。事件探查器的作用在于识别Transact-SQL执行速度的快慢,监视实例的性能,调试语句与存储过程。事件探查器对开发过程中的测试与调试有着重要的作用。SQLSever事件探查器的使用SQL事件探查器工具位置SQLServer2000P16SQLServer2005SQL事件探查器工具位置SQL事件探查器的使用P18请跟踪盘点单对应的数据库表名练习跟踪SQL基本分析方法1.找出有效的SQL2.把SQL语句放到SQL查询分析器中执行3.重现错误提示,分析错误原因4.如果不重现错误,则分析取数语句是否正确,所得结果是否正确跟踪SQL的基本分析方法一般来说以下几种情况会进行SQL跟踪:1.程序运行中断,提示SQL异常。此情况直接取得进行分析SQL是否正确2.在连续多个SQL执行过程中出现性能异常,定位低性能SQL3.熟悉陌生数据库结构,通过与功能结合进行学习4.调试程序,观察数据执行情况P20一、SQL基础回顾查询分析器213事件探查器基础语法45不可忽视的性能第三方工具基础语法常见的SQL命令有:select、update、delete、insertinto各SQL命令经常与其他SQL关键字组成条件,从而形成一组具有针性的有效的SQL语句。如select经常与where联用,起到限制目标范围的作用。在所有SQL命令中,如果数据对象的数据类型为非数值的,则必须加上单引号‘。如果给定的值与对应字段的数据类型不一致,在执行时SQL会报错。在SQL命令中,|、‘等具体有特殊用途,一般不可用于具体的数据中。否则会造成SQL语句执行出错。Select的作用是查询数据。在所有SQL命令中,Select是被用的最多最频繁也是最复杂的一个命令。通过Select,可以实现根据一定的条件查询数据,可以实现将几个相同数据类型查询结果形成一个结果集,可以实现将查询的结果产生一张数据表,可以实现从另一个数据库中查询数据等等基础语法select的语法结构一般是:--1、查询指字段Select字段1,字段2,字段3…..From表名[where条件]--2、查询所有字段--*表示该表中的所有字段Select*From表名[where条件]--如查询科目表SelectFdc,Faccountidfromt_accountwherefnumber=‘1001’--3、结构查询结果形成一个新的表,语法为:Select字段into新表名from表名[where条件]基础语法--4、结构查询结果形成一个新的表,并且在新表中增加一个种子列字段的语法为:Selectidentity(字段类型,起始值,递增值)字段名,字段into新表名from表名[where条件]如:产生temp_002表中的数据Selectidentity(int,1,1)Fid,Faccountid,Fnumber,Fname,Fdcintotemp_001fromt_accountSelect*into#t_balance_tempfromt_balance—这也是备份个数据的常用方法--5、在当前数据库中从另一个数据库中查询数据,设另外一个数据库实体为XXXSelect*fromxxx..t_account--需要注意的是,XXX后是两个小数点而不是一个Select*fromAIS20040422090158..t_item基础语法--6、多张个关联起来查询特定的数据,如:--其作用:查询出当前期间的卡片的最后一次变动内码、原值、卡片内码、当期折旧declare@Fyearint,@Fperiodint--定义类型为整数型的变量值select@Fyear=fvaluefromt_systemprofilewhereFcategory='fa'andfkey='currentyear'--将查询的变量赋给@Fyearselect@Fperiod=fvaluefromt_systemprofilewhereFcategory='fa'andfkey='currentperiod'--将查询的变量赋给@Fperiodselectc.falterid,b.FOrgVal,a.fassetid,a.fdeprfromt_fabalanceajoint_fabalcardbona.fbalid=b.fbalidleftjoint_facardconc.fassetnumber=b.fassetnumberleftjoint_faalterdond.fassetid=a.fassetidandd.falterid=c.falteridwherea.fyear=@Fyearanda.fperiod=@Fperiodandc.falterid=(selectmax(falterid)fromt_faalterwherefassetid=a.fassetid)--注意上述语句中用到的别名。当多个表关联时为方便操作一般都会用到别名基础语法--6、多张个关联起来查询特定的数据,如:--其作用:查询出当前期间的卡片的最后一次变动内码、原值、卡片内码、当期折旧declare@Fyearint,@Fperiodint--定义类型为整数型的变量值select@Fyear=fvaluefromt_systemprofilewhereFcategory='fa'andfkey='currentyear'--将查询的变量赋给@Fyearselect@Fperiod=fvaluefromt_systemprofilewhereFcategory='fa'andfkey='currentperiod'--将查询的变量赋给@Fperiodselectc.falterid,b.FOrgVal,a.fassetid,a.fdeprfromt_fabalanceajoint_fabalcardbona.fbalid=b.fbalidleftjoint_facardconc.fassetnumber=b.fassetnumberleftjoint_faalterdond.fassetid=a.fassetidandd.falterid=c.falteridwherea.fyear=@Fyearanda.fperiod=@Fperiodandc.falterid=(selectmax(falterid)fromt_faalterwherefassetid=a.fassetid)--注意上述语句中用到的别名。当多个表关联时为方便操作一般都会用到别名基础语法--7结合函数进行分组计算selectFyear,fperiod,sum(fdepr)Fdeprfromt_fabalancegroupbyFyear,fperiod--按Fyear,fperiod字段进行分组计算orderbyFyear,fperiod--按Fyear,fperiod字段排序--注:orderby要放在语句的最后,它的作用是按指定字段进行排序groupby:是按指定字段进行分组求后,分组的字段必须包括select后的字段名--8统计聚合数据可以继续统计数据为每个分组显示一个分类统计。SQL的ROLLUP操作符可以为每个分组显示一个额外的分类统计。这个分类统计是使用聚合函数计算每个分组中的所有记录得到的结果。下面的语句为每个分组计算OrderTotal:SELECTCustomer,OrderNumber,Sum(Cost*Quantity)ASOrderTotalFROMOrdersGROUPBYCustomer,OrderNumberWITHROLLUP基础语法--9统计每个列CUBE操作符比ROLLUP更进一步,它返回每个分组中重复值的个数。它的结果和ROLLUP相同,但是对每位客户的每一列CUBE包含一个额外的记录。下面的语句显示每个分组的统计和额外每位客户的统计。SELECTCustomer,OrderNumber,Sum(Cost*Quantity)ASOrderTotalFROMOrdersGROUPBYCustomer,OrderNumberWITHCUBECUBE可以给最综合的统计。它不仅完成聚合和ROLLUP的功能,还可以计算定义分组的其它列,换句话说,CUBE统计每个可能的列组合--10联合:通过Union或unionall将两个或更多查询的结果组合为单个结果集其中:union是将相同结果联合起来,去掉重复记录;unionall则是将所有记录联合起来,包括重复值。如select1asttunionsele