请实现一个基于Oracle的数据库设计,完成某个磁盘的所有目录及文件信息(包括目录结构)的存储。
目录信息包括目录名,创建时间
文件信息包括文件名,创建时间,文件大小
并用sql语句实现。
A) 列出某个目录下的所有子目录列表,同级目录按名称升序排列。
SELECT * FROM P START WITH P.NAME='P1'
CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY P.NAME
B) 列出某个目录下的所有文件列表,同级目录中文件按名称升序排列。
SELECT F.* FROM F,
(SELECT P.ID, ROWNUM RN FROM P START WITH P.NAME='P1'
CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY P.NAME) R
WHERE F.PATHID = R.ID ORDER BY R.RN, F.NAME
C) 列出某个目录下的所有doc文件。
SELECT F.* FROM F,
(SELECT P.ID, ROWNUM RN FROM P
START WITH P.NAME='P1' CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY P.NAME) R
WHERE F.PATHID = R.ID AND UPPER(F.NAME) LIKE '%.DOC'
ORDER BY R.RN, F.NAME
D)列出某个目录下的所有的空目录。
SELECT R.* FROM
(SELECT P.*, ROWNUM RN FROM P START WITH P.NAME='P1'
CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY P.NAME) R, F
WHERE R.ID=F.PATHID(+) and F.PATHID IS NULL ORDER BY R.RN