20 października Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład II

Podobne dokumenty
1 DML - modyfikacja 1. 2 DDL - definicja struktur Definiowanie tabel Więzy integralności Modyfikacja definicji...

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

Bazy danych - Materiały do laboratoriów VIII

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Paweł Rajba

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Oracle PL/SQL. Paweł Rajba.

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Wykład 8. SQL praca z tabelami 5

Autor: Joanna Karwowska

Widok Connections po utworzeniu połączenia. Obszar roboczy

Zaawansowane bazy danych i hurtownie danych semestr I

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych 10. SQL Widoki

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Wykład 4. SQL praca z tabelami 1

Aspekty aktywne baz danych

PODSTAWY BAZ DANYCH Wykład Partycjonowanie tabel i indeksów

PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Wykład 5. SQL praca z tabelami 2

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Bazy danych 6. Klucze obce. P. F. Góra

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Oracle11g: Wprowadzenie do SQL

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

PODSTAWY BAZ DANYCH 13. PL/SQL

Uprawnienia, role, synonimy

Język SQL, zajęcia nr 1

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych Ćwiczenia projektowe

ACESS- zadania z wykorzystaniem poleceń SQL

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Język SQL. Rozdział 8. Język manipulowania danymi DML

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Relacyjne bazy danych. Podstawy SQL

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Technologie baz danych WYKŁAD 7: Wyjątki

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Typy Oracle atrybutów relacji Typ NUMBER (1)

Typy Oracle atrybutów relacji Typ NUMBER (1)

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Język zapytań SQL- język relacyjnych baz danych

Zarządzanie obiektami bazy danych Oracle11g

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Relacyjne bazy danych. Podstawy SQL

SQL (ang. Structured Query Language)

Projektowanie systemów baz danych

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

1. Wyzwalacze BD (ang. triggers)

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Oracle PL/SQL. Paweł Rajba.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Wykład 05 Bazy danych

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

P o d s t a w y j ę z y k a S Q L

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

SQL język zapytań (query language) cz.1

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

SQL w praktyce. Miłej i owocnej nauki!!!

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Zarzadzanie transakcjami. Transakcje

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Transkrypt:

- - Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 20 października 2016-1/59

Plan wykładu - 1 2 3 4 5-2/59

Polecenie UPDATE I - Polecenie UPDATE służy do aktualizacji zawartości wierszy tabel. W klauzuli SET wymieniamy atrybuty, których wartości będą zmieniane. Opcjonalna klauzula WHERE wyznacza kryterium, jakie muszą spełnić wiersze tabeli aby podlegać zmianie. Brak ograniczającego warunku oznacza, że wszystkie wiersze będą zmienione. Składnia: UPDATE {tabela perspektywa} SET {{atrybut = wartosc DEFAULT NULL (SELECT...)}, {atrybut = wartosc DEFAULT NULL (SELECT...)},...} [WHERE predykat]; - 3/59

Polecenie UPDATE II - Przykłady: UPDATE pracownicy SET placa = placa * 1.1; UPDATE pracownicy SET placa = placa * 1.1 WHERE nr_akt IN (SELECT kierownik FROM pracownicy); - 4/59

Polecenie INSERT I - Polecenie INSERT pozwala wstawiać do tabeli nowe wiersze. Opcjonalnie można określić listę uzupełnianych atrybutów, w przeciwnym razie należy wypełnić wszystkie. Klauzula VALUES określa wartości jakie będą przypisane atrybutom. Wiersz można wypełnić wartościami zwróconymi przez podzapytanie. Składnia: INSERT INTO {tabela perspektywa (SELECT...)} [(atrybut1 [,...] )] {DEFAULT VALUES VALUES (wartosc1 [,...]) SELECT... }; - 5/59

- 6/59 Polecenie INSERT II - Przykłady: INSERT INTO dzialy VALUES (10, 'ZARZAD', 'CZESTOCHOWA'); INSERT INTO pracownicy VALUES (9121, 'KUKULSKI', 'DYREKTOR', 8901, To_date('1991/04/02','yyyy/mm/dd'), NULL, 5000, 1500, NULL, 30); INSERT INTO pracownicy (nr_akt, nazwisko) VALUES (9192, 'KOWALSKI'); INSERT INTO prac_archiw SELECT * FROM pracownicy WHERE nr_akt = 9192;

Tworzenie skryptu - INSERT INTO dzialy VALUES (&id_dzialu, &nazwa, &siedziba); - 7/59

Podzapytanie jako cel I - Pozwala uniknąć tworzenia perspektyw tylko w celu wstawiania : INSERT INTO (SELECT l.id_lok, l.miasto, l.id_kraju FROM lokalizacje l JOIN kraje k ON (l.id_kraju = k.id_kraju) JOIN regiony USING (id_regionu) WHERE nazwa_regionu = 'Europa') VALUES (2500, 'Częstochowa', 'PL'); - 8/59

- 9/59 Podzapytanie jako cel II - INSERT INTO (SELECT id_lok, miasto, id_kraju FROM lokalizacje WHERE id_kraju IN (SELECT id_kraju FROM kraje NATURAL JOIN regiony WHERE nazwa_regionu = 'Europa') WITH CHECK OPTION) VALUES (2500, 'Częstochowa', 'PL');

INSERT wielowierszowy - Użyj INSERT... SELECT celem wstawienia wielu wierszy do wielu tabel wielowierszowy (multitablicowy) INSERT jest często wykorzystywany w hurtowniach polecenie jest wydajniejsze od pojedyńczych wstawień i wstawień z wykorzystaniem składni IF... THEN typy: bezwarunkowy INSERT warunkowy INSERT ALL warunkowy INSERT FIRST obrotowy INSERT - 10/59

INSERT wielowierszowy - składnia - Składnia: INSERT [conditional_insert_clause] [insert_into_clause values_clause] (SELECT...) Składnia conditional_insert_clause: [ALL FIRST] [WHEN condition THEN] [insert_into_clause values_clause] [ELSE] [insert_into_clause values_clause] - 11/59

bezwarunkowy INSERT - INSERT ALL INTO historia_plac VALUES (prac_id, datazatr, placapod) INTO historia_kier VALUES (prac_id, kier_id, placapod) SELECT nr_akt prac_id, data_zatr datazatr, placa placa_pod, kierownik kier_id FROM pracownicy WHERE nr_akt > 200; - 12/59

warunkowy INSERT ALL - INSERT ALL WHEN datazatr < To_date('01-01-1995','DD-MM-YYYY') THEN INTO historia_prac VALUES (prac_id, datazatr, placapod) WHEN prow IS NOT NULL THEN INTO historia_plac VALUES (prac_id, placapod, prow) SELECT nr_akt prac_id, data_zatr datazatr, placa placa_pod, prowizja prow FROM pracownicy; - 13/59

warunkowy INSERT FIRST - INSERT FIRST WHEN placa < 1900 THEN INTO niskieplace VALUES (nr_akt, nazwisko, placa) WHEN placa BETWEEN 1900 AND 4000 THEN INTO srednieplace VALUES (nr_akt, nazwisko, placa) ELSE INTO wysokieplace VALUES (nr_akt, nazwisko, placa) SELECT nr_akt, nazwisko, placa FROM pracownicy; - 14/59

obrotowy INSERT - Każda krotka relacji wejściowej jest transformowana ( obracana ) tak by utworzyć wiele wierszy wyjściowych - szczególny przykład operacji bezwarunkowej. Instrukcja przydatna przy transformacji obiektowo-relacyjnej. INSERT ALL INTO place VALUES (nr_akt, id_tyg, pl_pon) INTO place VALUES (nr_akt, id_tyg, pl_wt) INTO place VALUES (nr_akt, id_tyg, pl_sr) INTO place VALUES (nr_akt, id_tyg, pl_czw) INTO place VALUES (nr_akt, id_tyg, pl_pt) INTO place VALUES (nr_akt, id_tyg, pl_nad) SELECT nr_akt, id_tyg, pl_pon, pl_wt, pl_sr, pl_czw, pl_pt, pl_nad FROM place_tygodniowe; - 15/59

Polecenie DELETE - Polecenie DELETE usuwa wiersze ze wskazanej tabeli, zawiera opcjonalną klauzule WHERE ograniczającą liczbę usuniętych wierszy do tych, które spełniają zadany warunek. Składnia: DELETE FROM {tabela perspektywa} [WHERE warunek]; Przykłady: DELETE FROM stanowiska; DELETE FROM pracownicy WHERE nr_akt = 9192; - 16/59

Polecenie MERGE - Polecenie MERGE polecenie umożliwiające wykonanie warunkowej modyfikacji, wstawienia lub kasowania. Pozwala uniknąć oddzielnych modyfikacji, podwyższa wydajność, ułatwia złożone modyfikacje. Składnia: MERGE INTO table_name table_alias USING (table view subquery) alias ON (join condition) WHEN MATCHED THEN UPDATE SET atr1 = val1 [,atr2 = val2 [,...]] DELETE... WHEN NOT MATCHED THEN INSERT...; - 17/59

- 18/59 SQL DDL - Dla baz narzędziem fizycznej realizacji będzie część SQL a nazywana DDL (ang. Data Definition Language) zawierająca niezbędne polecenia do tworzenia (CREATE), usuwania (DROP) i modyfikacji (ALTER). Nigdy nie należy mylić poleceń DML i DDL: DML INSERT UPDATE DELETE DDL CREATE ALTER DROP

CREATE TABLE - Składnia polecenia CREATE TABLE: CREATE [GLOBAL TEMPORARY] TABLE [schemat.]table_name { relational_table object_table XMLType_table }; - 19/59

Tworzenie tabeli relacyjnej - CREATE [GLOBAL TEMPORARY] TABLE [schemat.]table_name [ (relational_properties) ] [ ON COMMIT { DELETE PRESERVE } ROWS ] [ physical_properties ] [ table_properties ]; - 20/59

- 21/59 CREATE TABLE - własności relacyjne - Definicja kolumn - własności tabeli: column datatype [ SORT ] [ DEFAULT expr ] [ ENCRYPT encryption_spec ] [ ( { inline_constraint }... ) inline_ref_constraint ] Np.: CREATE TABLE mieszkancy ( PESEL NUMBER(11), nazwisko VARCHAR2(30), imiona VARCHAR2(30), data_zameldowania DATE DEFAULT CURRENT_DATE );

CREATE TABLE - tabela obiektowa - OF [ schema. ] object_type [ object_table_substitution ] [ (object_properties) ] [ ON COMMIT { DELETE PRESERVE } ROWS ] [ OID_clause ] [ OID_index_clause ] [ physical_properties ] [ table_properties ] Przykład: CREATE TABLE departments_obj_t OF department_type; Tabela obiektowa departments obj t przechowuje typu department type. - 22/59

CREATE TABLE - tabela obiektowa - Definicja typu i odpowiadającej mu tabeli obiektowej, w której identyfikator obiektu staje się kluczem głównym: CREATE TYPE employees_typ AS OBJECT (e_no NUMBER, e_address CHAR(30)); / CREATE TABLE employees_obj_t OF employees_typ (e_no PRIMARY KEY) OBJECT IDENTIFIER IS PRIMARY KEY; - 23/59

CREATE TABLE - XMLType - OF XMLTYPE [ (oject_properties) ] [ XMLTYPE XMLType_storage ] [ XMLSchema_spec ] [ XMLType_virtual_columns ] [ ON COMMIT { DELETE PRESERVE } ROWS ] [ OID_clause ] [ OID_index_clause ] [ physical_properties ] [ table_properties ] Przykład: CREATE TABLE xwarehouses OF XMLTYPE XMLSCHEMA "http://www.example.com/xwarehouses.xsd" ELEMENT "Warehouse"; - 24/59

CREATE TABLE - własności fizyczne - { segment_attributes_clause [ table_compression ] ORGANIZATION { HEAP [ segment_attributes_clause ] [ table_compression ] INDEX [ segment_attributes_clause ] index_org_table_clause EXTERNAL external_table_clause } CLUSTER cluster (column [, column ]...) } - 25/59

- 26/59 CREATE TABLE - przykłady - CREATE TABLE demo ( id NUMBER(10) ) TABLESPACE przyklad STORAGE (INITIAL 6144); CREATE TABLE dzialy ( id NUMBER(2) PRIMARY KEY, nazwa VARCHAR(50), lokalizacja VARCHAR(20) ) ORGANIZATION INDEX PCTTHRESHOLD 30 OVERFLOW TABLESPACE nadmiar;

CREATE TABLE - własności tabeli - Własności tabeli: [ column_properties ] [ table_partitioning_clauses ] [ CACHE NOCACHE ] [ parallel_clause ] [ ROWDEPENDENCIES NOROWDEPENDENCIES ] [ MONITORING NOMONITORING] [ enable_disable_clause ]... [ row_movement_clause ] [ flashback_archive_clause ] [ AS subquery ] - 27/59

- 28/59 CREATE TABLE - przykłady - CREATE TABLE klienci ( id NUMBER(6), nazwisko VARCHAR2(30), imiona VARCHAR2(30), adres VARCHAR2(200), nls VARCHAR2(30), email VARCHAR2(30) ) PARTITION BY LIST (nls) ( PARTITION azja VALUES ('CHINY', 'TAJLANDIA'), PARTITION europa VALUES ('NIEMCY', 'WLOCHY'), PARTITION zachod VALUES ('USA'), PARTITION wschod VALUES ('ROSJA'), PARTITION reszta VALUES (DEFAULT) );

- 29/59 CREATE TABLE - przykłady - CREATE TABLE klienci ( id NUMBER(6), naziwsko VARCHAR2(30), imiona VARCHAR2(30), adres VARCHAR2(200), rok_zal NUMBER(4), email VARCHAR2(30) ) PARTITION BY RANGE (rok_zal) ( PARTITION rok_2000 VALUES LESS THAN (2000), PARTITION rok_2004 VALUES LESS THAN (2004), PARTITION rok_2008 VALUES LESS THAN (2008), PARTITION rok_2012 VALUES LESS THAN (2012) ); CREATE TABLE pracownicy_archiwalni AS SELECT * FROM pracownicy WHERE data_zwol IS NOT NULL;

DROP TABLE - Usuwanie tabeli: DROP TABLE [schemat.]nazwa_tabeli [CASCADE CONSTRAINTS][PURGE]; usunięcie definicji tabeli usunięcie z tabeli - wszystkich krotek usunięcie wyzwalaczy i indeksów związanych z tabelą zwolnienie fizycznego segmentu i jego rozszerzeń ustawienie atrybutu niepoprawności dla powiązanych perspektyw, synonimów, procedur, itp. - 30/59

Polecenie TRUNCATE - Polecenie TRUNCATE usuwa wszystkie krotki tabeli pozostawiając ę nienaruszoną. Składnia: TRUNCATE TABLE nazwa_tabeli; - 31/59

Definiowanie ograniczeń - Sposoby definicji ograniczeń: ograniczenia kolumny - definiowane inline lub out of line (za wyjatkiem NOT NULL) ograniczenia tabeli - definiowane out of line nazwane przez użytkownika nazwane przez system ograniczenia tworzone w trakcie tworzenia y tabeli ( inline lub out of line ) ograniczenia tworzone po utworzeniu tabeli poprzez poprawianie jej y (wyłącznie out of line ) - 32/59

Typy ograniczeń - Typy ograniczeń: NOT NULL - wartość obowiązkowa CHECK (warunek_logiczny) - wartość spełniająca narzucony warunek UNIQUE - wartość niepowtarzalna, jednoznaczna PRIMARY KEY - klucz główny FOREIGN KEY, REFERENCES - klucz obcy mechanizm integralności oparty na wyzwalaczach - 33/59

CONSTRAINT inline - Definicja ograniczeń inline : CREATE TABLE nazwa_tabeli ( kol1 typ[(rozmiar)] [DEFAULT wyrazenie1][sort] [[CONSTRAINT nazwa_ogr_kolumny] { [NOT] NULL UNIQUE PRIMARY KEY REFERENCES tabela(kol1 [, kol2]...) [ON DELETE { CASCADE SET NULL }] CHECK (warunek_logiczny) } [DISABLE ENABLE] [USING INDEX { [schemat.]indeks (create_index_statement) wlasnosci_indeksu } ]],... ); - 34/59

CONSTRAINT out of line - Definicja ograniczeń out of line : CREATE TABLE nazwa_tabeli (..., [[CONSTRAINT nazwa_ogr_tabeli] { UNIQUE ( kol1 [, kol2]... ) PRIMARY KEY ( kol1 [, kol2]...) FOREIGN KEY ( kol1 [, kol2]...) REFERENCES tabela(kol1 [,kol2]...) [ON DELETE { CASCADE SET NULL }] CHECK (warunek_logiczny) } [DISABLE ENABLE] [USING INDEX { [schemat.]indeks (create_index_statement) wlasnosci_indeksu }],...); - 35/59

- 36/59 NOT NULL - NOT NULL - dla kolumn o wartościach obowiązkowych. CREATE TABLE osoby( nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE CONSTRAINT data_nn NOT NULL,... );

- 37/59 CHECK - CHECK - wartości kolumny dla każdego wiersza spełnią zadany warunek (warunek nie może zawierać podzapytań, ani funkcji zmiennych w czasie). CREATE TABLE osoby( nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE CONSTRAINT data_nn NOT NULL, plec CHAR(1) CHECK (plec IN ('K','M')), wiek NUMBER(3),..., CONSTRAINT wiek_ch CHECK (wiek BETWEEN 0 AND 120) );

- 38/59 UNIQUE - UNIQUE - wartości w kolumnie będą niepowtarzalne. CREATE TABLE osoby( pesel NUMBER(11) CONSTRAINT pesel_u UNIQUE, nip NUMBER(10), nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE CONSTRAINT data_nn NOT NULL,..., UNIQUE(nip) );

PRIMARY KEY I - PRIMARY KEY - więzy klucza głównego oznaczają, że kolumna/kolumny przyjmą wartości jednoznaczne i niepuste. Dla klucza głównego tworzony jest automatycznie indeks. CREATE TABLE mieszkancy( pesel NUMBER(11) PRIMARY KEY nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20) ); - 39/59

- 40/59 PRIMARY KEY II - CREATE TABLE mieszkancy( pesel NUMBER(11) CONSTRAINT mieszy_pk PRIMARY KEY, nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20) ); CREATE TABLE mieszkancy( pesel NUMBER(11), nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20), PRIMARY KEY (pesel) ); CREATE TABLE mieszkancy( pesel NUMBER(11), nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20), CONSTRAINT mieszy_pk PRIMARY KEY (pesel) );

- 41/59 FOREIGN KEY I - FOREIGN KEY - więzy klucza obcego - wartości z kolumn klucza istnieją we wcześniej zdefiniowanym kluczu kandydującym innej lub tej samej tabeli (może przyjąć wartość pustą). CREATE TABLE rachunki( nr_rachunku NUMBER(10) PRIMARY KEY, kwota NUMBER(6,2) NOT NULL, termin DATE, odsetki NUMBER(6,2), id_mieszkania NUMBER(10) REFERENCES mieszkania(id_mieszkania) );

FOREIGN KEY II - CREATE TABLE rachunki(..., id_mieszkania NUMBER(10) CONSTRAINT rach_fk REFERENCES mieszkania(id_mieszkania) ); CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) ); CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), CONSTRAINT rach_fk FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) ); - 42/59

FOREIGN KEY III - Opcje ON DELETE SET NULL i ON DELETE CASCADE CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), CONSTRAINT rach_fk FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) ON DELETE SET NULL ); CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), CONSTRAINT rach_fk FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) ON DELETE CASCADE ); - 43/59

ALTER TABLE I - ALTER TABLE - polecenie umożliwiające wprowadzenie zmian do istniejącej y logicznej i cech fizycznych tabeli. Niektóre możliwości ALTER TABLE: ADD - dodanie kolumn lub ograniczeń MODIFY - istniejących kolumn lub ograniczeń DROP - usunięcie kolumn lub ograniczeń RENAME - zmiana nazwy tabeli, kolumny lub ograniczeń ENABLE - włączenie ograniczenia DISABLE - wyłączenie ograniczenia i wiele innych... - 44/59

ALTER TABLE - zmiany kolumn I - Dodanie kolumn: ALTER TABLE nazwa_tabeli ADD (kol1 typ [DEFAULT wyrazenie] [wiezy_kol1]) [, (kol2 typ [DEFAULT wyrazenie] [wiezy_kol2])]... ; ALTER TABLE rachunki ADD (id_mieszkanca NUMBER(10) REFERENCES mieszkancy(id_mieszkanca)); Zmiana kolumn: ALTER TABLE nazwa_tabeli MODIFY (kol1 [typ] [DEFAULT wyrazenie] [wiezy_kol1]) [, (kol2 [typ] [DEFAULT wyrazenie] [wiezy_kol2])]... ; ALTER TABLE rachunki MODIFY (nr_rachunku NUMBER(12)); - 45/59

ALTER TABLE - zmiany kolumn II - Usunięcie kolumn: ALTER TABLE nazwa_tabeli DROP COLUMN kol1 ( kol1 [, kol2]... ) ; ALTER TABLE rachunki DROP COLUMN id_mieszkanca; Zmiana nazwy: ALTER TABLE nazwa_tabeli RENAME COLUMN stara_nazwa TO nowa_nazwa; ALTER TABLE rachunki RENAME COLUMN id_rachunku TO nr_rachunku; - 46/59

- 47/59 ALTER TABLE - ograniczenia I - Modyfikacja ograniczeń:: ALTER TABLE nazwa_tabeli { ADD CONSTRAINT nazwa_ograniczenia PRIMARY KEY UNIQUE (kol1) [, UNIQUE (kol2) ] MODIFY CONSTRAINT nazwa_ograniczenia PRIMARY KEY UNIQUE (kol1) [, UNIQUE (kol2) ]... RENAME CONSTRAINT stara_nazwa TO nowa_nazwa DROP PRIMARY KEY UNIQUE ( kol1 [, kol2]... )... [CASCADE] [ KEEP DROP INDEX] CONSTRAINT nazwa_ograniczenia [CASCADE]; ENABLE DISABLE UNIQUE ( kol1 [, kol2]... ) PRIMARY KEY CONSTRAINT nazwa_ograniczenia Np.: ALTER TABLE mieszkancy ADD CONSTRAINT nr_dok_u UNIQUE (nr_dokumentu);

Indeksy - Indeks może być tworzony jawnie lub niejawnie. Jawnie jest realizowany przez użytkownika poleceniem CREATE INDEX: CREATE [UNIQUE BITMAP] INDEX nazwa_indeksu ON nazwa_tabeli (kol1 [ASC DESC] [, kol2 [ASC DESC]]); niejawnie może być automatycznie zakładany przez system, np. dla klucza głównego. Modyfikacja indeksu: ALTER INDEX stara_nazwa TO nowa_nazwa; ALTER INDEX nazwa REBUILD; Usuwanie indeksów: DROP INDEX nazwa; - 48/59

Klastry I - Tworzenie kontenera na tabele odbywa się za pomocą polecenia CREATE CLUSTER: CREATE CLUSTER [ schema. ] cluster (column datatype [ SORT ] [, column datatype [ SORT ] ]... ) [ { physical_attributes_clause SIZE size_clause TABLESPACE tablespace { INDEX [ SINGLE TABLE ] HASHKEYS integer [ HASH IS expr ] } }... ] [ parallel_clause ] [ NOROWDEPENDENCIES ROWDEPENDENCIES ] [ CACHE NOCACHE ] ; - 49/59

Klastry II - Np.: CREATE CLUSTER prac_dzialu_cl (nazwa VARCHAR2(20), id_dzialu NUMBER(2), nazwisko VARCHAR2(30)) SIZE 500 TABLESPACE users; - 50/59

I - widoki, wirtualne tabele - reprezentujące wybraną zawartość tabel lub innych perspektyw nie składowane fizycznie na dysku, generowane przy każdym wywołaniu nazwy wyrażenia nie będące kolumnami, z klauzuli SELECT podzapytania, muszą być zaopatrzone w aliasy lub perspektywa musi przewidzieć nowe nazewnictwo wszystkich kolumn wyniku podzapytania - 51/59

II - istnieje możliwość modyfikacji za pośrednictwem perspektyw pod warunkiem, że polecenie będzie dla systemu jednoznaczne (uniemożliwiają to grupowania, funkcje, podzapytania, porządkowanie, DISTINCT, wyrażenia złożone, brak klucza głównego i atrybutów obowiązkowych, brak uprawnień, ograniczenie WITH READ ONLY) opcja WITH CHECK OPTION - umożliwia sprawdzenie, czy modyfikowane za pośrednictwem perspektywy dane spełniają warunki logiczne zawarte wewnątrz podzapytania perspektywy - 52/59

CREATE VIEW - tworzy się za pomocą polecenia CREATE VIEW: CREATE [OR REPLACE] [[NO] FORCE] VIEW [schema.] view [ ( { alias [ inline_constraint... ] out_of_line_constraint } [, { alias [ inline_constraint...] out_of_line_constraint } ] ) object_view_clause XMLType_view_clause ] AS subquery [WITH CHECK OPTION WITH READ ONLY]; - 53/59

CREATE VIEW - przykład - CREATE OR REPLACE VIEW szefowie AS SELECT * FROM pracownicy WHERE nr_akt IN (SELECT kierownik FROM pracownicy) CREATE VIEW studentki AS SELECT * FROM studenci WHERE imiona LIKE '%A' WITH CHECK OPTION; - 54/59

Sekwencje - Sekwencje tworzy się za pomocą polecenia CREATE SEQUENCE: CREATE SEQUENCE nazwa [START WITH st] [INCREMENT BY i] [MAXVALUE max] [MINVALUE min] [CYCLE NOCYCLE] [CACHE c NOCACHE]; CREATE SEQUENCE nr_akt_seq START WITH 9200 INCREMENT BY 10; st min i st max i 0, może przyjmować wartości ujemne, i < (max min) c 2, c < (Ceil(max min)/abs(i)), domyślnie c = 20 nazwa.currval - określa aktualną wartość w sekwencji nazwa.nextval - określa następną wartość w sekwencji - 55/59

Synonimy - Synonimy to alternatywna nazwa dla tabel, perspektyw, sekwencji, operatorów, procedur, funkcji, pakietów, materializowanych perspektyw, obiektów Java, typów użytkownika, lub innych synonimów. Synonim staje się niepoprawny jeżeli obiekt na który wskazuje został zmieniony lub zniszczony. Synonimy tworzy się za pomocą polecenia CREATE SYNONYM: CREATE [PUBLIC] SYNONYM nazwa FOR [schemat.]nazwa_ob; CREATE PUBLIC SYNONYM pracownicy FOR scott.emp; - 56/59

Słownik - Słownik zbiór tabel i perspektyw systemowych przechowujących informacje (metadane) na temat y bazy, zawartych w niej obiektów, kontach użytkowników, uprawnieniach, itp.. Użytkownicy mają jedynie możliwość oglądania zawartości perspektyw w czytelnej formie. Przedrostki perspektyw : USER_ - posiadane przez użytkownika ALL_ -, do których użytkownik ma dostęp DBA_ - całej bazy (informacje wykorzystywane w administracji) SELECT table_name FROM user_tables; - 57/59

Pespektywy - Wybrane perspektywy dla tabel: %_TABLES, %_CONSTRAINTS, %_CONS_COLUMNS indeksów: %_INDEXES, %_IND_COLUMNS klastrów: %_CLUSTERS, %_CLU_COLUMNS perspektyw: %_VIEWS, %_UPDATABLE_COLUMNS sekwencji: %_SEQUENCES synonimów: %_SYNONYMS innych obiektów: %_CATALOG, %_DEPENDENCIES, %_ERRORS, %_LOCKS, %_OBJECTS, %_ROLES, %_SOURCE, %_TABLESPACES, %_TRIGGERS, %_TYPES,... - 58/59

- W wykładzie wykorzystano materiały: http://download.oracle.com/docs/cd/b10501_01/ nav/sql_keywords.htm?remark=homepage M. Lentner, Oracle 9i Kompletny podręcznik użytkownika, PJWSTK - W-wa, 2003 http://wazniak.mimuw.edu.pl/index.php?title= Bazy_ Garcia-Molina, Ullman, Widom: Implementacja systemów baz, WNT 2003-59/59