Tworzenie tabeli Np. create table nazwa_tab( \\stworzenie tabeli Id numer(4) constraint PRAC_PK primary key, \\ustawiamy klucz podst. Nazwisko varchar2(30), \\typ tekstowy 30 znaków Kwota number(10,2) default 5000, \\wartość domyślna 5000 Nr_konta number(20) \\liczba 20 cyfrowa, 0 po przecinku CONSTRAINT nazwa_con CHECK (kwota>2000), \\sprawdzamy czy kwota jest większa niż 2000, CONSTRAINT nazwa_2 UNIQUE (nazwisko), ); Dodawanie pól w tabeli ALTER TABLE PRAC ADD(IMIE VARCHAR(30)); Modyfikacja pól w tabeli ALTER TABLE PRAC MODIFY(IMIE VARCHAR2(40)); Dodawanie komentarzy: COMMENT ON TABLE PRAC IS 'Nasz komentarz'; Blokowanie i odblokowanie ograniczeń ALTER TABLE PRAC DISABLE CONSTRAINT nazwa_con; ALTER TABLE PRAC ENABLE CONSTRAINT nazwa_con; Usuwanie ograniczeń ALTER TABLE PRAC DROP CONSTRAINT nazwa_con; Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z Usuwanie tabeli Drop table nazwa_tab1 cascade constraints; Dodawanie danych [INSERT] Podstawowy insert Najprostsza forma polecenia insert ma konstrukcję: INSERT INTO NAZWA_TABELI VALUES (WARTOŚĆ1, WARTOŚĆ2); Słowo INTO jest opcjonalne i nie musimy go pisać. Przy powyższym musimy podać wartości dla wszystkich kolumn uzupełnianej tabeli. Jeśli chcemy dodać wartość tylko do niektórych kolumn musimy zastosować poniższą konstrukcję: INSERT INTO NAZWA_TABELI (NAZWA_KOLUMNY1, NAZWA_KOLUMNY2) VALUES (WARTOŚĆ1, WARTOŚĆ2);
Musimy jednak pamiętać, że jeśli w tabeli istnieje klucz główny, musimy uzupełnić kolumnę której ten klucz dotyczy. Insert danych pochodzących z zapytania Do tabeli możemy dodać również wiele wierszy jednocześnie, pochodzących z innego zapytania. Warunkiem powodzenia jest zgodność ilości oraz typów kolumn w tabeli źródłowej i docelowej. INSERT INTO JOBS SELECT TEST.NEXTVAL, JOB_TITLE, MIN_SALARY, MAX_SALARY FROM JOBS; Kasowanie danych [DELETE] Aby skasować wszystkie dane z tabeli stosujemy konstrukcję : DELETE FROM NAZWA_TABELI; Możemy też skasować tylko część danych z tabeli stosując WHERE tak jak przy zapytaniach SELECT DELETE FROM NAZWA_TABELI WHERE ID=1000; Nie użycie WHERE skutkuje usunięciem wszystkich rekordów w tabeli. Kasowanie danych TRUNCATE Tabelę można również wyczyścić całkowicie przy pomocy polecenia TRUNCATE: TRUNCATE TABLE JOBS; Nie możemy tutaj w przeciwieństwie do DELETE zastosować WHERE. Możemy wyczyścić tylko całość tabeli. Tej operacji nie da się odwrócić w prosty sposób! Np. delete from prac where etat='asystent'; Modyfikowanie danych [UPDATE] Podstawowa forma modyfikacji danych: UPDATE NAZWA_TABELI SET KOLUMNA=WARTOŚĆ; Możemy zmieniać wiele kolumn naraz dodając je po przecinku: UPDATE NAZWA_TABELI SET KOLUMNA=WARTOŚĆ, SET KOLUMNA2=WARTOŚĆ2; Również tutaj możemy zastosować WHERE: UPDATE NAZWA_TABELI SET KOLUMNA=WARTOŚĆ, SET KOLUMNA2=WARTOŚĆ2 WHERE KOLUMNA=WARTOŚĆ; Nie użycie WHERE skutkuje zmianą wszystkich rekordów w tabeli. np.: update prac
set placa_pod=(select placa_pod from dodatki d where d.id_prac=prac.id_prac) where id_prac in (select id_prac from dodatki); Zadania do bazy ewidencji pracowników uczelni 1. Utwórz poniższe tabele Nazwa relacji: PROJEKTY Nazwa relacji: PRZYDZIALY Kluczem podstawowym relacji PRZYDZIALY jest para atrybutów (ID_PROJEKTU, NR_PRACOWNIKA), nazwa klucza to PRZYDZIALY_PK. 2. Dodaj do relacji PRZYDZIALY atrybut GODZINY, będący liczbą całkowitą o maksymalnej wartości równej 9999. 3. Dodaj do utworzonych przez siebie relacji poniższe komentarze i wyświetl te komentarze TABLE_NAME TABLE_TYPE COMMENTS ---------- ---------- ----------------------------------- PROJEKTY TABLE Lista projektów prowadzonych przez pracowników PRZYDZIALY TABLE Informacje o przydziale poszczególnych pracowników do projektów 4. Wyświetl informacje o ograniczeniach założonych na relacji PRZYDZIALY CONSTRAINT_NAME C SEARCH_CONDITION ------------------- - ----------------------------------
PRZYDZIALY_DATY_CHK C od < do PRZYDZIALY_FK_01 R PRZYDZIALY_FK_02 R PRZYDZIALY_PK P PRZYDZIALY_ROLA_CHK C rola in ('KIERUJĄCY','ANALITYK','PROGRAMISTA') PRZYDZIALY_STAWKA_CHK C stawka>0 SYS_C00308102 C "ID_PROJEKTU" IS NOT NULL SYS_C00308103 C "NR_PRACOWNIKA" IS NOT NULL 5. Wyłącz tymczasowo sprawdzanie unikalności opisów projektów. 6. Zwiększ maksymalny rozmiar atrybutu OPIS_PROJEKTU do 30 znaków. 7. Utwórz relację PRACOWNICY_ZESPOLY zawierającą dane: NAZWISKO, POSADA, ROCZNA_PLACA, ZESPOL, ADRES_PRACY (roczna płaca to dwunastokrotność płacy podstawowej plus płaca dodatkowa). Posłuż się mechanizmem tworzenia relacji w oparciu o zapytanie. 8. Aktywuj wyłączone wcześniej ograniczenie. 9. Wstaw do relacji PROJEKTY następujące krotki. 10. Wstaw do relacji PRZYDZIALY następujące krotki 11. Podnieś stawkę pracownika o numerze 170 do 1200 złotych (relacja PRZYDZIALY). 12. Zmień datę zakończenia projektu Indeksy bitmapowe na 31 grudnia 2001 r. i zmniejsz fundusz tego projektu do 19000 złotych. 13. Wstaw dwie propozycje własnych projektów. 14. Wszystkim pracownikom podnieś płacę podstawową o 10% średniej płacy podstawowej w ich zespole (relacja PRACOWNICY). 15. Podnieś do średniej pracowniczej płacę podstawową najmniej zarabiającym pracownikom. 16. Uaktualnij płace dodatkowe pracowników zespołu 20. Nowe płace dodatkowe mają być równe średniej płacy podstawowej pracowników, których przełożonym jest DABACKI. 17. Pracownikom zespołu o nazwie INFORMATYKA daj 25% podwyżkę (płaca podstawowa).
18. Usuń informacje o projektach do których nie przydzielono żadnych pracowników. 19. Usuń bezpośrednich podwładnych pracownika o nazwisku XXX. Zastosuj usuwanie krotek z wyniku połączenia relacji. 20. Utworzyć tabelę PRAC_PROF jako kopię PRAC, usunąć wszystkie dane i wpisać tych pracowników, z tabeli PRAC, którzy pracują na stanowisku profesorskim i zostali zatrudnieni przed rokiem 1978. 21. Zwiększyć płacę podstawową do 120% średniej płacy podstawowej w zespole pracownika oraz zwiększyć płacę dodatkową do wartości równej maksymalnej płacy dodatkowej w zespole pracownika. Operacji dokonać tylko dla pracowników zatrudnionych po 1990 roku. Wskazówka: użyć funkcji nvl(wyrażenie, wartość) służącej do obsługi tzw. wartości pustych. 10-11 zad 3 12-14 zad 3,5 15-17 zad 4 18-20 zad 4,5 21 zad 5