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

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

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

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

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

Paweł Rajba

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

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?

Autor: Joanna Karwowska

Wykład 8. SQL praca z tabelami 5

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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ń

Zaawansowane bazy danych i hurtownie danych semestr I

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych 10. SQL Widoki

Wykład 4. SQL praca z tabelami 1

Aspekty aktywne baz danych

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

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

Oracle11g: Wprowadzenie do SQL

Wykład 5. SQL praca z tabelami 2

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

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

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

Systemy GIS Tworzenie zapytań w bazach danych

Uprawnienia, role, synonimy

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

Język SQL, zajęcia nr 1

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Bazy danych Ćwiczenia projektowe

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

ACESS- zadania z wykorzystaniem poleceń SQL

Bazy danych. Dr inż. Paweł Kasprowski

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

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

Relacyjne bazy danych. Podstawy SQL

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

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

Typy Oracle atrybutów relacji Typ NUMBER (1)

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

Typy Oracle atrybutów relacji Typ NUMBER (1)

SQL (ang. Structured Query Language)

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

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

Zarządzanie obiektami bazy danych Oracle11g

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

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

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Technologie baz danych WYKŁAD 7: Wyjątki

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

Relacyjne bazy danych. Podstawy SQL

1. Wyzwalacze BD (ang. triggers)

Projektowanie systemów baz danych

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.

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

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

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

Zarzadzanie transakcjami. Transakcje

STANDARDY JĘZYKA SQL CECHY JĘZYKA SQL WADY I ZALETY

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

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

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

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

Wykład 05 Bazy danych

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

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

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

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

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

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

Obiekty bazy danych DB2

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

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

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

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

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

Transkrypt:

Plan wykładu Spis treści 1 DML - modyfikacja 1 2 DDL - definicja struktur 5 2.1 Definiowanie tabel............................... 5 2.2 Więzy integralności............................... 9 2.3 Modyfikacja definicji.............................. 12 3 Dodatkowe obiekty 14 4 Perspektywy słownika danych 16 5 Źródła 17 1 DML - modyfikacja Polecenie UPDATE 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]; Przykłady: UPDATE pracownicy SET placa = placa * 1.1; UPDATE pracownicy SET placa = placa * 1.1 WHERE nr_akt IN (SELECT kierownik FROM pracownicy Polecenie INSERT 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: 1

INSERT INTO {tabela perspektywa (SELECT...)} [(atrybut1 [,...] )] {DEFAULT VALUES VALUES (wartosc1 [,...]) SELECT... }; 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 Podzapytanie jako cel Pozwala uniknąć tworzenia perspektyw tylko w celu wstawiania danych: 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 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 2

INSERT wielowierszowy Użyj INSERT... SELECT celem wstawienia wielu wierszy do wielu tabel wielowierszowy (multitablicowy) INSERT jest często wykorzystywany w hurtowniach danych 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 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] 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; 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; 3

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; 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; 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; Polecenie MERGE Polecenie MERGE polecenie umożliwiające wykonanie warunkowej modyfikacji, wstawienia lub kasowania danych. Pozwala uniknąć oddzielnych modyfikacji, podwyższa wydajność, ułatwia złożone modyfikacje. Składnia: 4

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...; 2 DDL - definicja struktur SQL DDL Dla relacyjnych baz danych 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) struktur danych. Nigdy nie należy mylić poleceń DML i DDL: DML INSERT UPDATE DELETE DDL CREATE ALTER DROP 2.1 Definiowanie tabel CREATE TABLE Składnia polecenia CREATE TABLE: CREATE [GLOBAL TEMPORARY] TABLE [schemat.]table_name { relational_table object_table XMLType_table }; Tworzenie tabeli relacyjnej CREATE [GLOBAL TEMPORARY] TABLE [schemat.]table_name [ (relational_properties) ] [ ON COMMIT { DELETE PRESERVE } ROWS ] [ physical_properties ] [ table_properties ]; CREATE TABLE - własności relacyjne column datatype [ SORT ] [ DEFAULT expr ] 5

[ 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 obiekty typu department type. 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; 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 ] 6

Przykład: CREATE TABLE xwarehouses OF XMLTYPE XMLSCHEMA "http://www.example.com/xwarehouses.xsd" ELEMENT "Warehouse"; 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 ]...) } CREATE TABLE - przykłady CREATE TABLE demo ( id NUMBER(10) ) TABLESPACE example STORAGE (INITIAL 6144 CREATE TABLE dzialy ( d_id NUMBER(2) PRIMARY KEY, nazwa VARCHAR(50), miasto VARCHAR(20) ) ORGANIZATION INDEX PCTHRESHOLD 30 OVERFLOW TABLESPACE redundance; CREATE TABLE - własności tabeli [ column_properties ] [ table_partitioning_clauses ] [ CACHE NOCACHE ] [ parallel_clause ] [ ROWDEPENDENCIES NOROWDEPENDENCIES ] [ enable_disable_clause ]... [ row_movement_clause ] [ flashback_archive_clause ] [ AS subquery ] CREATE TABLE - przykłady CREATE TABLE klienci ( id NUMBER(6), nazwisko VARCHAR2(30), 7

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) 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 danych 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. Polecenie TRUNCATE Polecenie TRUNCATE usuwa wszystkie krotki tabeli pozostawiając strukturę nienaruszoną. Składnia: TRUNCATE TABLE nazwa_tabeli; 8

2.2 Więzy integralności 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 struktury tabeli ( inline lub out of line ) ograniczenia tworzone po tworzeniu tabeli poprzez poprawianie jej struktury (wyłącznie out of line ) 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 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 } ]],... 9

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 }],... 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,... 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) 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) 10

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) lub: 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) 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ą). 11

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) lub: 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) 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 2.3 Modyfikacja definicji ALTER TABLE I ALTER TABLE - polecenie umożliwiające wprowadzenie zmian do istniejącej struktury logicznej i cech fizycznych tabeli. Niektóre możliwości ALTER TABLE: ADD - dodanie kolumn lub ograniczeń 12

MODIFY - modyfikacja 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... 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) 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; 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 13

3 Dodatkowe obiekty 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; Klastry Tworzenie kontenera na kolumny tabel 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 ] ; Np.: CREATE CLUSTER prac_dzialu_cl (nazwa VARCHAR2(20), id_dzialu NUMBER(2), nazwisko VARCHAR2(30)) SIZE 500 TABLESPACE users; Perspektywy 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 istnieje możliwość modyfikacji danych za pośrednictwem perspektyw pod warunkiem, że polecenie będzie dla systemu jednoznaczne (uniemożliwiają to grupowania, funkcje, złączenia, podzapytania, porządkowanie, DISTINCT, wyrażenia złożone, brak klucza głównego i atrybutów obowiązkowych, brak uprawnień, ograniczenie WITH READ ONLY) 14

opcja WITH CHECK OPTION - umożliwia sprawdzenie, czy modyfikowane za pośrednictwem perspektywy dane spełniają warunki logiczne zawarte wewnątrz podzapytania perspektywy 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]; CREATE VIEW 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; 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 15

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; 4 Perspektywy słownika danych Słownik danych Słownik danych zbiór tabel i perspektyw systemowych przechowujących informacje (metadane) na temat struktury bazy danych, zawartych w niej obiektów, kontach użytkowników, uprawnieniach, itp.. Użytkownicy mają jedynie możliwość oglądania zawartości perspektyw słownika danych w czytelnej formie. Przedrostki perspektyw słownika danych: USER_ - obiekty posiadane przez użytkownika ALL_ - obiekty, do których użytkownik ma dostęp DBA_ - obiekty całej bazy danych (informacje wykorzystywane w administracji) SELECT table_name FROM user_tables; Pespektywy słownika danych Wybrane perspektywy słownika danych 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,... 16

5 Źródła Źródła 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_danych Garcia-Molina, Ullman, Widom: Implementacja systemów baz danych, WNT 2003 17