BD-LAB4 Wojciech Pieprzyca

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
SQL – Strukturalny język zapytań
MS Access 2000 Relacje Piotr Górczyński 2005.
Komponenty bazy danych Baza danych Jest to uporządkowany zbiór powiązanych ze sobą danych charakterystycznych dla pewnej klasy obiektów lub zdarzeń,
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
BD-LAB6 Wojciech Pieprzyca
Tworzenie stron w języku WML jest zbliżone do tworzenia stron w HTML. W obydwu przypadkach używa się do tego celu znaczników (tagów). Zadaniem znaczników.
Język SQL (Structured Query Language) DDL (Data Definition Language)
Zadania Bazy danych.
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
SQL – Structured Query Language (3)
MySQL – ODBC - ACCESS.
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Arkusze kalkulacyjne, część 3
Bazy danych.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
dr hab. Ryszard Walkowiak prof. nadzw.
ANNA BANIEWSKA SYLWIA FILUŚ
Bazy danych podstawowe pojęcia
Systemy baz danych Wykład 1
Budowanie tabel i relacji
MySQL bazy danych dla witryny
System rejestracji zawodników Polski Związek Judo 2006.
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
SQL - Structured Query Language
Kwerendy.
Jak zacząć w MS SQL? USE master; GO IF DB_ID (Nbaza') IS NOT NULL DROP DATABASE baza; GO CREATE DATABASE baza; GO USE baza; GO.
Wybrane zagadnienia relacyjnych baz danych
Komendy SQL do pracy z tabelami i bazami
MICROSOFT Access TWORZENIE MAKR
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Projektowanie bazy danych
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Systemy Baz Danych Wykład III
Autor: Damian Urbańczyk
Projektowanie relacyjnych baz danych – diagramy związków encji
Typy danych, klucz podstawowy, klucz obcy
Jak wykonać prosty licznik odwiedzin strony internetowej?
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
Projektowanie postaci formularza:
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
Filtrowanie, Funkcje bazodanowe
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Moduł ECDL-AM5 Bazy danych, poziom zaawansowany Tabele, relacje.
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
Temat: Tworzenie bazy danych
Menu Opcje.
Widoki (views) - Perspektywy:
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Zapis prezentacji:

BD-LAB4 Wojciech Pieprzyca BAZY DANYCH BD-LAB4 Wojciech Pieprzyca

Język SQL-DDL Język DDL (Data Definition Language) jest podzbiorem grupy języków określanych wspólnie jako SQL (Structured Query Language). DDL służy do definiowania danych, a dokładniej do określania struktur i powiązań z jakich ma składać się baza danych. Z pomocą języka DDL można tworzyć tabele wraz z określeniem kluczy głównych i obcych, relacje pomiędzy tabelami, a także dodawać dodatkowe ograniczenia na wprowadzane dane. Użycie DDL pozwala także na zmianę już istniejących struktur.

SZBD Oracle Podstawowym celem tego laboratorium jest stworzenie struktury bazodanowej opartej na projekcie (modelu fizycznym) wcześniej omawianego systemu rezerwacji miejsc hotelowych. Jako system zarządzania bazą danych wykorzystywać będziemy Oracle 10g umieszczony na szkolnym serwerze. Zarządzanie bazą danych możliwe jest poprzez stronę www http://www.oracle.wsi.edu.pl. Każdy ze studentów posiada tam swoje konto o pojemności 5 MB, w ramach którego może umieszczać swoje tabele. Login: inazwisko (np. jkowalski) Hasło początkowe: wsiz

SZBD Oracle Po zalogowaniu się dobrym pomysłem jest zmiana hasła początkowego. W celu zmiany hasła należy wybrać opcję Administration i Change My Password, a następnie wpisać swoje stare hasło (Old Password) i dwukrotnie nowe hasło (New Password, Confirm Password).

Typy danych (I) Typy danych występujące w SZBD Oracle: CHAR(n) – typ tekstowy o stałej długości n znaków VARCHAR(n) – typ tekstowy o zmiennej maksymalnej długości n znaków INTEGER – typ całkowitoliczbowy NUMERIC(p,s) –typ liczbowy przechowujący wartości rzeczywiste o określonej precyzji (p) i skali (s). Precyzja oznacza ilość przechowywanych cyfr liczby, a skala ilość przechowywanych cyfr po przecinku. Przykładowo NUMERIC(6,2) przechowuje liczbę o długości 6 cyfr, w tym 2 cyfry na część ułamkową. FLOAT – typ rzeczywisty o pojedynczej precyzji DOUBLE – typ rzeczywisty o podwójnej precyzji BLOB – dane binarne CLOB – dane tekstowe o dużym rozmiarze

Typy danych (II) Typy danych występujące w SZBD Oracle: DATE – data TIME – czas TIMESTAMP – data+czas INTERVAL specyfikacja – reprezentuje określony przedział czasu (np.2 lata i 4 miesiące) Specyfikacja typu INTERVAL ma postać: INTERVAL najdłuższy_okres TO najkrótszy_okres W Oracle istnieją dwie specyfikacje: INTERVAL YEAR TO MONTH – przechowuje lata i miesiące INTERVAL DAY TO SECOND – przechowuje dni, godziny, minuty i sekundy

Tworzenie tabel (III) Tabele można utworzyć za pomocą polecenia CREATE TABLE. Składnia: CREATE TABLE nazwatabeli (nazwapola1 typpola1, nazwapola2 typpola2, …, nazwapolaN typpolaN) Dodatkowo każda tabela powinna mieć określony klucz główny za pomocą frazy PRIMARY KEY. Przykład: CREATE TABLE osoby (id_osoby INTEGER PRIMARY KEY, nazwisko VARCHAR(40), imie VARCHAR(30), data_ur DATE, liczbadzieci INTEGER, plec CHAR(1))

Tworzenie tabel (IV) Niektóre pola są wymagane i nie mogą być puste. Wówczas przy definicji pola należy dodać frazę NOT NULL. Możliwe jest także ustalenie wartości domyślnej, która będzie przypisywana do pola jeżeli użytkownik nie wprowadzi do tego pola swojej wartości (fraza DEFAULT wartość). Poniższy przykład określa, że pola imie i nazwisko nie mogą być puste, a pole liczbadzieci domyślnie ustalana jest na 0): CREATE TABLE osoby (id_osoby INTEGER PRIMARY KEY, nazwisko VARCHAR(40) NOT NULL, imie VARCHAR(30) NOT NULL, data_ur DATE, liczbadzieci INTEGER DEFAULT 0, plec CHAR(1))

Tworzenie tabel (V) Dla każdego z pól tabeli można także wprowadzić warunki ograniczające domenę (zbiór wartości) akceptowaną przez SZBD przy wpisywaniu danych do określonego pola. Ograniczenia domeny dokonuje się poprzez dodanie frazy CHECK(warunek). W przykładzie podanym poniżej dla pola plec akceptowane są jedynie wartości m i k (warunek CHECK (plec IN ('m','k')) ), a dla pola liczbadzieci wartości większe lub równe 0 (warunek CHECK (liczbadzieci >= 0) ). CREATE TABLE osoby (id_osoby INTEGER PRIMARY KEY, nazwisko VARCHAR(40) NOT NULL, imie VARCHAR(30) NOT NULL, data_ur DATE, liczbadzieci INTEGER DEFAULT 0, plec CHAR(1), CHECK (plec IN ('m','k')), CHECK (liczbadzieci > 0) )

Tworzenie relacji (I) Relacja odzwierciedla związek zachodzący pomiędzy dwiema tabelami. W SZBD relacje zaznacza się poprzez zdefiniowanie w tabeli podrzędnej klucza obcego i użycie frazy REFERENCES nazwa_tabeli_nadrzędnej(pole_klucza_głównego). W przykładzie tworzona jest tabela zamówienia, która jest tabelą podrzędną wobec tabel klienci i towary. Relacja z tabelą klienci realizowana jest poprzez dodanie klucza obcego id_klienta, a z tabelą towary poprzez dodanie klucza obcego id_towaru: CREATE TABLE zamowienia (id_zamowienia INTEGER PRIMARY KEY, id_klienta INTEGER REFERENCES klienci(id_klienta), id_towaru INTEGER REFERENCES towary(id_towaru) )

Tworzenie relacji (II) Tworzenie relacji pomiędzy tabelami rodzi pewne konsekwencje, a czasami także pewne wątpliwości. Szczególnie widoczne jest to przy usuwaniu danych z tabel nadrzędnych. Na przykład, pojawia się pytanie czy usunięcie klienta powinno spowodować usunięcie wszystkich jego zamówień czy też zamówienia powinny nadal być przechowywane, ale już bez informacji o tym kto był klientem zamawiającym ? Aby zautomatyzować odpowiedź na takie i podobne pytania stosuje się frazę ON DELETE. Istnieją dwie możliwości: 1) ON DELETE CASCADE – usunięcie rekordu z tabeli nadrzędnej powoduje automatyczne usunięcie wszystkich rekordów ze związanej tabeli podrzędnej Np.usunięcie klienta powoduje usunięcie jego zamówień

Tworzenie relacji (III) 2) ON DELETE SET NULL – usunięcie rekordu z tabeli nadrzędnej powoduje wstawienie w tabeli podrzędnej w polu klucza obcego wartości NULL. W przypadku relacji klienci-zamowienia, po usunięciu klienta, w tabeli zamówienia w polu id_klienta wstawiona zostanie wartość NULL. W przykładzie zarówno po usunięciu klienta lub towaru zamówienia dotyczące danego klienta lub towaru są automatycznie usuwane. CREATE TABLE zamowienia (id_zamowienia INTEGER PRIMARY KEY, id_klienta INTEGER REFERENCES klienci(id_klienta) ON DELETE CASCADE, id_towaru INTEGER REFERENCES towary(id_towaru) ON DELETE CASCADE)

Modyfikowanie tabel (I) Dodanie pola do tabeli ALTER TABLE nazwatabeli ADD nazwapola typ Opcjonalnie można dodać CHECK (warunek) Przykład: ALTER TABLE pracownicy ADD telefon VARCHAR(20) CHECK (length(telefon)>6) Zmiana typu pola ALTER TABLE nazwatabeli MODIFY nazwapola typ ALTER TABLE pracownicy MODIFY imie VARCHAR(40)

Modyfikowanie tabel (II) Usunięcie pola z tabeli ALTER TABLE nazwatabeli DROP COLUMN nazwapola Przykład: ALTER TABLE pracownicy DROP COLUMN telefon Zmiana nazwy tabeli RENAME stara_nazwatabeli TO nowa_nazwatabeli RENAME osoby TO pracownicy Usunięcie tabeli DROP TABLE nazwatabeli DROP TABLE pracownicy

Sekwencje Sekwencja przechowuje wartość liczbową, która może być inkrementowana (zwiększana) o określoną liczbę po wywołaniu jej funkcji o nazwie NEXTVAL. Sekwencja jest często wykorzystywana do tworzenia pól typu identyfikacyjnego (klucze główne). Dla takiego pola zwykle początkowa wartość sekwencji ustalana jest na 1 i inkrementowana (zwiększana o 1) każdorazowo przy tworzeniu nowego rekordu. Tak powstała wartość sekwencji zapisywana jest w polu id nowego rekordu. Składnia: CREATE SEQUENCE nazwasekwencji START WITH n INCREMENT BY m Przykład: CREATE SEQUENCE seq_pracownicy START WITH 1 INCREMENT BY 1

Wstawianie rekordów do tabeli (I) Wprowadzanie danych umożliwia polecenie INSERT. Składnia: INSERT INTO nazwatabeli (lista_pól) VALUES (wartości_pól) Przykład: INSERT INTO osoby (id_osoby, imie, nazwisko, liczbadzieci, plec) VALUES (seq_osoby.nextval, ’Jan’,’Kowalski’,3,’m’) Przy tworzeniu tabeli osoby zaznaczyliśmy, że pole liczbadzieci domyślnie ma wartość 0. Wprowadzając więc nowy rekord bez tego pola domyślnie i automatycznie wprowadzona zostanie tam wartość 0. INSERT INTO osoby (id_osoby, imie, nazwisko, plec) VALUES (seq_osoby.nextval, ’Robert’,’Kowalski’, ’m’)

Wstawianie rekordów do tabeli (II) Nieco trudniejsze może być wstawianie informacji do pól typu INTERVAL. 1) Specyfikacja INTERVAL YEAR TO MONTH INTERVAL ’lata-miesiące’ YEAR TO MONTH Przykład: INSERT INTO czasy (czas_lata) VALUES (INTERVAL ’2-4 YEAR TO MONTH) 2) Specyfikacja INTERVAL DAY TO SECOND INTERVAL ’dni godziny:minuty:sekundy’ DAY TO SECOND INSERT INTO czasy (czas_dni) VALUES (INTERVAL ’3 12:15:00’ DAY TO SECOND

Instrukcje SQL w SZBD Oracle (I) Aby wykonać dowolne polecenie języka SQL należy na stronie serwera Oracle, wybrać opcję SQL a następnie SQL Commands. Spowoduje to otwarcie strony na której można wpisywać i uruchamiać (Run) polecenia SQL.

Instrukcje SQL w SZBD Oracle (II) Równocześnie w drugim oknie przeglądarki można uruchomić przeglądarkę tworzonych obiektów (opcja Object Browser). Pozwala to na bieżącą obserwację wprowadzanych zmian w bazie.

Zadania (I) 1) Stworzyć tabelę osoby z następującymi polami: id_osoby - liczba całkowita - klucz główny nazwisko - typ tekstowy zmienny max.40 znaków – nie puste imie - typ tekstowy zmienny max. 40 znaków – pensja - typ numeric sumarycznie 6 cyfr, 2 po przecinku, dla pola pensja sprawdzać czy wprowadzona wartość > 0 (użyć frazy check) rola - typ tekstowy zmienny max.20 znaków - domyślną wartość 'programista' (użyć frazy default), dopuszczalne tylko wartości 'kierownik', 'analityk', 'programista‘ (użyć frazy check). data_urodzenia - data

Zadania (II) 2) Stworzyć tabelę czasy z dwoma polami: czas_lata - interwał przechowujący lata i miesiące czas_dni - interwał przechowujący dni, godziny, minuty i sekundy 3) Stworzyć tabelę test z jednym polem id - liczba całkowita - klucz główny 4) Dodać do tabeli osoby pole życiorys mogące przechowywać duża ilość danych tekstowych 5) Zmienić typ danych pola pensja na float 6) Usunąć z tabeli osoby pole data_urodzenia 7) Zmienić nazwę tabeli osoby na osoby2 8) Usunąć tabelę test

Zadania (III) Zgodnie z modelem fizycznym i logicznym (uwzględnić pola wymagane <m>) projektu systemu rezerwacji miejsc hotelowych: 1) Stworzyć tabelę typy. 2) Stworzyć tabelę pokoje. - uwzględnić potrzebę utworzenia klucza obcego i powiązania z tabelą Typy. Po usunięciu danego typu wszystkie pokoje tego typu powinny być usuwane (odpowiednia fraza ON DELETE). - dla pól cena i maxrabat sprawdzać czy podano wartość > 0 (fraza CHECK).

Zadania (IV) 3) Stworzyć tabelę klienci. 4) Stworzyć tabelę pracownicy. dla pola uprawnienia jako domyślną wartość przyjąć 3 (fraza DEFAULT). dla pola uprawnienia jako jedynie dopuszczalne przyjąć wartości 1,2,3 (fraza CHECK). 5) Stworzyć tabelę Rezerwacje. - uwzględnić potrzebę utworzenia trzech kluczy obcych i powiązań z tabelami Pokoje, Klienci, Pracownicy. Po usunięciu pokoju, klienta lub pracownika dane z tabeli dotyczące rezerwacji z nim związanej automatycznie powinny być usuwane.

Zadania (V) sprawdzać czy data_wyjazdu jest późniejsza od daty_przyjazdu uwaga! w Oracle nie ma typu boolean (tak/nie), trzeba go zastępować np. typem char(3) z dopuszczalnymi wartościami 'tak','nie' - dla pola zapłacone jako domyślną wartość przyjąć nie, dopuszczalne wartości tak/nie (fraza check) - dla pola faktura jako domyślną wartość przyjąć tak, dopuszczalne wartości tak/nie (fraza check) - dla pola sniadanie jako domyślną wartość przyjąć tak, dopuszczalne wartości tak/nie (fraza check) 6) Stworzyć tabelę menu. - dla pola cena sprawdzać czy podano wartość > 0.

Zadania (VI) sprawdzać czy data_wyjazdu jest późniejsza od daty_przyjazdu uwaga! w Oracle nie ma typu boolean (tak/nie), trzeba go zastępować np. typem char(3) z dopuszczalnymi wartościami 'tak','nie' - dla pola zapłacone jako domyślną wartość przyjąć nie, dopuszczalne wartości tak/nie (fraza check) - dla pola faktura jako domyślną wartość przyjąć tak, dopuszczalne wartości tak/nie (fraza check) - dla pola sniadanie jako domyślną wartość przyjąć tak, dopuszczalne wartości tak/nie (fraza check) 6) Stworzyć tabelę menu. - dla pola cena sprawdzać czy podano wartość > 0.

Zadania (VII) 7) Stworzyć tabelę ZamowieniaMenu. uwzględnić potrzebę utworzenia klucza obcego z dwóch pól. Trzeba to zrobić nie wskazując istnienia klucza głównego przy każdym polu, ale wprowadzając na końcu polecenia frazę primary key (id_menu, id_rezerwacji) uwzględnić potrzebę utworzenia dwóch kluczy obcych i powiązań z tabelami Menu i Rezerwacje. Po usunięciu rezerwacji powiązany rekord powinien być usuwany z tabeli ZamowieniaMenu.Po usunięciu pozycji z menu powinna być w polu id_menu ustalana wartość null. 8) Utworzyć sekwencja dla 6 tabel projektu (oprocz ZamowieniaMenu). Start:1, inkrementacja:1 Nazwy w postaci: seq_nazwatabeli np. seq_typy

Zadania (VIII) 9) Wstawić do tabeli czasy następujące dane a) dla specyfikacji YEAR TO MONTH 0 lat 10 miesięcy 1 rok 2 miesiące 2 lata 4 miesiące b) dla specyfikacji DAY TO SECOND 1 dzień 0 godzin 0 minut 0 sekund 0 dni 1 godzina 0 minut 0 sekund 2 dni 2 godziny 1 minuta 22 sekundu 30 dni 21 godzin 34 minuty 54 sekundy 10) Dla każdej z tabeli projektu wstawić jeden przykładowy rekord z użyciem polecenia INSERT INTO wykorzystując sekwencje i funkcję NEXTVAL.