ืื!
ืืืืฃ ืืื ื 24-25, ืื Highload++ Siberia 2019 ืืืฆืื ื ืืื ืืขืืืืื ืืื ื ืึธืืืึธืกืืืืจืกืง. ืืื ืืืขืจ ืืืื ืืขื ืขื ืืืื ืืึธืจื.
ืืื ืืขื ืคึผืึธืกืื, ืืืจ ืืืึธืื ืืื ืฆื ืืืืื ืืื ืืืจ ืื ืคืจืืืืขืืขื ืืืึธืก ืืืจ ืืึธืื ืืื ืืื ืืืขืจ ืืื ืึทืืื ืึทื ืืืจ ืงืขื ืขื ืคึผืจืืืืจื ืืืื ืึธืจืึทืงืืข ืืืืกื. ืื ืืขืจ ืืขืจ ืืืจืืฉื ืื ืืขื ืขื 8 ืคึผืจืึธืืืขืืก, ืขื ืืคึฟืขืจื ืึธืคึผืฆืืขืก ืืื ืืขืจืงืืขืจืื ื.
ืืืึธืก ืืื ืื ืืึทืงืกืืืื ืกืืงืืืึทื ืก ืืืขืจื ืืืจ ืืืขืื ืืขื ืืื ืึท ืจืขืืืืืึทื ืคืื ืขืงืกืึทืงืืืืื ื ืื ืคืืืืขื ืืข ืฉืจืืคื?
create sequence s start with 1;
select s.currval, s.nextval, s.currval, s.nextval, s.currval
from dual
connect by level <= 5;
- 1
- 5
- 10
- 25
- ื ืืื, ืขืก ืืืขื ืืืื ืึท ืืขืืช
ืขื ืืคืขืจืืืื ืึธืจืึทืงืืข ืืึทืงืืืืขื ืืืืฉืึทื (ืฆืืืืจืื ืคึฟืื 8.1.6):
ืืื ืึท ืืืื ืกืงื ืืืกืืึธืืื ื, ืึธืจืึทืงืืข ืื ืงืจืึทืืึทื ื ืื ืกืืงืืืึทื ืก ืืืืื ืึทืืึธื ืคึผืขืจ ืจืืืขืจื. ืืืื ืึท ืืขืจืงืืขืจืื ื ืึผืืื ืืขืจ ืืื ืืืื ืจืขืคึฟืขืจืขื ืฅ ืฆื NEXTVAL ืคึฟืึทืจ ืึท ืกืืงืืืึทื ืก, ืึธืจืึทืงืืข ืื ืงืจืึทืืึทื ืฅ ืื ืกืืงืืืึทื ืก ืึทืืึธื ืืื ืงืขืจื ืื ืืขืืืข ืืืขืจื ืคึฟืึทืจ ืึทืืข ืคืึทื ืืงืฉืึทื ื ืคืื NEXTVAL. ืืืื ืึท ืืขืจืงืืขืจืื ื ืึผืืื ืจืขืคืขืจืขื ืฆื ืฆื CURRVAL ืืื NEXTVAL, ืึธืจืึทืงืืข ืื ืงืจืึทืืึทื ืฅ ืื ืกืืงืืืึทื ืก ืืื ืงืขืจื ืื ืืขืืืข ืืืขืจื ืคึฟืึทืจ ืืืืืข CURRVAL ืืื NEXTVAL ืจืึทืืึทืจืืืึทืก ืคืื ืืืืขืจ ืกืืจ ืืื ืืขืจ ืืขืจืงืืขืจืื ื.
ืืืื, ืืขืจ ืื ืืึทืงืกืืืื ืืืขืจื ืืืขื ืฉืืืืขื ืฆื ืื ื ืืืขืจ ืคืื ืฉืืจืืช, ืืึธืก ืืื 5.
ืืื ืคืืืข ืจืึธืื ืืืขื ืืืื ืืื ืื ืืืฉ ืืื ืึท ืจืขืืืืืึทื ืคืื ืคืืืกื ืืืง ืื ืคืืืืขื ืืข ืฉืจืืคื?
create table t(i integer check (i < 5));
create procedure p(p_from integer, p_to integer) as
begin
for i in p_from .. p_to loop
insert into t values (i);
end loop;
end;
/
exec p(1, 3);
exec p(4, 6);
exec p(7, 9);
- 0
- 3
- 4
- 5
- 6
- 9
ืขื ืืคืขืจืืืื ืึธืจืึทืงืืข ืืึทืงืืืืขื ืืืืฉืึทื (ืฆืืืืจืื ืคึฟืื 11.2):
ืืืืืขืจ ืขืงืกืึทืงืืืืื ื ืงืืื ืกืงื ืืืกืืึธืืื ื, ืึธืจืึทืงืืข ืืึทืจืงืก ืึทื ืืืคึผืืืกืึทื ืกืึทืืืขืคึผืึธืื ื (ื ืื ืื ืืืฆื ืฆื ืืืจ). ืืขืจื ืึธื, ืืืื ืื ืืืกืืึธืืื ื ืคืืืื, ืึธืจืึทืงืืข ืจืึธืืืก ืขืก ืืืืืึธืืึทืืืฉ ืืื ืงืขืจื ืื ืึธื ืืืขื ืืืขื ืืขืืช ืงืึธื ืฆื SQLCODE ืืื ืื SQLCA. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืึท INSERT ืืืกืืึธืืื ื ื ืึท ืืขืืช ืืืจื ืืจืืื ื ืฆื ืึทืจืืึทื ืืืืื ืึท ืืืคึผืืืงืึทื ืืืขืจื ืืื ืึท ืืื ืฆืืง ืืื ืืขืงืก, ืื ืืืกืืึธืืื ื ืืื ืจืึธืืื ืฆืืจืืง.
ืจืืคื HP ืคึฟืื ืืขื ืงืืืขื ื ืืื ืืืื ืืืืจืืื ืืื ืคึผืจืึทืกืขืกื ืืื ืึท ืืืื ืืืกืืึธืืื ื. ืืืื, ืืขืจ ืขืจืฉืืขืจ ืืคึผ ืจืืคื ืงืึทืืคึผืืืฅ ืืฆืืื, ื ืึธื ืื ืกืขืจืืึทื ืืจืืึท ืจืขืงืึธืจืืก; ืื ืฆืืืืืืข ืืคึผ ืจืืคื ืขื ืืก ืืื ืึท ืืขืืช ืืื ืจืึธืืืก ืฆืืจืืง ืื ืคืขืจื ืจืขืงืึธืจื ืึทื ืขืก ืืื ืืขืจืืื ืฆื ืึทืจืืึทื ืืืืื; ืื ืืจืืืข ืจืืคื ืคืืืื, ืืื ืขืก ืืขื ืขื ืืจืื ืจืขืงืึธืจืืก ืืื ืื ืืืฉ.
ืืื ืคืืืข ืจืึธืื ืืืขื ืืืื ืืื ืื ืืืฉ ืืื ืึท ืจืขืืืืืึทื ืคืื ืคืืืกื ืืืง ืื ืคืืืืขื ืืข ืฉืจืืคื?
create table t(i integer, constraint i_ch check (i < 3));
begin
insert into t values (1);
insert into t values (null);
insert into t values (2);
insert into t values (null);
insert into t values (3);
insert into t values (null);
insert into t values (4);
insert into t values (null);
insert into t values (5);
exception
when others then
dbms_output.put_line('Oops!');
end;
/
- 1
- 2
- 3
- 4
- 5
- 6
- 7
ืขื ืืคืขืจืืืื ืึธืจืึทืงืืข ืืึทืงืืืืขื ืืืืฉืึทื (ืฆืืืืจืื ืคึฟืื 11.2):
ื ืืฉืขืง ืงืึทื ืกืืจืืื ืฅ ืืขืฅ ืืืจ ืกืคึผืขืฆืืคืืฆืืจื ืึท ืฆืืฉืืึทื ื ืึทื ืืขืืขืจ ืจืืืขืจื ืืื ืื ืืืฉ ืืืื ืืึทืคืจืืืืงื. ืฆื ืืึทืคืจืืืืงื ืื ืงืึทื ืกืืจืืื ืฅ, ืืขืืขืจ ืจืืืขืจื ืืื ืื ืืืฉ ืืืื ืืึทืื ืื ืฆืืฉืืึทื ื ืึธืืขืจ TRUE ืึธืืขืจ ืืืืืึทืงืึทื ื (ืจืขืื ืฆื ืึท ื ืึทื). ืืืขื ืึธืจืึทืงืืข ืืืืึทืืืืืืฅ ืึท ืงืึธื ืืจืึธื ืงืึทื ืกืืจืืื ืฅ ืฆืืฉืืึทื ื ืคึฟืึทืจ ืึท ืืึทืืื ืืขืจ ืจืืืขืจื, ืงืืื ืืืึทื ื ืขืืขื ืืื ืื ืฆืืฉืืึทื ื ืึธืคึผืฉืืงื ืฆื ืื ืืืึทื ืืืึทืืืขืก ืืื ืื ืจืืืขืจื.
ืืืื, ืื ืืืขืจื ื ืึทื ืืืขื ืคืึธืจื ืื ืืฉืขืง, ืืื ืืขืจ ืึทื ืึธื ืืืข ืืึทื ืืฆืขืจืก ืืืึธืง ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื ืืฆืืื ืืื ืึทื ืคึผืจืืืื ืฆื ืึทืจืืึทื ืืืืื ืื ืืืขืจื 3. ื ืึธื ืืขื, ืื ืืขืืช ืืึทื ืืืื ื ืืืึธืง ืืืขื ืืืกืืขืงื ืื ืืืกื ืขื, ืงืืื ืจืึธืืืืึทืง ืืืขื ืคึผืึทืกืืจื, ืืื ืืื ืืืฉ ืืืขืื ืืืืืื ืคืืจ ืจืืืขื ืืื ืืืึทืืืขืก 1, null, 2 ืืื null ืืืืืขืจ.
ืืืึธืก ืคึผืขืจื ืคืื ืืืึทืืืขืก ืืืขื ื ืขืืขื ืื ืืขืืืข ืคึผืืึทืฅ ืืื ืื ืืืึธืง?
create table t (
a char(1 char),
b char(10 char),
c char(100 char),
i number(4),
j number(14),
k number(24),
x varchar2(1 char),
y varchar2(10 char),
z varchar2(100 char));
insert into t (a, b, i, j, x, y)
values ('Y', 'ะะฐัั', 10, 10, 'ะ', 'ะะฐัั');
- ื ืืื X
- ื ืืื ื
- C ืืื K
- C ืืื Z
- ืง ืืื ื
- ืืื ืืื J
- ืืืฉ ืืื X
- ืึทืืข ืืืกืืขื
ืขื ืืคืขืจืืึธ ืืขื ืขื ืขืงืกืขืจืคึผืฅ ืคืื ืื ืืึทืงืืืืขื ืืืืฉืึทื (12.1.0.2) ืืืืฃ ืกืืึธืจืื ื ืคืึทืจืฉืืื ืืืืคึผืก ืคืื ืืึทืื ืืื ืึธืจืึทืงืืข.
CHAR ืืึทืื ืืืคึผ
ืื CHAR ืืึทืื ืืืคึผ ืกืคึผืขืฆืืคืืฆืืจื ืึท ืคืึทืจืคืขืกืืืงื-ืืขื ื ืืึทืจืึทืงืืขืจ ืฉืืจืืงื ืืื ืื ืืึทืืึทืืืืก ืืึทืจืึทืงืืขืจ ืฉืืขืื. ืืืจ ืกืคึผืขืฆืืคืืฆืืจื ืื ืืึทืืึทืืืืก ืืึทืจืึทืงืืขืจ ืฉืืขืื ืืืขื ืืืจ ืืึทืื ืืืื ืืึทืืึทืืืืก. ืึธืจืึทืงืืข ืื ืฉืืจื ืึทื ืึทืืข ืืืึทืืืขืก ืกืืึธืจื ืืื ืึท CHAR ืืืึทื ืืึธืื ืื ืืขื ื ืกืคึผืขืกืืคืืขื ืืืจื ืืจืืืก ืืื ืื ืืืืกืืขืงืืืื ืืขื ื ืกืขืืึทื ืืืงืก. ืืืื ืืืจ ืึทืจืืึทื ืืืืื ืึท ืืืขืจื ืืืึธืก ืืื ืงืืจืฆืขืจ ืืื ืื ืืืึทื ืืขื ื, ืึธืจืึทืงืืข ืืืืืืง-ืคึผืึทืืก ืื ืืืขืจื ืฆื ืืืึทื ืืขื ื.
VARCHAR2 ืืึทืืึท ืืืคึผ
ืื VARCHAR2 ืืึทืื ืืืคึผ ืกืคึผืขืฆืืคืืฆืืจื ืึท ืืึทืจืึทืงืืขืจ ืฉืืจืืงื ืคืื ืืืขืจืืึทืืึทื ืืขื ื ืืื ืื ืืึทืืึทืืืืก ืืึทืจืึทืงืืขืจ ืฉืืขืื. ืืืจ ืกืคึผืขืฆืืคืืฆืืจื ืื ืืึทืืึทืืืืก ืืึทืจืึทืงืืขืจ ืฉืืขืื ืืืขื ืืืจ ืืึทืื ืืืื ืืึทืืึทืืืืก. ืึธืจืึทืงืืข ืกืืึธืจื ืึท ืืึทืจืึทืงืืขืจ ืืืขืจื ืืื ืึท VARCHAR2 ืืืึทื ืคึผืื ืงื ืืื ืืืจ ืกืคึผืขืฆืืคืืฆืืจื ืขืก, ืึธื ืงืืื ืืืืืืง ืืืึทืื, ืืืื ืื ืืืขืจื ืืื ื ืืฉื ืืงืกืื ืื ืืขื ื ืคืื ืื ืืืึทื.
ื ืืืขืจ ืืึทืืึท ืืืคึผ
ืื ื ืืืขืจ ืืึทืื ืืืคึผ ืกืืึธืจื ื ืื ืืื ืืขืืื ื ืืื positive ืืื ื ืขืืึทืืืื ืคืึทืจืคืขืกืืืงื ื ืืืขืจื ืืื ืึทืืกืึธืืื ืืืึทืืืขืก ืคืื 1.0 ืจืขื ืืืขื 10-130 ืฆื ืึธืืขืจ ื ืืฉื ืึทืจืืึทื ืืขืจืขืื ื 1.0 ืจืขื ืืืขื 10126. ืืืื ืืืจ ืกืคึผืขืฆืืคืืฆืืจื ืึทื ืึทืจืืืืขืืืง ืืืืกืืจืืง ืืืขืืขื ืก ืืืขืจื ืืื ืึทื ืึทืืกืึธืืื ืืืขืจื ืืจืขืกืขืจ ืืื ืึธืืขืจ ืืืืึทื ืฆื 1.0 x 10126, ืึธืจืึทืงืืข ืงืขืจื ืึท ืืขืืช. ืืขืืขืจ ื ืืืขืจ ืืืขืจื ืจืืงืืืืืขืจื ืคืื 1 ืฆื 22 ืืืืขืก. ืืื ืืขื ืืื ืืฉืืื, ืื ืืืึทื ืืจืืืก ืืื ืืืืขืก ืคึฟืึทืจ ืึท ืืึทืืื ืืขืจ ื ืืืขืจืืง ืืึทืื ืืืขืจื ื ืืืขืจ (ืคึผ), ืืื ืคึผ ืืื ืื ืคึผืื ืืืขืืงืืึทื ืคืื ืึท ืืขืืขืื ืืืขืจื, ืงืขื ืขื ืืืื ืงืึทืืงืืึทืืืืืื ืืื ืื ืคืืืืขื ืืข ืคืึธืจืืืืข: ROUND((ืืขื ื(ืคึผ)+s)/2))+1 ืืื s ืืื ืืืืึทื ื ืื ืืืื ืื ื ืืืขืจ ืืื positive, ืืื s ืืื ืืืืึทื ืฆื 1 ืืืื ืื ื ืืืขืจ ืืื ื ืขืืึทืืืื.
ืืื ืึทืืืฉืึทื, ืืึธืื ืืื ืื ื ืขืืขื ืึทื ืขืงืกืขืจืคึผื ืคืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืืืขืื ืกืืึธืจืื ื ื ืื ืืืึทืืืขืก.
ื ื ืึทื ืืื ืืขืจ ืึทืืืขืง ืคืื ืึท ืืืขืจื ืืื ืึท ืืืึทื. ื ืืื ืึธื ืืืืึทืื ืคืขืื ืืืง, ืืืืืึทืงืึทื ื ืึธืืขืจ ืื ืึทืคึผืืึทืงืึทืืึทื ืืึทืื. ื ืึทืืก ืืขื ืขื ืกืืึธืจื ืืื ืื ืืึทืืึทืืืืก ืืืื ืืื ืคืึทืื ืฆืืืืฉื ืฉืคืืืื ืืื ืืึทืื ืืืึทืืืขืก. ืืื ืื ืงืึทืกืขืก, ืืื ืืึทืจืคื 1 ืืืื ืฆื ืงืจืึธื ืื ืืขื ื ืคืื ืื ืืืึทื (ื ืื). ืืจืืืืื ื ื ืึทืืก ืืื ืึท ืจืืืขืจื ืืึทืจืคื ืงืืื ืกืืึธืจืืืืฉ ืืืืึทื ืึท ื ืืึท ืจืืืขืจื ืืขืืขืจ ืกืืื ืึทืื ืึทื ืื ืจืืขื ืฉืคืืืื ืืื ืื ืคืจืืขืจืืืงืข ืจืืืขืจื ืืขื ืขื ื ืึทื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืื ืืขืฆืืข ืืจืื ืฉืคืืืื ืคืื ืึท ืืืฉ ืืขื ืขื ื ืึทื, ืงืืื ืืึทืื ืืขื ืขื ืกืืึธืจื ืคึฟืึทืจ ืื ืฉืคืืืื.
ืืึทืืืจื ืืืืฃ ืื ืืึทืื, ืืืจ ืืืืขื ืจืืืึทื ืื ื. ืืืจ ืืืขืจื ืขืืขื ืึทื ืื ืืึทืืึทืืืืก ื ืืฆื AL32UTF8 ืงืึธืืืจืื ื. ืืื ืืขื ืงืึธืืืจืื ื, ืจืืกืืฉ ืืืชืืืช ืืืขื ืคืึทืจื ืขืืขื 2 ืืืืขืก.
1) ื ืืื X, ืื ืืืขืจื ืคืื ืคืขืื ืึท 'Y' ื ืขืื 1 ืืืื, ืื ืืืขืจื ืคืื ืคืขืื x 'ื' ื ืขืื 2 ืืืืขืก
2) ื ืืื ื, 'ืืืึทืกืืึท' ืืื ื ืื ืืืขืจื ืืืขื ืืืื ืคึผืึทืืื ืืื ืกืคึผืืืกืึทื ืึทืจืืืฃ ืฆื 10 ืืืชืืืช ืืื ืืืขื ื ืขืืขื 14 ืืืืขืก, 'ืืืึทืกืืึท' ืืื ื ืืืขื ื ืขืืขื 8 ืืืืขืก.
3) C ืืื K. ืืืืืข ืคืขืืืขืจ ืืึธืื ืื ืืืขืจื NULL, ื ืึธื ืืื ืขืก ืืขื ืขื ืืึทืืืึทืืืง ืคืขืืืขืจ, ืึทืืื ืืื ืคืึทืจื ืขืืขื 1 ืืืื.
4) C ืืื Z. ืืืืืข ืคืขืืืขืจ ืืึธืื ืื ืืืขืจื NULL, ืึธืืขืจ ืคืขืื Z ืืื ืื ืืขืฆืืข ืืื ืื ืืืฉ, ืึทืืื ืขืก ื ืขืื ื ืืฉื ืคึผืืึทืฅ (0 ืืืืขืก). ืคืขืื C ืึทืงืืึทืคึผืืื 1 ืืืื.
5 ) ืง ืืื ื ืขื ืืื ืฆืื ืคืจืืขืจืืืงื ืคืื. ืื ืืืขืจื ืืื ืื ืง ืคืขืื ืึทืงืืึทืคึผืืื 1 ืืืื, ืืื ื - 0.
6) ืืื ืืื J. ืืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื, ืืืืืข ืืืึทืืืขืก ืืืขื ื ืขืืขื 2 ืืืืขืก. ืืืจ ืจืขืืขื ืขื ืื ืืขื ื ืืื ืื ืคืึธืจืืืืข ืืขื ืืืขื ืคืื ืื ืืึทืงืืืืขื ืืืืฉืึทื: round( (1 + 0)/2) +1 = 1 + 1 = 2.
7) J ืืื X. ืื ืืืขืจื ืืื ืื J ืคืขืื ืืืขื ื ืขืืขื 2 ืืืืขืก, ืื ืืืขืจื ืืื ืื X ืคืขืื ืืืขื ื ืขืืขื 2 ืืืืขืก.
ืืื ืืึทื ืฅ, ืื ืจืืืืืง ืึธืคึผืฆืืขืก ืืขื ืขื: C ืืื K, I ืืื J, J ืืื X.
ืืืึธืก ืืขืขืจืขื ืืืขื ืืืื ืื ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืคืื ืื T_I ืืื ืืขืงืก?
create table t (i integer);
insert into t select rownum from dual connect by level <= 10000;
create index t_i on t(i);
- ืืืขืื ืฆืขื ืืืืงืขืจ
- ืืืขืื ืืื ืืขืจืืขืจ
- ืืืขืื ืืืืื ืืขืจ
- ืืืขืื ืฆืขื ืืืืงืขืจ ืืืืื ืืขืจ
ืขื ืืคืขืจืืืื ืึธืจืึทืงืืข ืืึทืงืืืืขื ืืืืฉืึทื (ืฆืืืืจืื ืคึฟืื 12.1):
ืคึฟืึทืจ ืึท ื-ืืืื ืืื ืืขืงืก, ืื ืืื ืืขืงืก ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืืืืืขื ืื ืืฉืืืืช ืืจืืคึผืื ื ืคืื ืจืึธืื ืืื ืืึทืฆืืื ื ืฆื ืึทื ืืื ืืขืงืก ืืืขืจื.
ืืขืจ ืืื ืืขืงืก ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืืขืืคึผืก ืื ืึธืคึผืืืืืืขืจ ืืึทืฉืืืกื ืฆื ืึทื ืืื ืืขืงืก ืืืขืจืงืืงื ืึธืืขืจ ืคืื ืืืฉ ืืืขืจืงืืงื ืืื ืืขืจ ืขืคืขืงืืืื ืคึฟืึทืจ ืืืืขืจ ืคึฟืจืืื). ื ื ืืืขืจืืง ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืื ืืืงืืืฅ ืึท ืขืคืขืงืืืื ืืื ืืขืงืก ืืืขืจืงืืงื.
ื ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืืืึธืก ืืื ื ืึธืขื ื ืฆื ืื ื ืืืขืจ ืคืื ืืืึทืงืก ืืื ืึท ืืืฉ ืื ืืืงืืืฅ ืึทื ืื ืจืึธืื ืืขื ืขื ืคืืืืงืื ืึธืจืืขืจื ืืื ืื ืืืฉ ืืืึทืงืก ืืืจื ืื ืืื ืืขืงืก ืฉืืืกื. ืืืื ืื ืืึทืืึทืืืืก ืคึผืขืจืคืึธืจืื ืึท ืคืื ืืืฉ ืืืขืจืงืืงื, ืื ืืึทืืึทืืืืก ืืขื ืื ืฆื ืฆืืจืืงืงืจืืื ืื ืจืึธืื ืืื ืืื ืืขื ืขื ืกืืึธืจื ืืืืฃ ืืืกืง, ืืืืกืืขืฉืืขืื ืืืจื ืื ืืื ืืขืงืก ืฉืืืกื. ื ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืืืึธืก ืืื ื ืึธืขื ื ืฆื ืื ื ืืืขืจ ืคืื ืจืึธืื ืื ืืืงืืืฅ ืึทื ืื ืจืึธืื ืืขื ืขื ืฆืขืืืึธืจืคื ืจืึทื ืืึทืืื ืึทืจืืืขืจ ืื ืืึทืืึทืืืืก ืืืึทืงืก ืืื ืืึทืฆืืื ื ืฆื ืื ืืื ืืขืงืก ืฉืืืกื. ืืืื ืื ืืึทืืึทืืืืก ืคึผืขืจืคืึธืจืื ืึท ืคืื ืืืฉ ืืืขืจืงืืงื, ืื ืืึทืืึทืืืืก ืืืึธืื ื ืืฉื ืฆืืจืืงืงืจืืื ืจืึธืื ืืื ืงืืื ืกืึธืจืืืจื ืกืืจ ืืืจื ืืขื ืืื ืืขืงืก ืฉืืืกื.
ืืื ืืขื ืคืึทื, ืื ืืึทืื ืืขื ืขื ืืืืืื ืืืืกืืขืฉืืขืื, ืึทืืื ืื ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืืืขื ืืืื ืืืืึทื ืฆื ืึธืืขืจ ื ืึธืขื ื ืฆื ืื ื ืืืขืจ ืคืื ืคืึทืจื ืืืขื ืืืึทืงืก ืืื ืื ืืืฉ. ืคึฟืึทืจ ืึท ื ืึธืจืืึทื ืืืึธืง ืืจืืืก ืคืื 8 ืงืืืืืืื, ืืืจ ืงืขื ืขื ืืขืจืืืึทืจืื ืึทื ืืืขืื ืึท ืืืืื ื ืฉืืึธื ื ืืืขืจ ืืืึทืืืขืก ืืืขื ืคึผืึทืกืืง ืืื ืืืื ืืืึธืง, ืึทืืื ืื ื ืืืขืจ ืคืื ืืืึทืงืก, ืืื ืืื ืึท ืจืขืืืืืึทื, ืื ืงืืึทืกืืขืจืื ื ืคืึทืงืืึธืจ ืืืขื ืืืื ืืืขืื ืฆืขื ืืืืงืขืจ.
ืืื ืืืึธืก ืืืึทืืืขืก ืคืื N ืืืขื ืื ืคืืืืขื ืืข ืฉืจืืคื ืืฆืืื ืขืงืกืึทืงืืืืึทื ืืื ืึท ืจืขืืืืขืจ ืืึทืืึทืืืืก ืืื ื ืึธืจืืึทื ืกืขืืืื ืืก?
create table t (
a varchar2(N char),
b varchar2(N char),
c varchar2(N char),
d varchar2(N char));
create index t_i on t (a, b, c, d);
- 100
- 200
- 400
- 800
- 1600
- 3200
- 6400
ืขื ืืคืขืจืืืื ืึธืจืึทืงืืข ืืึทืงืืืืขื ืืืืฉืึทื (ืฆืืืืจืื ืคึฟืื 11.2):
ืืึทืืืฉืืงืึทื ืืึทืืึทืืึทืกืข ืืืืืฅ
ื ืืืขืจ
ืืืคึผ ืคืื ืืืืื
ืืืืื ืืืขืจื
ืื ืืขืงืกืื
ืืึทื ืฅ ืืจืืืก ืคืื ืื ืืขืงืกื ืืืึทื
75% ืคืื ืื ืืึทืืึทืืืืก ืืืึธืง ืืจืืืก ืืื ืืก ืขืืืขืืข ืึธืืืืขืจืืขื
ืืืื, ืื ืืึทื ืฅ ืืจืืืก ืคืื ืื ืืขืงืกื ืฉืคืืืื ืืึธื ื ืืฉื ืืงืกืื 6Kb. ืืืึธืก ืืึทืคึผืึทื ื ืืืืึทืืขืจ ืืขืคึผืขื ืืก ืืืืฃ ืื ืืืืกืืขืงืืืื ืืึทืืข ืงืึธืืืจืื ื. ืคึฟืึทืจ AL32UTF8 ืงืึธืืืจืื ื, ืืืื ืืึทืจืึทืงืืขืจ ืงืขื ืขื ืคืึทืจื ืขืืขื ืึท ืืึทืงืกืืืื ืคืื 4 ืืืืขืก, ืึทืืื ืืื ืื ืขืจืืกื ืคืึทื ืกืฆืขื ืึทืจ, ืืืขืื 6 ืืืชืืืช ืืืขื ืคึผืึทืกืืง ืืื 1500 ืงืืืืืืื. ืืขืจืืืขืจ, ืึธืจืึทืงืืข ืืืขื ื ืืฉื ืืขืจืืืืื ืืื ืืขืงืก ืฉืึทืคืื ื ืืื N = 400 (ืืืขื ืื ืขืจืืกื ืคืึทื ืฉืืืกื ืืขื ื ืืื 1600 ืืืชืืืช * 4 ืืืืขืก + ืจืึธืืืื ืืขื ื), ืืฉืขืช ืืื N = 200 (ืึธืืขืจ ืืืืื ืืงืขืจ) ืงืจืืืืืื ื ืื ืืื ืืขืงืก ืืืขื ืึทืจืืขืื ืึธื ืคืจืืืืขืืขื.
ืื INSERT ืึธืคึผืขืจืึทืืึธืจ ืืื ืื APPEND ืึธื ืฆืืืขืจืขื ืืฉ ืืื ืืืืืื ื ืฆื ืืึธืื ืืึทืื ืืื ืืืจืขืงื ืืึธืืข. ืืืึธืก ืืึทืคึผืึทื ื ืืืื ืขืก ืืื ืืขืืืขื ืื ืฆื ืืขืจ ืืืฉ ืืืืฃ ืืืึธืก ืื ืฆืื ืื ืืึทื ืื?
- ืื ืืึทืื ืืืขื ืืืื ืืึธืืืื ืืื ืืืจืขืงื ืืึธืืข, ืื ืฆืื ืื ืืืขื ืึทืจืืขืื ืืื ืืขืจืืืึทืจื
- ืื ืืึทืื ืืืขื ืืืื ืืึธืืืื ืืื ืืืจืขืงื ืืึธืืข, ืึธืืขืจ ืื ืฆืื ืื ืืืขื ื ืืฉื ืืืื ืขืงืกืึทืงืืืืึทื
- ืื ืืึทืื ืืืขื ืืืื ืืึธืืืื ืืื ืงืึทื ืืืขื ืฉืึทื ืึทื ืืึธืืข, ืื ืฆืื ืื ืืืขื ืึทืจืืขืื ืืื ืขืก ืืึธื
- ืื ืืึทืื ืืืขื ืืืื ืืึธืืืื ืืื ืงืึทื ืืืขื ืฉืึทื ืึทื ืืึธืืข, ืึธืืขืจ ืื ืฆืื ืื ืืืขื ื ืืฉื ืืืื ืขืงืกืึทืงืืืืึทื
- ืื ืืึทืื ืืืขื ื ืืฉื ืืืื ืืึธืืืื, ืึท ืืขืืช ืืืขื ืืืื ืจืขืงืึธืจืืขื
ืขื ืืคืขืจืืืืกืืงืื, ืืึธืก ืืื ืืขืจ ืึท ืงืฉืื ืคืื ืืึธืืืง. ืฆื ืืขืคึฟืื ืขื ืื ืจืืืืืง ืขื ืืคึฟืขืจื, ืืื ืืืึธืื ืคึฟืึธืจืฉืืึธืื ืื ืคืืืืขื ืืข ืจืืืึทื ืื ื ืืึธืืขื:
- ืื ืกืขืจืฉืึทื ืืื ืืืจืขืงื ืืึธืืข ืืื ืืืจืืืขืงืึธืื ืืืจื ืืืจืขืงื ืคืึธืจืืืจืื ื ืคืื ืึท ืืึทืื ืืืึธืง, ืืืืคึผืึทืกืื ื ืื ืกืงื ืืึธืืึธืจ, ืืืึธืก ืื ืฉืืจื ืืืื ืืืืงืืึทื. ืึทืืื, ืื ืฉืืจืื ื ืื ืืืจืืคืืจืื ื ืคืื ืื ืฆืื ืื ืืื ืืืืขืจ ืฉืืืขืจ, ืืืื ื ืืฉื ืืืืืขืืืขื, ืืื ืขืก ืืื ืงืืื ืคืื ื ืืื ืืขื, ืืืืึทื ืขืก ืืืขื ื ืึธื ืจืึทืืืงืึทืืื ืคึผืึทืืขืืขื ืึทืจืึธืคึผ ืื ืื ืกืขืจืฉืึทื.
- ืืืจืืคืึทื ืฆื ืืืกืคืืจื ืื ืฆืื ืื ืืืขื ืคืืจื ืฆื ืื ืคืึทืงื ืึทื ืืืื ืื ืืึทืื ืืื ืื ืืืฉ ืืขื ืขื ืื ืืขืืืข, ืื ืฉืืึทื ืคืื ืื ืืึทืืึทืืืืก ืืื ืึท ืืึทื ืฅ (ืื ืืขืจืข ืืืฉื) ืืืขื ืึธืคืขื ืืขื ืืืืฃ ืื ืืึธืืข ืืื ืืืึธืก ืื ืืึทืื ืืขื ืขื ืื ืกืขืจืืึทื. ืืึธืก ืืืขื ืืึธื ืฆืขืฉืืขืจื ืืึทืื ืึธืจื ืืืขืืงืืึทื ืืื ืงืขื ืขื ื ืื ืืืื ืืขืืืขื ืื ืืื ืึท ืืืืืื ื ืืื ืคึผืจืึธืืืงืฆืืข.
- ืื ืื ืึทืืืืืื ืฆื ืืืจืืคืืจื ืื ืืขืืขืื ืึธืคึผืขืจืึทืฆืืข ืืื ืืืื ืืืืื ืืื ืืื ืึท ืืขืืช. ืืืขืจ ืืึธ ืืืจ ืืึธื ืืขืืขื ืงืขื ืึทื APPEND ืืื ืึท ืึธื ืฆืืืขืจืขื ืืฉ, ืืื ืื ืึทืืืขืืืื ืข ืืึธืืืง ืคืื ืืื ืฅ ืืื ืึทื ืืื ืืขื ืขื ืืขื ืืืขื ืืื ืืฉืืื ืืืื ืืขืืืขื, ืึธืืขืจ ืืืื ื ืืฉื, ืืขืจ ืึธืคึผืขืจืึทืืึธืจ ืืื ืขืงืกืึทืงืืืืึทื ืึธื ืืขื ืืืขื ืื ืึธื ืฆืืืขืจืขื ืืฉ.
ืึทืืื ืืขืจ ืืขืจืืืึทืจื ืขื ืืคืขืจ ืืื ืื ืืึทืื ืืืขื ืืืื ืืึธืืืื ืืื ื ืึธืจืืึทื (SQL) ืืึธืืข, ืืขืจ ืฆืื ืื ืืืขื ืคืืืขืจื.
ืืืื ืึธืจืึทืงืืข ืืึทืงืืืืขื ืืืืฉืึทื (ืฆืืืืจืื ืคึฟืื 8.04):
ืืืืืึทืืืืฉืึทื ื ืคืื ืื ืจืืกืืจืืงืฉืึทื ื ืืืขื ืคืึทืจืฉืึทืคื ืื ืืขืจืงืืขืจืื ื ืฆื ืืืกืคืืจื ืกืืจืืึทื, ื ืืฆื ืื ืงืึทื ืืืขื ืฉืึทื ืึทื ืึทืจืืึทื ืืืืื ืืจื, ืึธื ืืืึธืจื ืื ืื ืึธืืขืจ ืืขืืช ืึทืจืืืงืืขื. ืึท ืืืกื ืขื ืืื ืื ืจืืกืืจืืงืฉืึทื ืืืืฃ ืกืืืืืืึทื ืฅ ืึทืงืกืขืกืื ื ืื ืืขืืืข ืืืฉ ืืขืจ ืืื ืึทืืึธื ืืื ืึท ืืจืึทื ืกืึทืงืืืึธื, ืืืึธืก ืงืขื ืคืึทืจืฉืึทืคื ืืขืืช ืึทืจืืืงืืขื.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืืจืืืขืจื ืึธืืขืจ ืจืขืคืขืจืขื ืืฉืึทื ืึธืจื ืืืขืืงืืึทื ืืขื ืขื ืคืึธืจืฉืืขืื ืืืืฃ ืื ืืืฉ, ืื APPEND ืึธื ืฆืืืขืจืขื ืืฉ ืืืขื ืืืื ืืืื ืึธืจืืจื ืืืขื ืืืจ ืคึผืจืืืืจื ืฆื ื ืืฆื ืืืจืขืงื-ืืึทืกืข INSERT (ืกืืจืืึทื ืึธืืขืจ ืคึผืึทืจืึทืืขื), ืืื ืืขืืื ื ืืื ืื ืคึผืึทืจืึทืืขื ืึธื ืฆืืืขืจืขื ืืฉ ืึธืืขืจ ืคึผืื ืงื, ืืืื ืขืก ืืื.
ืืืึธืก ืืืขื ืคึผืึทืกืืจื ืืืขื ืื ืคืืืืขื ืืข ืฉืจืืคื ืืื ืขืงืกืึทืงืืืืึทื?
create table t(i integer not null primary key, j integer references t);
create trigger t_a_i after insert on t for each row
declare
pragma autonomous_transaction;
begin
insert into t values (:new.i + 1, :new.i);
commit;
end;
/
insert into t values (1, null);
- ืืขืจืึธืื ืืืจืืคืืจืื ื
- ืืืจืืคืึทื ืจืขืื ืฆื ืกืื ืืึทืงืก ืืขืืช
- ืืขืืช: ืึทืืืึธื ืึธืืึธืืก ืืจืึทื ืกืึทืงืืืึธื ืืื ื ืื ืืืืืืง
- ืืขืืช ืฉืืึทืืืช ืฆื ืืงืกืื ืื ืืึทืงืกืืืื ืจืืคื ื ืขืกืืื ื
- ืคืจืขืื ืฉืืืกื ืืืืขื ืืขืืช
- ืืขืืช ืฉืืึทืืืช ืฆื ืืึทืงืก
ืขื ืืคืขืจืื ืืืฉ ืืื ืฆืื ืื ืืขื ืขื ืืืฉืืคื ืืึทื ืฅ ืจืืืืืง ืืื ืืขื ืึธืคึผืขืจืึทืฆืืข ืืึธื ื ืืฉื ืคืืจื ืฆื ืคึผืจืึธืืืขืืก. ืึธืืึทื ืึทืืึทืก ืืจืึทื ืืึทืงืฉืึทื ื ืืื ืึท ืฆืื ืื ืืขื ืขื ืืืื ืขืจืืืืื, ืึทื ืืขืจืฉ ืืึธืืื ื ืืืึธืื ื ืื ืืืื ืืขืืืขื, ืคึฟืึทืจ ืืืึทืฉืคึผืื.
ื ืืื ืืืื ืฉืืขืื ืื ืขืจืฉืืข ืจืืืขืจื, ืืืืื ื ืืขืืื ืืขื ืข ืฆืื ืื ืคืืืขืจ ืืจืืื ืืขืืืืื ืื ืฆืืืืืืข ืจืืืขืจื, ืืืืก ืืขืจ ืฆืื ืื ืืื ื ืืืืืื ืคืืืขืจื, ืืจืืื ืืืืื ื ืืจืืืข ืจืื, ืืื ืืืื ืืืืืืขืจ ืืื ืื ืกืืขืืืืขื ื ืืื ืืืจืืืขืคืืื ืฆืืืื ืืืืขืจืฉืจืืืื ืื ืืึทืงืกืืืื ื ืขืกืืื ื ืคืื ืจืืคื. ืึธืืขืจ, ืื ืื ืืขืจ ืกืึทืืึทื ืคืื ื ืงืืื ืืื ืฉืคึผืื. ืืื ืืขืจ ืฆืืื ืืืขื ืื ืฆืื ืื ืืื ืขืงืกืึทืงืืืืึทื, ืื ืงืึธืืืื ืืื ื ืึธื ื ืืฉื ืืขืขื ืืืงื ืคึฟืึทืจ ืืขืจ ืขืจืฉืืขืจ ืื ืกืขืจืืึทื ืจืขืงืึธืจื. ืืขืจืืืขืจ, ืึท ืฆืื ืื ืคืืืกื ืืืง ืืื ืึท ืึธืืึทื ืึทืืึทืก ืืจืึทื ืกืึทืงืืืึธื ืคืจืืืื ืฆื ืึทืจืืึทื ืืืืื ืืื ืื ืืืฉ ืึท ืจืืืขืจื ืืืึธืก ืจืขืคืขืจืขื ืฆื ืึท ืคืจืขืื ืฉืืืกื ืฆื ืึท ืจืขืงืึธืจื ืืืึธืก ืืื ื ืึธื ื ืืฉื ืืืืื ืืขื. ืืขืจ ืจืขืืืืืึทื ืืื ืึท ืืืึทืจืื (ืื ืึธืืึทื ืึทืืึทืก ืืจืึทื ืกืึทืงืืืึธื ืืืืืฅ ืคึฟืึทืจ ืื ืืืืคึผื ืืจืึทื ืกืึทืงืืืึธื ืฆื ืืืขืจืืขืื ืฆื ืืขื ืืืื ืขืก ืงืขื ืขื ืึทืจืืึทื ืืืืื ืืึทืื) ืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืื ืืืืคึผื ืืจืึทื ืกืึทืงืืืึธื ืืืืืฅ ืคึฟืึทืจ ืื ืึธืืึทื ืึทืืึทืก ืืจืึทื ืกืึทืงืืืึธื ืฆื ืคืึธืจืืขืฆื ืืจืืขืื ื ืึธื ืื ืฆืื ืื. ื ืืขืืืึทืง ืึทืงืขืจื ืืื, ืืื ืึท ืจืขืืืืืึทื, ืื ืึธืืึทื ืึทืืึทืก ืืจืึทื ืกืึทืงืืืึธื ืืื ืงืึทื ืกืึทืื ืจืขืื ืฆื ืกืืืืช ืฉืืึทืืืช ืฆื ืืึทืงืก.
ืืืืื ืจืขืืืกืืจืืจื ื ืืฆืขืจืก ืงืขื ืขื ืึธื ืืืื ื ืขืืขื ืืื ืื ืืืขืจืืืืง.
ืขืก ืืื ืืขืืืขื ืฉืืืขืจ ืฆื?
-
ืืื ืฆืืืื ืคืื ืืขืจ ืืึธื ืืื ืืืืื ืึทืืฅ ืจืืืืืง ืืึทืฉืืึธืกื.
-
ื ืื ืืึทืงืข, ืืื ืืื ืืขืืืขื ืคืึทืืฉ ืืืืฃ ืึท ืคึผืึธืจ ืคืื ืฉืืืืช.
-
ืืื ืกืึทืืืื ืืึทืื ืคืื ืขืก ืจืืืืืง.
-
ืืื ืืขืกื ืื ืขื ืืคืขืจ ืฆืืืื ืืึธื!
-
ืืื ืืืขื ืฉืจืืึทืื ืืื ืื ืืึทืืขืจืงืื ืืขื
14 ืืื ืืฆืขืจ ืืืื ืืขืฉืืืื. 10 ืืื ืืฆืขืจ ืืืื ืืื ืืคืืขืืืืื.
ืืงืืจ: www.habr.com