AS400学习:PhysicalFile与LogicalFile深度解析

0 下载量 81 浏览量 更新于2024-08-03 收藏 18KB MD 举报
"AS400学习资料涵盖了AS400系统中的Physical File(PF)和Logical File(LF)的概念,以及相关操作和数据类型的详细解释。" 在AS400系统的学习过程中,Physical File(PF)是核心概念之一,它是用于存储数据的基本对象,类似于数据库中的表。PF可以包含多种数据格式,每个PF对应一个Record Format,记录数据的结构。Day2的内容主要讲解了PF的创建方法,包括使用`CRTPF`命令来编译DDS语言代码创建PF,或者直接编译无DDS代码的PF,以及通过`CPYF`或`CRTDUPOBJ`复制已有PF。此外,`UNIQUE`关键字用于定义PF中的主键,确保数据的唯一性。 Physical File与Logical File(LF)是AS400中的两种不同类型的文件对象。Physical File在内存中实际存储原始数据,而Logical File并不占用内存,它更像是对PF的一种视图,提供了数据的不同访问方式。LF可以有32个Record Format,比PF更灵活,但LF依赖于PF存在,而PF不依赖LF。删除PF时,如果存在LF引用,则PF无法被删除;反之,依赖PF的LF可以被删除,而不必删除PF。创建LF使用`CRTLF`命令,而创建PF使用`CRTPF`。 在PF中,数据类型是关键要素,包括单字节字符型(A)、十进制数字类型(S)、压缩型十进制数字类型(P)、双字节字符型(O)、双字节字符图形(G)、仅限双字节字符(J)、二进制数(B)、单精度浮点数(F)、十六进制字符(H)、时间类型(T)、时间戳类型(Z)、日期类型(L)和任何双字节数据(E)。这些数据类型满足了各种数据存储需求。 PF/LF的关键字是控制数据处理的重要工具,例如`ALL`用于LF筛选,`ALWNULL`允许字段为空,`CMP`用于字段值比较,`COLHDG`设置字段的列标题。这些关键字在定义和操作PF或LF时起着至关重要的作用。 AS400学习的第一周主要涵盖了Physical File的基础知识,包括其创建、数据类型、与Logical File的区别,以及PF/LF的关键字应用,这些都是理解AS400系统数据库操作和管理的基础。深入理解和掌握这些内容对于在AS400环境中进行数据管理和编程至关重要。

解释一下这段代码 with a as ( SELECT CONVERT(nvarchar(10), getdate() ,120) AS datatime,1 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -1, getdate()) ,120) AS datatime,2 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -2, getdate()) ,120) AS datatime,3 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -3, getdate()) ,120) AS datatime,4 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -4, getdate()) ,120) AS datatime,5 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -5, getdate()) ,120) AS datatime,6 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -6, getdate()) ,120) AS datatime,7 as sortnum ), b as ( select GET_DATE,TAG_VALUE from T_TAG_DATA where TAG_ID = 1408 ) , -- 当日产量 c as ( select a.datatime,ISNULL(sum(b.TAG_VALUE),0) as 当日产量 from a left join b on a.datatime = SUBSTRING(CONVERT(varchar(100), b.GET_DATE, 120),1,10) GROUP BY a.datatime ), -- 台时产量 d as( select a.datatime,b.TAG_VALUE as 台时产量 from a left join b on a.datatime = SUBSTRING(CONVERT(varchar(100), b.GET_DATE, 120),1,10) where SUBSTRING(CONVERT(varchar,GETDATE(),120),12,2) = SUBSTRING(CONVERT(varchar(100), b.GET_DATE, 120),12,2) ), -- 累计产量 e as ( SELECT CONVERT(nvarchar(10), getdate() ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= getdate() union all SELECT CONVERT(nvarchar(10), DATEADD(day, -1, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -1, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -2, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -2, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -3, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -3, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -4, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -4, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -5, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -5, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -6, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -6, getdate()) ) select SUBSTRING(a.datatime,6,10) as datatime,ISNULL(c.当日产量,0) as 当日产量,ISNULL(d.台时产量,0) as 台时产量,ISNULL(e.累计产量,0) as 累计产量 from a left join c on a.datatime = c.datatime left join d on a.datatime = d.datatime left join e on a.datatime = e.datatime order by a.datatime asc

2023-06-13 上传