cw1 stud


Ćwiczenie 1

I. Środowisko pracy SQL*Plus

Po zalogowaniu się w systemie UNIX, użytkownik uruchamia środowisko pracy SQL*Plus pisząc polecenie:

$ sqlplus identyfikator_uzytkownika

Po podaniu hasła użytkownika pojawia się znak gotowości środowiska SQL :

sql>

Od tego momentu użytkownik kontaktuje się z serwerem bazy danych wyłącznie poprzez polecenia języka SQL. W dowolnym miejscu polecenia SQL można przejść do nowej linii i edytować polecenie w nowej linii. Środowisko numeruje kolejne linie polecenia. Polecenie kończone jest znakiem średnika „;” i dlatego po tym znaku i przyciśnięciu klawisza ENTER środowisko podejmuje próbę wykonania polecenia SQL. W przypadku gdy w poleceniu występują błędy, na ekran wyprowadzane są komunikaty o błędach.

Ostatnio wprowadzone polecenie SQL przechowywane jest w buforze. Edycja ostatnio wprowadzonego polecenia możliwa jest w następujący sposób:

- zapisanie w pliku zawartości bufora (plik zapisywany w katalogu domowym użytkownika w systemie UNIX): sql>save plik (plik na dysku posiada rozszerzenie .sql);

- uruchomienie systemowego edytora tekstu (np. vi , lub pico): sql>!pico plik.sql;

- dokonanie zmian w pliku i zapisanie zmian;

- pobranie do bufora zmienionego polecenia: sql> get plik;

- wykonanie polecenia po dokonanych zmianach: sql> run.

W przypadku, gdy zestaw poleceń języka SQL mamy zapisany w pliku (skrypcie), to uruchomienie skryptu SQL odbywa się w następujący sposób:

sql> @nazwa_skryptu

Strukturę tabeli występującej w bazie danych można wyświetlić poleceniem:

sql> desc nazwa_tabeli

Wyświetlenie nazw tabel, które występują w bazie danych można wykonać dzięki zapytaniu do tabeli systemowej (perspektywy) o nazwie: USER_ALL_TABLES:

sql> select table_name from user_all_tables;

II. Definiowanie relacji

ZADANIE: Zdefiniować relacje ZESP, ETAT, PRAC o schematach przedstawionych poniżej. Zdefiniować również odpowiednie ograniczenia integralnościowe.

ZESP

ID_ZESP

Number(2)

Klucz podstawowy

NAZWA

Varchar2(20)

Atrybut obowiązkowy

ADRES

Varchar2(20)

ETAT

NAZWA

Varchar2(10)

Klucz podstawowy

PLACA_MIN

Number(6,2)

Atrybut obowiązkowy wartość >0

PLACA_MAX

Number(6,2)

PRAC

ID_PRAC

Number(4)

Klucz podstawowy

NAZWISKO

Varchar2(15)

Atrybut obowiązkowy

ETAT

Varchar2(10)

Referencja do atrybutu NAZWA relacji ETAT

SZEF

Number(4)

Referencja do atrybutu ID_PRAC relacji PRAC

ZATRUDNIONY

date

PLACA_POD

Number(6,2)

wartość większa od 100

PLACA_DOD

Number(6,2)

domyślna wartość 0

ID_ZESP

Number(2)

Referencja do atrybutu ID_ZESP relacji ZESP

2. Utworzyć tabele ZESP, ETAT, PRAC:

CREATE TABLE ZESP (

ID_ZESP Number(2) primary key,

Nazwa Varchar2(20) not null,

Adres Varchar2(20));

CREATE TABLE ETAT (

Nazwa Varchar2(10) primary key,

Placa_min Number(6,2) not null,

Placa_max Number(6,2));

CREATE TABLE PRAC (

ID_PRAC Number(4) primary key,

NAZWISKO Varchar2(15) not null,

ETAT Varchar2(10) references Etat(Nazwa),

SZEF Number(4) references Prac(Id_prac),

ZATRUDNIONY date,

PLACA_POD Number(6,2) check (Placa_pod > 100),

PLACA_DOD Number(6,2) default 0,

ID_ZESP Number(2) references ZESP(ID_ZESP));

3. Sprawdzić struktury utworzonych tablic:

desc etat

desc prac

desc zesp

4. Wstawić wartości do tabeli ZESP:

INSERT INTO ZESP VALUES (10,'ADMINISTRACJA', 'MIKOLAJCZYKA 5');

INSERT INTO ZESP VALUES (20,'INFORMATYKA', 'SOSNKOWSKIEGO 31');

INSERT INTO ZESP VALUES (30,'BUDOWNICTWO', 'KATOWICKA 14');

INSERT INTO ZESP VALUES (40,'AUTOMATYKA', 'SOSNKOWSKIEGO 31');

INSERT INTO ZESP VALUES (50,'ELEKTROTECHNIKA', 'LUBOSZYCKA 9');

5. Utworzyć kopię tablicy ZESP o nazwie ZESP_KOPIA:

CREATE TABLE ZESP_KOPIA AS SELECT * FROM ZESP;

6. Zmienić nazwę tablicy ZESP_KOPIA na ZESP_BIS:

rename zesp_kopia to zesp_bis;

6. Utworzyć kopię tablicy ZESP zawierającą tylko kolumny ID_ZESP i NAZWA:

CREATE TABLE ZESP_KOPIA AS SELECT ID_ZESP, NAZWA FROM ZESP;

7. Do tablicy ZESP_KOPIA dodać kolumnę ADRES:

ALTER TABLE ZESP_KOPIA /*ALTER TABLE zmienia właściwości istniejącej tabeli stworzonej instrukcją CREATE TABLE*/

ADD (ADRES VARCHAR2(10));

8. Zmienić format kolumny ADRES W tablicy ZESP_KOPIA na 20-znakowy:

ALTER TABLE ZESP_KOPIA

MODIFY (ADRES VARCHAR(20));

Uwaga! Wewnętrzne zabezpieczenia bazy nie pozwalają na przedefiniowanie kolumn sprzeczne ze strukturą wprowadzonych już danych.

9. Usunąć tabelę ZESP_BIS:

DROP TABLE ZESP_BIS;

Uwaga! Usunięcie nieodwracalne

10. Usunąć wszystkie rekordy z tabeli ZESP_KOPIA:

DELETE FROM ZESP_KOPIA; (odwracalne poleceniem ROLLBACK)

lub TRUNCATE TABLE ZESP_KOPIA; (nieodwracalne)

11. Napisać skrypt wstawiający wartości do tabeli ETAT

INSERT INTO ETAT VALUES ('PROFESOR' ,2800.00, 4500.00);

INSERT INTO ETAT VALUES ('ADIUNKT' ,1510.00, 2750.00);

INSERT INTO ETAT VALUES ('ASYSTENT' ,1300.00, 1500.00);

INSERT INTO ETAT VALUES ('STAZYSTA' ,650.00, 1250.00);

INSERT INTO ETAT VALUES ('SEKRETARKA',970.00, 1450.00);

INSERT INTO ETAT VALUES ('DYREKTOR' ,2280.00, 3100.00);

12. Napisać skrypt wstawiający wartości do tabeli PRAC

INSERT INTO PRAC VALUES (100,'ABACKI' ,'DYREKTOR', NULL,to_date('01-01-68','DD-MM-RR'),2730.00,420.50,10);

INSERT INTO PRAC VALUES (110,'BABACKI' ,'PROFESOR' ,100 ,to_date('01-05-73','DD-MM-RR'),3350.00,210.00,40);

INSERT INTO PRAC VALUES (120,'CABACKI' ,'PROFESOR' ,100 ,to_date('01-09-77','DD-MM-RR'),3070.00, NULL,30);

INSERT INTO PRAC VALUES (130,'DABACKI' ,'PROFESOR' ,100 ,to_date('01-07-68','DD-MM-RR'), 2960.00, NULL,20);

INSERT INTO PRAC VALUES (140,'EBACKI' ,'PROFESOR' ,130 ,to_date('15-09-75','DD-MM-RR'), 2830.00,105.00,20);

INSERT INTO PRAC VALUES (150,'FABACKI','ADIUNKT' ,130 ,to_date('01-09-77','DD-MM-RR'), 1645.50, NULL,20);

INSERT INTO PRAC VALUES (160,'GABACKI' ,'ADIUNKT' ,130 ,to_date('01-03-85','DD-MM-RR'), 1590.00, NULL,20);

INSERT INTO PRAC VALUES (170,'HABACKI' ,'ASYSTENT' ,130 ,to_date('01-10-92','DD-MM-RR'), 1439.70, 80.50,20);

INSERT INTO PRAC VALUES (190,'IBACKI' ,'ASYSTENT' ,140 ,to_date('01-09-93','DD-MM-RR'), 1371.00, NULL,20);

INSERT INTO PRAC VALUES (180,'JOTBACKA' ,'SEKRETARKA',100 ,to_date('20-02-85','DD-MM-RR'), 1410.20, NULL,10);

INSERT INTO PRAC VALUES (200,'KABACKI' ,'STAZYSTA' ,140 ,to_date('15-07-94','DD-MM-RR'), 1208.00, NULL,30);

INSERT INTO PRAC VALUES (210,'LABACKI' ,'STAZYSTA' ,130 ,to_date('15-10-93','DD-MM-RR'), 1250.00,170.60,30);

INSERT INTO PRAC VALUES (220,'MABACKI' ,'ASYSTENT' ,110 ,to_date('01-10-93','DD-MM-RR'), 1480.00, NULL,20);

INSERT INTO PRAC VALUES (230,'NABACKI' ,'ASYSTENT' ,120 ,to_date('01-09-92','DD-MM-RR'), 1480.00, 90.00,30);

13. Wyświetlić wszystkie rekordy z tablicy ZESP:

SELECT * FROM ZESP;

14. Wyświetlić rekordy z tablicy PRAC posortowane wg daty zatrudnienia

SELECT * FROM PRAC ORDER BY ZATRUDNIONY;/* sortowanie odwrotne desc;*/

15. Wyświetlić posortowane nazwiska, etaty i roczne dochody pracowników (opatrzone nagłówkiem "ROCZNY_ DOCHOD"):

Uwaga: Jeśli nagłówek kolumny zawiera w nazwie spację, to musi być ujęty w cudzysłów.

SELECT NAZWISKO, ETAT, (PLACA_POD + NVL(placa_dod,0))*12 || ' PLN' ROCZNY_DOCHOD

FROM PRAC ORDER BY NAZWISKO;

LABORATORIUM z BAZ DANYCH

ORACLE

4



Wyszukiwarka

Podobne podstrony:
RwB zadania Cw1 stud, Rachunkowość w banku, Rachunkowość bankowa, Rachunkowość w banku, Rachunkowość
Matlab cw1 2 zaoczni
Mat dla stud 2
Wyklad 1' stud
Metabolizm kkw tł stud
strukturalnaMinuchina stud
Tętnice szyjne sem dla stud II
ZO NST 14 ĆW1CZ 1, 2 STUD F F3
kosztkapitału4 stud
ćw1 Maszyna turinga
6 Mielizna stud nowy
CEMENTY stud
Audyt personalny 1a stud
KM W 25 lekkie konst met stud

więcej podobnych podstron