Autor: Artur Kręgiel
Prowadząca: mgr inż. Weronika Węgier
Stwórz tabelę projects z polem id i dowolnymi innymi dwoma polami (można skorzystać z rozwiązania z listy DDL).
create table PROJECTS
(
PROJECT_ID number(6) not null,
PROJECT_NAME varchar2(69) not null,
CREATE_DATE date default current_date,
constraint project_id_pk primary key (project_id)
);
Utwórz sekwencję project_pk zawierającą liczby parzyste zaczynając od 2.
create sequence project_pk
start with 2
increment by 2;
Dodaj do tabeli projects 4 nowe rekordy korzystając z utworzonej sekwencji.
insert into projects
(project_id, project_name)
values (project_pk.nextval, 'Bober');
insert into projects
(project_id, project_name)
values (project_pk.nextval, 'Likwidacja Bydgoszczy');
insert into projects
(project_id, project_name)
values (project_pk.nextval, 'Jan Pawel II');
insert into projects
(project_id, project_name)
values (project_pk.nextval, 'Piwo');
Zmodyfikuj utworzoną sekwencję, tak żeby różnica pomiędzy kolejnymi wpisami wynosiła 5.
alter sequence project_pk
increment by 5;
Usuń sekwencję project_pk
drop sequence project_pk;
Stwórz sekwencję detonate_seq, która będzie cyklicznie odliczała w dół od 10 do 0.
create sequence detonate_seq
start with 10
increment by -1
minvalue 0
maxvalue 10
nocache
cycle;
Wyświetl ze zgrozą obecną wartość sekwencji
set serveroutput on unlimited;
declare
counter number;
begin
for i in 0..10
loop
select detonate_seq.nextval into counter from dual;
if counter = 0 then
dbms_output.put_line('AAAAAA ' || to_char(counter));
else
dbms_output.put_line('O Boze ' || to_char(counter));
end if;
end loop;
end;
Stwórz indeks zawierający imię, nazwisko oraz wynagrodzenie pracowników.
create index employees_salary_idx
on employees (first_name, last_name, salary);
Napisz zapytanie, do którego egzekucji zostanie wykorzystany stworzony indeks
select * from employees
where first_name like 'S%';
Sprawdź czy indeks został zastosowany (skorzystaj z wyrażenia explain plan for
)
explain plan
set statement_id = 'Index testing'
into plan_table
for
select * from employees
where first_name like 'S%';
SELECT id, LPAD(' ',2*(LEVEL-1))||operation operation, options,
object_name, object_alias, position
FROM plan_table
START WITH id = 0 AND statement_id = 'Index testing'
CONNECT BY PRIOR id = parent_id AND statement_id = 'Index testing'
ORDER BY id;
Stwórz indeks bazujący na 3 pierwszych cyfrach numeru telefonu pracownika.
create index empl_phone_idx
on employees (substr(phone_number, 1, 3));
Napisz zapytanie, do którego egezukcji zostanie wykorzystany stworzony indeks.
select * from employees where substr(phone_number, 1, 3) not like '011%';