рдЖрдЬ рдХрд╛ рд╡рд┐рд╖рдп
тАЬSQLтАЭ рдкрдврд╝рдХрд░
ред рдордиреЛрд░рдВрдЬрдХ рдХрд╛рд░реНрдп, " рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдУрд░реЗрдХрд▓ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдЙрдиреНрдирдд рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреБрд╕реНрддрдХ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рди рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬреЛ рдУрд░реЗрдХрд▓ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣
рдореБрдлрд╝реНрдд рд╣реИ ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░,
рдкреБрд╕реНрддрдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ ред
рдФрд░
рд▓реЗрдЦрдХ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП ред
рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдмреАрдЬрдиреЗ рдХреЗ рд▓рд┐рдП:
- рдЬреБрдбрд╝реЗ рд╣реБрдП рдШрдЯрдХ
рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ (рдЧреИрд░-рджрд┐рд╢рд╛рддреНрдордХ) рдЧреНрд░рд╛рдл рд╣реИ рдФрд░
рдЬреБрдбрд╝реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП:
create table edge(x1, x2) as select 10,20 from dual union all select 50,40 from dual union all select 20,30 from dual union all select 20,40 from dual union all select 60,70 from dual union all select 80,60 from dual union all select 20,90 from dual;
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ (рдШрдЯрдХреЛрдВ рдХрд╛ рдХреНрд░рдо рдХреНрд░рдо рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдирд╣реАрдВ рд╣реИ):
X GRP
- рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдирд╛
рдЕрдм рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд (рдирд┐рд░реНрджреЗрд╢рд┐рдд) рдЧреНрд░рд╛рдл рдкрд░ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЪрдХреНрд░реАрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
рдирд┐рд░реНрднрд░рддрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрде рд╡рд░реНрдзрдорд╛рди рдЬреЛрдбрд╝реЗ рдХреЗ рдмреАрдЪ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╡реГрдХреНрд╖ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ред
create table d(name, referenced_name) as (select null, 'a' from dual union all select null, 'd' from dual union all select 'a', 'b' from dual union all select 'd', 'b' from dual union all select 'b', 'e' from dual union all select 'b', 'c' from dual union all select 'e', 'c' from dual);
рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдиреНрдпреВрдирддрдо рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
рдЖрдк рдХреЗрд╡рд▓ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╢реНрд░рд┐рдд рд╡рд╕реНрддреБрдПрдВ рдмрд╛рдИрдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╡рд╣ рд╣реИ, рдкрд░
рдкрд╣рд▓рд╛ рдЪрд░рдг рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдЬреЛ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ
рдкрд╣рд▓реЗ рдЪрд░рдг рдХреА рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЧрд╣рд░рд╛рдИ рдирд┐рд░реНрднрд░рддрд╛ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред
- рдХрд╡рд░рд┐рдВрдЧ рд░реЗрдВрдЬ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:
create table t_range(a, b) as (select 1, 15 from dual union all select 3, 17 from dual union all select 6, 19 from dual union all select 10, 21 from dual union all select 17, 26 from dual union all select 18, 29 from dual union all select 20, 32 from dual union all select 24, 35 from dual union all select 28, 45 from dual union all select 30, 49 from dual);
b> рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА a, b рдХреЗ рд▓рд┐рдП; рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп
рд╕реЗрдЧрдореЗрдВрдЯ (1:15), (17:26), (28:45) рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣рдо рд▓рд╛рдЗрди рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдиреНрдпреВрдирддрдо a , рдФрд░ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдРрд╕реЗ рд▓реЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП a рд╡рд░реНрддрдорд╛рди рд░реЗрдЦрд╛ рд╕реЗ b рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдФрд░ рдЗрд╕реА рддрд░рд╣
рдкрд░ред
- рд╢реАрд░реНрд╖ рдкрде
рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ
рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ред
create table t_path(path) as select '/tmp/cat/' from dual union all select '/tmp/cata/' from dual union all select '/tmp/catb/' from dual union all select '/tmp/catb/catx/' from dual union all select '/usr/local/' from dual union all select '/usr/local/lib/liba/' from dual union all select '/usr/local/lib/libx/' from dual union all select '/var/cache/' from dual union all select '/var/cache/'||'xyz'||rownum||'/' from dual connect by level <= 1e6;
рд╕рдВрдХреЗрддрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:
PATH