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

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

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

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

Autor: Joanna Karwowska

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

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

Ćwiczenie 7 - DDL. Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL. Wymagania: Bazy Danych

Bazy danych - Materiały do laboratoriów VIII

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

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

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

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Uprawnienia, role, synonimy

Wykład 8. SQL praca z tabelami 5

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

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

Bazy danych Ćwiczenia projektowe

Wykład 05 Bazy danych

Język SQL, zajęcia nr 1

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

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

Cele. Definiowanie wyzwalaczy

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Modelowanie wymiarów

Wykład 5. SQL praca z tabelami 2

Aspekty aktywne 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

Optymalizacja poleceń SQL Metody dostępu do danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

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

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

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

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

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

Oracle Application Express

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

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

Zasady transformacji modelu DOZ do projektu tabel bazy danych

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Przestrzenne bazy danych Podstawy języka SQL

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

Bazy danych. Dr inż. Paweł Kasprowski

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

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

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

CREATE USER

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Oracle PL/SQL. Paweł Rajba.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych i usługi sieciowe

Projektowanie systemów baz danych

Bazy Danych i Usługi Sieciowe

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

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

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

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

Autor: Joanna Karwowska

Bazy danych Ćwiczenia projektowe

Wykład 4. SQL praca z tabelami 1

Przykładowa baza danych BIBLIOTEKA

Instrukcje DML INSERT, UPDATE, DELETE. COPY

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

Bazy danych i usługi sieciowe

Oracle PL/SQL. Paweł Rajba.

Podstawy technologii WWW

Model relacyjny. Wykład II

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

Grupowanie i funkcje agregujące

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Typy Oracle atrybutów relacji Typ NUMBER (1)

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Tabela wewnętrzna - definicja

Systemy baz danych 2 laboratorium Projekt zaliczeniowy

Typy Oracle atrybutów relacji Typ NUMBER (1)

Wykład 5: PHP: praca z bazą danych MySQL

Pakiety podprogramów Dynamiczny SQL

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

Wprowadzenie do baz danych

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Systemy GIS Tworzenie zapytań w bazach danych

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

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Bazy danych 10. SQL Widoki

Język PL/SQL Procedury i funkcje składowane

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Transkrypt:

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania 1. Zmodyfikuj strukturę relacji PROJEKTY, dodając do niej definicje następujących ograniczeń integralnościowych (użyj kilku poleceń): klucz podstawowy o nazwie PK_PROJEKTY na atrybucie ID_PROJEKTU, klucz unikalny o nazwie UK_PROJEKTY na atrybucie OPIS_PROJEKTU, atrybut OPIS_PROJEKTU nie przyjmuje wartości pustych, wartość atrybutu DATA_ZAKONCZENIA musi być późniejsza niż wartość atrybutu DATA_ROZPOCZECIA, atrybut FUNDUSZ akceptuje tylko wartości dodatnie lub wartości puste. Następnie sprawdź w słowniku bazy danych informacje o zdefiniowanych w tym punkcie ograniczeniach integralnościowych. Zwróć szczególną uwagę na nazwy ograniczeń, które zostały nadane automatycznie. CONSTRAINT_NAME C_TYPE SEARCH_CONDITION COLUMN_NAME --------------- ------ -------- -------------------------- -------------------- PK_PROJEKTY P ID_PROJEKTU SYS_C0010038 C "ID_PROJEKTU" IS NOT NULL ID_PROJEKTU SYS_C0010042 C data_zakonczenia > data_rozpoczecia DATA_ROZPOCZECIA SYS_C0010042 C data_zakonczenia > data_rozpoczecia DATA_ZAKONCZENIA SYS_C0010043 C fundusz > 0 FUNDUSZ SYS_C0010044 C "OPIS_PROJEKTU" IS NOT NULL OPIS_PROJEKTU UK_PROJEKTY U OPIS_PROJEKTU 2. Spróbuj wstawić do relacji PROJEKTY rekord, który zduplikuje opis istniejącego już projektu Indeksy bitmapowe. Nazwa atrybutu Rekord OPIS_PROJEKTU Indeksy bitmapowe DATA_ROZPOCZECIA 12 kwietnia 2015 r. DATA_ZAKONCZENIA 30 września 2016 r. FUNDUSZ 40 000 SQL> insert into PROJEKTY... Czy polecenie zakończyło się powodzeniem? Co jest przyczyną błędu? 1

3. Utwórz relację o nazwie PRZYDZIALY o następującej strukturze: Nazwa atrybutu Typ wartości Rozmiar Dodatkowe własności atrybutu ID_PROJEKTU Liczba całkowita 4 Niepusty klucz obcy o nazwie FK_PRZYDZIALY_01 do kolumny ID_PROJEKTU w relacji PROJEKTY NR_PRACOWNIKA Liczba całkowita 6 Niepusty klucz obcy o nazwie FK_PRZYDZIALY_02 do kolumny ID_PRAC w relacji PRACOWNICY OD Data Domyślnie data systemowa DO Data Późniejsza niż OD, ograniczenie ma nosić nazwę CHK_PRZYDZIALY_DATY STAWKA Liczba 7,2 Większa od 0, ograniczenie ma nosić nazwę CHK_PRZYDZIALY_STAWKA ROLA Łańcuch znaków o zmiennej długości 20 Dopuszczalne wartości to: KIERUJĄCY ANALITYK PROGRAMISTA ; ograniczenie ma nosić nazwę CHK_PRZYDZIALY_ROLA Użyj jednego polecenia. Uwaga! Kluczem podstawowym relacji PRZYDZIALY jest para atrybutów (ID_PROJEKTU, NR_PRACOWNIKA), nazwa klucza to PK_PRZYDZIALY. SQL> create table PRZYDZIALY... 4. Wstaw do relacji PRZYDZIALY trzy rekordy: Nazwa atrybutu 1. rekord 2. rekord 3. rekord ID_PROJEKTU Identyfikator projektu Indeksy bitmapowe Identyfikator projektu Indeksy bitmapowe Identyfikator projektu Sieci kręgosłupowe NR_PRACOWNIKA 170 140 140 OD 10 kwietnia 1999 r. 1 grudnia 2000 r. 14 września 2015 r. DO 10 maja 1999 r. STAWKA 1 000 1 500 2 500 ROLA KIERUJĄCY ANALITYK KIERUJĄCY Uwaga! Identyfikator wskazanego projektu powinien być pobrany przez zapytanie, umieszczone bezpośrednio w poleceniu wstawiającym rekord. SQL> insert into PRZYDZIALY... Sprawdź, czy rekordy zostały poprawnie wstawione. ID_PROJEKTU NR_PRACOWNIKA OD DO STAWKA ROLA ----------- ------------- ---------- ---------- ---------- -------------------- 1 170 1999-04-10 1999-05-10 1000 KIERUJĄCY 1 140 2000-12-01 1500 ANALITYK 2 140 2015-09-14 2500 KIERUJĄCY 5. Dodaj do relacji PRZYDZIALY atrybut GODZINY, będący liczbą całkowitą o maksymalnej wartości równej 9999. Atrybut nie może przyjmować wartości pustych. Czy udało się dodać atrybut? Co jest powodem błędu? 2

6. Operację z poprzedniego punktu wykonaj w następujący sposób: dodaj definicję atrybutu GODZINY bez wskazania wymagalności wartości, ustaw wartości atrybutu GODZINY w poszczególnych rekordach relacji PRZYDZIALY na wybrane przez siebie wartości, nałóż na atrybut GODZINY wymagalność wartości. SQL> update PRZYDZIALY... 7. Wyłącz (nie usuwaj!) sprawdzanie unikalności opisów projektów w relacji PROJEKTY. Sprawdź status ograniczenia zapytaniem do perspektywy USER_CONSTRAINTS. CONSTRAINT_NAME STATUS -------------------- -------- UK_PROJEKTY DISABLED 8. Wstaw do relacji PROJEKTY rekord, który zduplikuje opis istniejącego już projektu Indeksy bitmapowe. Nazwa atrybutu Wartości w rekordzie OPIS_PROJEKTU Indeksy bitmapowe DATA_ROZPOCZECIA 12 kwietnia 2015 r. DATA_ZAKONCZENIA 30 września 2016 r. FUNDUSZ 40 000 SQL> insert into PROJEKTY... Czy teraz polecenie się powiodło? Wykonaj zapytanie wyświetlające zawartość relacji PROJEKTY. ID_PROJEKTU OPIS_PROJEKTU DATA_ROZPOCZECIA DATA_ZAKONCZENIA FUNDUSZ ----------- ------------------ ---------------- ---------------- ------- 1 Indeksy bitmapowe 1999-04-02 2001-08-31 25000 2 Sieci kręgosłupowe 2017-02-21 19000 5 Indeksy bitmapowe 2015-04-12 2016-09-30 40000 9. Spróbuj włączyć wyłączone przed chwilą ograniczenie. Czy polecenie się powiodło? 3

10. Zmień opis dodanego przed chwilą projektu z Indeksy bitmapowe na Inne indeksy (zwróć uwagę, że teraz w relacji PROJEKTY mamy dwa projekty z opisem Indeksy bitmapowe masz zmienić opis tylko jednego, dodanego przed chwilą). Następnie spróbuj ponownie włączyć wyłączone ograniczenie. SQL> update PROJEKTY... Czy teraz udało się włączyć ograniczenie? 11. Spróbuj zmienić maksymalny rozmiar atrybutu OPIS_PROJEKTU w relacji PROJEKTY na 10 znaków. Czy zmiana się udała? Jeśli nie, dlaczego? 12. Spróbuj usunąć z relacji PROJEKTY rekord opisujący projekt z opisem Sieci kręgosłupowe. SQL> delete from PROJEKTY... Czy operacja usunięcia zakończyła się sukcesem? Jeśli nie dlaczego? 13. Zmień w relacji PRZYDZIALY definicję klucza obcego o nazwie FK_PRZYDZIALY_01 w taki sposób, aby usunięcie projektu z relacji PROJEKTY automatycznie powodowało usunięcie związanych z usuwanym projektem przydziałów z relacji PRZYDZIALY (wykonaj to przy pomocy dwóch poleceń ALTER TABLE). Następnie ponownie spróbuj usunąć z relacji PROJEKTY rekord opisujący projekt Sieci kręgosłupowe. SQL> delete from PROJEKTY... Tym razem usunięcie powinno zakończyć się sukcesem. Sprawdź, czy w relacjach PROJEKTY i PRZYDZIALY usunięte zostały odpowiednie rekordy. ID_PROJEKTU OPIS_PROJEKTU DATA_ROZPOCZECIA DATA_ZAKONCZENIA FUNDUSZ ----------- ----------------- ---------------- ---------------- -------- 1 Indeksy bitmapowe 1999-04-02 2001-08-31 25000 5 Inne indeksy 2015-04-12 2016-09-30 40000 ID_PROJEKTU NR_PRACOWNIKA OD DO STAWKA ROLA GODZINY ----------- ------------- ---------- ---------- ------ --------- ------- 1 170 1999-04-10 1999-05-10 1000 KIERUJĄCY 30 1 140 2000-12-01 1500 ANALITYK 30 4

14. Spróbuj usunąć relację PROJEKTY. Użyj polecenia, które jednocześnie z usuwaną relacją usunie klucze obce z innych relacji, wskazujące na usuwaną relację. SQL> drop... Sprawdź w słowniku bazy danych, jakie ograniczenia relacji PRZYDZIALY zostały usunięte wraz z relacją PROJEKTY. CONSTRAINT_NAME C SEARCH_CONDITION --------------------- - --------------------------------------------- CHK_PRZYDZIALY_DATY C do > od CHK_PRZYDZIALY_ROLA C rola in ('KIERUJĄCY','ANALITYK','PROGRAMISTA') CHK_PRZYDZIALY_STAWKA C stawka > 0 FK_PRZYDZIALY_02 R PK_PRZYDZIALY P SYS_C0010051 C "GODZINY" IS NOT NULL 15. Usuń pozostałe dwie relacje: PRZYDZIALY i PROJEKTY_KOPIA. SQL> drop... Sprawdź, korzystając ze słownika bazy danych, jakie relacje posiadasz obecnie w swoim schemacie. TABLE_NAME ---------------------- ETATY PRACOWNICY ZESPOLY 5