1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3
2 SBD, L.Banachowski Typy danych Number(p,s), Float, Real Number(p), Integer Char(n), Varchar2(n) Date Blob - duże obiekty binarne Clob – duże obiekty tekstowe
3 SBD, L.Banachowski Typy danych definiowane przez użytkownika Oprócz typów standardowych (wbudowanych) istnieje możliwość definiowania przez użytkowników własnych typów danych związanych z opcją obiektową.
4 SBD, L.Banachowski Przykładowy schemat z Oracle Związek Emp.Sal z wartościami w tabeli Salgrade : Zarobki Emp.Sal są zaliczane do grupy Salgrade.Grade takiej,że: Emp.Sal należy do przedziału: [ Salgrade.Losal, Salgrade.Hisal ]
5 SBD, L.Banachowski Tworzenie tabeli CREATE TABLE nazwa_tabeli( nazwa_kolumny typ_danych więzy_spójności,...);
6 SBD, L.Banachowski Więzy spójności NOT NULL – pseudo-wartość Null nie jest dozwolona w danej kolumnie, PRIMARY KEY – kolumna stanowi klucz główny, REFERENCES nazwa_tabeli – kolumna stanowi klucz obcy odwołujący się do klucza głównego podanej tabeli, UNIQUE – kolumna stanowi klucz jednoznaczny (wartości w kolumnie nie powtarzają się), CHECK – warunek jaki ma być spełniony dla wartości w wierszu. Opcjonalne słowo kluczowe CONSTRAINT wprowadza explicite nazwę dla więzów spójności.
7 SBD, L.Banachowski Instrukcje SQL DROP TABLE Emp ; ALTER TABLE Emp ADD (Pesel CHAR(11)); ALTER TABLE Emp MODIFY (Pesel VARCHAR2(11)); ALTER TABLE Emp DROP (Pesel); ALTER TABLE Emp ADD CONSTRAINT fk_Emp_dept FOREIGN KEY (Deptno) REFERENCES Dept;
8 SBD, L.Banachowski Instrukcje SQL CREATE INDEX Ind_Emp_Num ON Emp(Empno); DROP INDEX Ind_Emp_Num;
9 SBD, L.Banachowski Instrukcje SQL INSERT INTO nazwa_tabeli VALUES (wartość,...); INSERT INTO nazwa_tabeli(nazwa_kolumny,...) VALUES (wartość,...);
10 SBD, L.Banachowski Instrukcje SQL UPDATE Emp SET Sal = Sal * 1.1 WHERE Job = ' SALESMAN ' ; DELETE FROM Emp WHERE Job IS NULL;
11 SBD, L.Banachowski Zatwierdzanie i wycofywanie zmian w bazie danych Instrukcje INSERT, DELETE i UPDATE nie dokonują same trwałych zmian w bazie danych! Zatwierdzenie: COMMIT; Wycofanie: ROLLBACK;
12 SBD, L.Banachowski Zapytania SELECT Empno, Ename, Job, Sal FROM Emp WHERE Sal>=1100 AND Job='CLERK'; EMPNO ENAME JOB SAL ADAMS CLERK MILLER CLERK 1300
13 SBD, L.Banachowski Zapytania SELECT Empno, Ename, Trunc(Months_Between(Sysdate,Hiredate)/12) Zatrudnienie FROM Emp ORDER BY Zatrudnienie DESC; EMPNO ENAME ZATRUDNIENIE SMITH ALLEN WARD BLAKE CLARK JONES MARTIN MILLER FORD KING TURNER JAMES SCOTT ADAMS 17
14 SBD, L.Banachowski Semantyka prostego zapytania 1.Weź tabelę podaną w klauzuli FROM. 2.Jeśli występuje klauzula WHERE, do każdego wiersza danej tabeli zastosuj warunek WHERE. Pozostaw wiersze dające wartość True (usuwając wiersze dające False lub Null). 3.Dla każdego pozostającego wiersza oblicz wartości wyrażeń na liście SELECT. 4.Jeśli po SELECT występuje DISTINCT, usuń duplikaty wśród wynikowych wierszy. 5.Jeśli występuje klauzula ORDER BY, wykonaj sortowanie wynikowych wierszy zgodnie ze specyfikacją.
15 SBD, L.Banachowski Operatory 1. +, -, *, /, =, <>,, >=, NOT, AND, OR 2.Operator konkatenacji (łączenia) 'Osoba '|| Ename 3. Kolor IN ('Czarny', 'Biały', 'Czerwony') 4. Sal BETWEEN 1000 AND Ename LIKE 'Kowal%' 6. Job IS NULL (nie Job=NULL!!!)
16 SBD, L.Banachowski Funkcje wbudowane Funkcja interpretuj ąc a Null: NVL(Sal,0) i NVL(Stopie ń, ' Brak ') umożliwiają zinterpretowanie wartości Null jako odpowiednio 0 bądź 'Brak'. Funkcje konwersji: TO_CHAR, TO_DATE, TO_NUMBER TO_DATE( ' ', ' mm-dd-yy ' ) Funkcje bez argumentów: Sysdate, User