Ćwiczenie 7 - DDL. Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL. Wymagania: Bazy Danych
|
|
- Przybysław Domański
- 9 lat temu
- Przeglądów:
Transkrypt
1 Bazy Danych Ćwiczenie 7 - DDL Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL Podczas dotychczasowych ćwiczeń z Systemów Baz Danych wykonywaliście Państwo zadania przy wykorzystaniu relacji PRACOWNICY, ZESPOLY i ETATY. Poznaliście Państwo polecenia pozwalające na wykonywanie zapytań do relacji oraz wstawianie, modyfikację i usuwanie z nich danych. Celem siódmego ćwiczenia z Systemów Baz Danych jest zapoznanie Państwa z poleceniami pozwalającymi na tworzenie relacji, ich modyfikację i usuwanie. Poznacie Państwo również typy danych, jakie mogą być składowane w bazie danych Wymagania: Do wykonania ćwiczenia konieczna jest znajomość tematyki omawianej na poprzednich ćwiczeniach z SBD, w szczególności z wykonywania zapytań, oraz wstawiania, modyfikacji i usuwania danych z relacji. 1
2 Plan ćwiczenia Wprowadzenie do laboratorium. Tworzenie relacji. Typy danych. Ograniczenia integralnościowe (klucz główny, wartość unikalna, obowiązkowa wartości atrybutu, ograniczenie domeny atrybutu, klucz obcy). Tworzenie relacji przez podzapytanie. Ćwiczenie 7 - DDL (2) Ćwiczenie rozpoczniemy od wprowadzenia do laboratorium. Następnie przedstawimy polecenie CREATE TABLE pozwalające na tworzenie relacji w bazie danych i przedstawimy typy danych, jakie można nadać atrybutom relacji. Na kolejnym etapie ćwiczenia poznacie państwo koncepcję ograniczeń integralnościowych oraz składnię poleceń pozwalającą na ich definiowanie. Ostatnim tematem dotyczącym tworzenia relacji jest automatyczne wypełnianie relacji danymi podczas ich tworzenia. 2
3 Plan ćwiczenia cd. Modyfikowanie schematu relacji. Zarządzanie ograniczeniami integralnościowymi. Zmiana nazwy i usuwanie relacji. Zadania Podsumowanie. Ćwiczenie 7 - DDL (3) Następnie przejdziemy do omówienia poleceń pozwalających na: modyfikowanie istniejących relacji oraz ograniczeń integralnościowych, oraz na zmianę nazwy relacji i ich usuwanie. Każdy z tematów omawianych na ćwiczeniu zakończony jest zadaniami do samodzielnego wykonania. Na końcu ćwiczenia przedstawimy państwu kilka dodatkowych zadań, które powinniście państwo wykonać w celu nabrania wprawy w posługiwaniu się poleceniami przedstawionymi na ćwiczeniu. Ćwiczenie zakończymy slajdem podsumowującym omówioną tematykę. 3
4 Wprowadzenie do laboratorium CREATE TABLE projekty ( nazwa CHARACTER VARYING (100), budzet NUMERIC(10,2), termin_zak DATE ); PROJEKTY NAZWA BUDZET TERMIN_ZAK Ćwiczenie 7 - DDL (4) Podczas dotychczasowych ćwiczeń z Systemów Baz Danych wykonywaliście Państwo zadania przy wykorzystaniu relacji PRACOWNICY, ZESPOLY i ETATY. Poznaliście Państwo polecenia pozwalające na wykonywanie zapytań do relacji oraz wstawianie, modyfikację i usuwanie z nich danych. Wiedza ta jednak nie jest jednak specjalnie przydatna, jeżeli nie można samemu stworzyć własnych relacji. Na tym ćwiczeniu poznacie państwo polecenia pozwalające na tworzenie relacji (przykład na slajdzie) oraz ich modyfikację i usuwanie. Poznacie Państwo również koncepcję ograniczeń integralnościowych, które pozwalają na utrzymywanie spójności w bazie danych. 4
5 Tworzenie relacji 1 CREATE TABLE nazwa_relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna], nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna],... ); 2 CREATE TABLE projekty ( nazwa CHARACTER VARYING (100), budzet NUMERIC(10,2) DEFAULT , termin_zak DATE DEFAULT SYSDATE + INTERVAL '5-6' YEAR (1) TO MONTH ); Ćwiczenie 7 - DDL (5) Nowe relacje tworzy się za pomocą polecenia CREATE TABLE, za którym podaje się nazwę relacji i listę atrybutów tej relacji. Listę atrybutów tworzy się wymieniając po przecinku wyrażenia złożone z nazwy atrybutu, jego typu i rozmiaru typu oraz opcjonalnie domyślnej wartości atrybutu. Domyślna wartość jest wstawiana do relacji w sytuacji, gdy nie podano w poleceniu INSERT wartości dla wszystkich atrybutów. Na slajdzie pokazano ogólną składnię polecenia CREATE TABLE (1). Przykład (2) zawiera polecenie tworzące relację PROJEKTY zawierającą atrybuty NAZWA, BUDZET i TERMIN_ZAK. Atrybut NAZWA reprezentuje nazwę projektu i jest typu łańcuchowego o maksymalnym rozmiarze 100 (typy zostaną dokładniej opisane na następnych slajdach). Atrybut BUDZET reprezentuje budżet projektu i jest typu liczbowego. Domyślną wartością tego atrybutu jest Atrybut TERMIN_ZAK reprezentuje termin zakończenia projektu, a domyślną wartością tego atrybutu jest wartość wyrażenia SYSDATE + INTERVAL '5-6' YEAR (1) TO MONTH, które oznacza datę systemową w momencie wstawiania krotki powiększoną o 5 lat i 6 miesięcy. Przykładowe polecenia wykorzystujące wartości domyślne dla atrybutów wyglądają następująco: INSERT INTO projekty(nazwa) VALUES ( System informatyczny dziekanatu ); Polecenie to spowoduje wstawienie do relacji PROJEKTY projektu o nazwie System informatyczny dziekanatu, o budżecie zł i terminie zakończenia za pięć i pół roku od daty wstawienia krotki. INSERT INTO projekty(nazwa, budzet) VALUES ( System informatyczny dziekanatu,100000); Polecenie to spowoduje wstawienie do relacji PROJEKTY projektu o nazwie System informatyczny dziekanatu, o budżecie zł (podana wartość nadpisuje wartość domyślną) i terminie zakończenia za pięć i pół roku od daty wstawienia krotki. 5
6 Należy tutaj zwrócić uwagę na jeszcze jeden fakt. Otóż w niektórych SZBD wykonanie dowolnego polecenia DDL (w tym i CREATE TABLE) wiąże się z niejawnym wykonaniem zatwierdzenia wszystkich zmian (COMMIT). W konsekwencji nie jest możliwe wycofanie poleceń DDL. Jest tak np. w SZBD Oracle, natomiast w DB2 możliwe jest wycofywanie np. polecenia tworzącego relację. 6
7 Typy danych łańcuchy CHARACTER(n) CHAR(n) Typ CHARACTER VARYING(n) CHAR VARYING(n) NATIONAL CHARACTER(n) NATIONAL CHAR(n) NATIONAL CHARACTER VARYING (n) NATIONAL CHAR VARYING(n) NCHAR VARYING(n) Opis Typ łańcuchowy o stałej długości. Typ łańcuchowy o zmiennej długości. Typ łańcuchowy o stałej długości, o predefiniowanym narodowym zbiorze znaków. Typ łańcuchowy o zmiennej długości, o predefiniowanym narodowym zbiorze znaków. Ćwiczenie 7 - DDL (7) Istnieje kilka typów danych pozwalających na definiowanie atrybutów składujących tekst. Typ CHARACTER (w skrócie CHAR) reprezentuje łańcuchy znaków o długości równej zdefiniowanej (n). Jeżeli wstawiony łańcuch jest krótszy, jest on uzupełniany znakami spacji do odpowiedniej długości. Według FIPS (Federal Information Processing Standards) powinna istnieć możliwość definiowania łańcuchów o długości 1000 znaków, ale maksymalna wartość tutaj zależy od producenta SZBD. Typ CHARACTER VARYING (w skrócie CHAR VARYING) jest typem podobnym do typu CHAR. Tutaj jednak podaje się nie długość składowanego łańcucha, a jego maksymalną długość. Możliwe jest zatem składowanie łańcuchów krótszych niż podany rozmiar i nie są one uzupełniane spacjami. Podobnie jak w przypadku typu CHARACTER powinna istnieć możliwość definiowania łańcuchów o maksymalnej długości równej 1000 znaków, ale faktyczna maksymalna wartość tutaj zależy od producenta SZBD. Typy CHARACTER i CHARACTER VARYING posiadają również swoją wersję, która pozwala na przechowywanie łańcuchów zawierający znaki narodowe z predefiniowanego zestawu znaków. Te dodatkowe wersje typów łańcuchowych nazywają się prawie tak samo, jak wersje oryginalne. Jedyną różnicą jest to,że ich nazwa jest uzupełniona o słowo NATIONAL. Parametr (n), oznaczający długość albo maksymalną długość łańcucha, dla każdego z typów przedstawionych na slajdzie jest opcjonalny i domyślnie wynosi 1. 7
8 Typy danych liczby Typ INTEGER, INT SMALLINT NUMERIC(p,s) DECIMAL(p,s) FLOAT(b) DOUBLE PRECISION REAL Opis Typ całkowitoliczbowy Typ liczbowy o definiowanej precyzji i skali Typ zmiennoprzecinkowy Ćwiczenie 7 - DDL (8) Typy INTEGER, INT i SMALLINT pozwalają na przechowywanie wartości całkowitych ze znakiem. Według standardu SQL-99 typy INTEGER i INT są identyczne. Według FIPS powinny pozwalać na przechowywanie liczb złożonych przynajmniej z 9 cyfr. SMALLINT powinien mieć dokładność mniejszą lub równą dokładności typów INTEGER i INT. Według FIPS typ ten powinien pozwalać na przechowywanie liczb złożonych przynajmniej z 4 cyfr. Typy NUMERIC i DECIMAL są typami liczbowymi stałoprzecinkowymi o możliwości definiowania precyzji (p) i skali (s). Precyzja określa ile cyfr liczby ma być przechowywanych, a skala ile z tych cyfr ma stanowić część ułamkową rozwinięcia dziesiętnego składowanej liczby. Precyzja musi być liczbą całkowitą większą od zera. Według FIPS powinna istnieć możliwość podawania wartości przynajmniej do 15, ale istnieją SZBD pozwalające podać tutaj nawet 38. Skala musi być całkowitą, dodatnią liczbą mniejszą od precyzji. Zarówno precyzja, jak i skala są opcjonalne i można je pominąć. W sytuacji, gdy chcemy podać skalę, należy podać również precyzję. Domyślną wartością skali jest 0, a domyślną wartością precyzji jest 1. Typ FLOAT jest typem zmiennoprzecinkowym o definiowanej precyzji (b). Przez precyzję rozumie się tutaj maksymalną liczbę bitów, jaką można przeznaczyć na mantysę. Typy REAL i DOUBLE PRECISION są liczbami ze zdefiniowaną precyzją. Standard nie określa tutaj wartości precyzji, ale wymaga, aby precyzja REAL była mniejsza od DOUBLE PRECISION. 8
9 Typy danych daty i czas Typ DATE TIME(n) TIMESTAMP(n) INTERVAL specyfikacja Reprezentuje daty. Opis Reprezentuje czas z dokładnością do części ułamkowych sekundy Data i czas (połączenie DATE i TIME) Reprezentuje okres czasu Ćwiczenie 7 - DDL (9) Typ DATE pozwala na definiowanie atrybutów przechowujących daty. Poprawną datą jest tutaj dowolna data z kalendarza gregoriańskiego pomiędzy 01 stycznia 1 roku a 31 grudnia W SZBD Oracle typ DATE pozwala również na przechowywanie czasu w postaci wartości ułamkowych (1=dzień, 0,5=12 godzin itp.). Typ TIME pozwala przechowywać informacje o czasie dnia z dokładnością do ułamkowych części sekundy. Parametr określa liczbę pozycji dziesiętnych rozwinięcia dziesiętnego ułamków sekundy. Musi istnieć możliwość podania tutaj przynajmniej wartości 6. Parametr (n) jest opcjonalny, a jego domyślna wartość wynosi 0. Typ TIMESTAMP reprezentuje połączenie możliwości typów DATE i TIME i pozwala na składowanie zarówno dat, jak i czasu. Podobnie jak typy DATE i TIME pozwala na przechowywanie w atrybutach dat z kalendarza gregoriańskiego pomiędzy 01 stycznia 1 roku a 31 grudnia 9999 oraz czasu z dokładnością do ułamkowych części sekundy. Parametr (n) ma identyczne znaczenie jak w typie TIME i również jest opcjonalny. Typ INTERVAL reprezentuje okres czasu. Okres czasu definiowany jest za pomocą pewnej liczby różnych jednostek takich jak: lata, miesiące, dnie, godziny itp. Na nazwę typu składa się słowo kluczowe INTERVAL i specyfikacja przechowywanych wielkości. Specyfikacja ma postać: najdłuższy_okres [TO najkrótszy okres] gdzie: najdłuższy_okres może przyjmować następujące wartości: YEAR(n), MONTH(n), DAY(n), HOUR(n), MINUTE(n), SECOND(n,f) (n to liczba cyfr liczby danych jednostek czasu, jaka może być składowana, a f to liczba cyfr rozwinięcia dziesiętnego ułamka sekundy), A najkrótszy_okres może przyjmować wartości: MONTH, DAY, HOUR, MINUTE, SECOND(f). 9
10 Podając opcjonalny najkrótszy okres należy pamiętać o tym, że musi on być krótszy od najdłuższego okresu. Przykładowo, poprawnym typem jest INTERVAL YEAR TO MONTH, ale nie jest nim INTERVAL MONTH TO YEAR. Nie jest również możliwe łączenie w jednej specyfikacji roku (YEAR) i miesiąca (MONTH) z pozostałymi okresami. Tym samym, lista poprawnych typów wygląda następująco: - INTERVAL YEAR pozwala na przechowywanie pewnej liczby lat. - INTERVAL MONTH pozwala na przechowywanie pewnej liczby miesięcy. - INTERVAL YEAR TO MONTH pozwala na przechowywanie pewnej liczby lat i miesięcy. - INTERVAL DAY pozwala na przechowywanie pewnej liczby dni. - INTERVAL HOUR pozwala na przechowywanie pewnej liczby godzin. - INTERVAL MINUTE pozwala na przechowywanie pewnej liczby minut. - INTERVAL SECOND pozwala na przechowywanie pewnej liczby sekund. - INTERVAL DAY TO HOUR pozwala na przechowywanie pewnej liczby dni i godzin. - INTERVAL DAY TO MINUTE pozwala na przechowywanie pewnej liczby dni, godzin i minut. - INTERVAL DAY TO SECOND pozwala na przechowywanie pewnej liczby dni, godzin, minut i sekund. - INTERVAL HOUR TO MINUTE pozwala na przechowywanie pewnej liczby godzin i minut. - INTERVAL HOUR TO SECOND pozwala na przechowywanie pewnej liczby godzin, minut i sekund. - INTERVAL MINUTE TO SECOND pozwala na przechowywanie pewnej liczby minut i sekund. Do powyższych typów, zgodnie z wcześniejszym opisem można również dodać parametry określające dokładność i maksymalną wielkość przechowywanych wartości. W SZBD Oracle możliwe jest definiowanie relacji z atrybutami jedynie typów: INTERVAL YEAR TO MONTH i INTERVAL DAY TO SECOND. Nie stanowi to jednak dużego problemu, gdyż są to typy najbardziej ogólne. 10
11 Typy danych inne BLOB CLOB Typ Opis Binarne dane o dużych rozmiarach. Dane znakowe o dużych rozmiarach. Ćwiczenie 7 - DDL (11) Typ BLOB służy do przechowywania danych binarnych o dużych rozmiarach, np. plików graficznych, filmów, plików dźwiękowych itp. Typ CLOB służy do przechowywania danych znakowych o dużych rozmiarach (większych niż pozwalają na to typy takie jak CHARCTER VARYING), np. stron HTML, plików XML, książek itp. 11
12 Zadanie (1) Utwórz relację ZWIERZETA o następujących atrybutach: Nazwa GATUNEK JAJORODNY LICZBA_KONCZYN DATA_ODKRYCIA Typ Łańcuchowy o zmiennej długości (max 100 znaków). Łańcuchowy o stałej długości (1 znak) (przechowuje wartości T/N). Liczbowy, (max 2 cyfry). Typ reprezentujący datę. Ćwiczenie 7 - DDL (12) 12
13 Rozwiązanie (1) CREATE TABLE zwierzeta ( gatunek CHARACTER VARYING (100), jajorodny CHAR(1), liczba_konczyn NUMERIC(2), data_odkrycia DATE ); Ćwiczenie 7 - DDL (13) Slajd pokazuje rozwiązanie zadania (1), którego treść przytoczono poniżej. Utwórz relację ZWIERZETA o następujących atrybutach: GATUNEK: Typ łańcuchowy o zmiennej długości (max 100 znaków). JAJORODNY: Typ łańcuchowy o stałej długości (1 znak) (przechowuje wartości T/N). LICZBA_KONCZYN: Typ liczbowy, (max 2 cyfry). DATA_ODKRYCIA: Typ reprezentujący datę. 13
14 Ograniczenia integralnościowe 1 2 CREATE TABLE nazwa_relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr]..., nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr]...,... [ [CONSTRAINT nazwa_ogr] ograniczenie_rel,...] ); CREATE TABLE projekty ( nazwa CHARACTER VARYING (100) PRIMARY KEY, budzet NUMERIC(10,2), termin_zak DATE CONSTRAINT niepusty_termin NOT NULL, CHECK (budzet > ) ); Ćwiczenie 7 - DDL (14) Dane składowane w relacjach opisują jakiś wybrany fragment rzeczywistości. Niestety, łatwo jest wprowadzić do relacji dane, które rzeczywistości nie mogą odpowiadać w żaden sposób. Przykładowo, można wprowadzić do bazy danych pracowników zatrudnionych tysiąc lat temu, albo samochód o ujemnej maksymalnej prędkości. W celu zapobiegania takim sytuacjom stosuje się tzw. ograniczenia integralnościowe. Jest to zbiór warunków, które muszą być spełnione przez dane składowane w bazie danych, aby można je było uznać za poprawne. Każde polecenie SQL, które spowodowałoby naruszenie warunków integralnościowych jest wycofywane. Slajd pokazuje rozszerzoną składnię polecenia CREATE TABLE, dzięki której można podać ograniczenia integralnościowe (1). Istnieją dwa rodzaje ograniczeń integralnościowych: ograniczenia atrybutu i ograniczenia relacji. Ograniczenia atrybutu dotyczą jedynie pojedynczego atrybutu relacji. Definiuje się je na liście atrybutów po podaniu wartości domyślnej atrybutu. Ograniczenia relacji dotyczą więcej niż jednego atrybutu relacji i definiuje się je jako osobny wpis na liście atrybutów. Definicja ograniczenia integralnościowego rozpoczyna się od opcjonalnego podania jego nazwy po słowie kluczowym CONSTRAINT, po którym podaje się właściwą definicję. Poszczególne typy ograniczeń wraz ze sposobem definiowania zostaną opisane na kolejnych slajdach. Przykładowe definicje ograniczeń integralnościowych można zobaczyć na przykładowym poleceniu tworzącym relację PROJEKTY (2). Tutaj, ograniczenia integralnościowe zostały założone na atrybutach NAZWA i TERMIN_ZAK. W drugim przypadku podano również nazwę ograniczenia (NIEPUSTY_TERMIN). Ograniczenia relacji dotyczą kilku atrybutów relacji i definiowane są w ramach listy atrybutów, za właściwymi atrybutami. Podobnie jak w przypadku ograniczeń atrybutów, definicję ograniczenia relacji rozpoczyna się od opcjonalnego podania jego nazwy, a następnie podania właściwej definicji. 14
15 Na przykładowym poleceniu (2) zdefiniowano ograniczenie integralnościowe relacji CHECK (budzet > ). Ograniczenie to dotyczy tylko jednego atrybutu, ale mogłoby dotyczyć większej ich liczby. 15
16 Klucz podstawowy 1 CREATE TABLE projekty ( nazwa CHARACTER VARYING (100) CONSTRAINT pk_proj PRIMARY KEY, budzet NUMERIC(10,2), termin_zak DATE ); CREATE TABLE projekty ( 2 numer NUMERIC(6), nazwa CHARACTER VARYING (100), budzet NUMERIC(10,2), termin_zak DATE, CONSTRAINT pk_proj PRIMARY KEY (numer, nazwa) ); Ćwiczenie 7 - DDL (16) Jednym z najważniejszych ograniczeń integralnościowych jest tzw. klucz podstawowy. Żaden z atrybutów wchodzących w skład klucza podstawowego nie może przyjmować wartości NULL. Dodatkowo wymagane jest, aby żadna kombinacja wartości tych atrybutów nie wystąpiła więcej niż raz. Przykład (1) pokazuje sposób definicji ograniczenia klucz podstawowy jako ograniczenia atrybutu. Aby zdefiniować klucz podstawowy jako ograniczenie atrybutu wystarczy za typem atrybutu podać opcjonalną nazwę ograniczenia, a następnie słowa PRIMARY KEY. Klucz podstawowy zdefiniowany jako ograniczenie atrybutu dotyczy tylko jednego atrybutu. Dzięki ograniczeniu zdefiniowanemu w przykładzie (1), żadna NAZWA w relacji PROJEKTY nie może się powtórzyć. Przykład (2) pokazuje definicję ograniczenia klucz podstawowy jako ograniczenia relacji. Aby zdefiniować klucz podstawowy jako ograniczenie relacji, po opcjonalnej nazwie ograniczenia podaje się słowa PRIMARY KEY a następnie w nawiasie listę atrybutów wchodzących w skład klucza. Dzięki ograniczeniu zdefiniowanemu w przykładzie (2), żadna kombinacja wartości atrybutu NUMER i atrybutu NAZWA nie może się powtórzyć. Przykładowo, może wystąpić wiele krotek o wartości atrybutu NUMER równej 1, ale muszą one mieć różne NAZWY. Może również wystąpić wiele krotek i wartości atrybutu NAZWA równej System informatyczny dla dziekanatu, jednak wówczas muszą one mieć różne wartości na atrybucie NUMER. Jak łatwo zauważyć, zbiór atrybutów podlegających ograniczeniu integralnościowemu klucz podstawowy jednoznacznie identyfikuje krotkę. Innymi słowy, znając wartości atrybutów wchodzących w skład klucza podstawowego, wiemy, że istnieje co najwyżej jedna krotka o takiej kombinacji wartości. W relacji PRACOWNICY, którą poznaliście państwo podczas poprzednich ćwiczeń, kluczem głównym jest atrybut ID_PRAC. Nie jest kluczem głównym np. atrybut NAZWISKO, a zatem możliwe jest wstawienie kilku pracowników, o takim samym nazwisku. Uwaga! Relacja może posiadać co najwyżej jeden klucz podstawowy. 16
17 Zadanie (2) Utwórz relację KLIENCI o następujących atrybutach i ograniczeniach: Nazwa PESEL ADRES WIEK WSPOLPRACA_OD Typ Łańcuchowy o stałej długości (11 znaków). Klucz podstawowy (ograniczenie atrybutu). Łańcuchowy o zmiennej długości (max 100 znaków) Liczbowy, (max 2 cyfry). Typ reprezentujący datę. Ćwiczenie 7 - DDL (17) Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe klucz podstawowy. 17
18 Rozwiązanie (2) CREATE TABLE klienci ( pesel CHAR(11) PRIMARY KEY, adres CHARACTER VARYING(100), wiek NUMERIC(2), wspolpraca_od DATE ); INSERT INTO klienci (pesel) VALUES (' '); INSERT INTO klienci (pesel) VALUES (' '); Ćwiczenie 7 - DDL (18) Slajd pokazuje rozwiązanie zadania (2), którego treść przytoczono poniżej. Utwórz relację KLIENCI o następujących atrybutach i ograniczeniach: PESEL Typ łańcuchowy o stałej długości (11 znaków). Klucz podstawowy (ograniczenie atrybutu). ADRES Typ łańcuchowy o zmiennej długości (max 100 znaków). WIEK Typ liczbowy, (max 2 cyfry). WSPOLPRACA_OD Typ reprezentujący datę. Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe klucz podstawowy. 18
19 Wartość unikalna 1 CREATE TABLE projekty ( numer NUMERIC(6) PRIMARY KEY, nazwa CHARACTER VARYING (100) UNIQUE, budzet NUMERIC(10,2), termin_zak DATE ); CREATE TABLE projekty ( 2 numer NUMERIC(6), nazwa CHARACTER VARYING (100), budzet NUMERIC(10,2), termin_zak DATE, CONSTRAINT un_nazwa UNIQUE (numer,nazwa) ); Ćwiczenie 7 - DDL (19) Ograniczenie integralnościowe wartość unikalna przypomina swoim działaniem ograniczenie klucz podstawowy. Żadna kombinacja wartości atrybutów wchodzących w skład ograniczenia nie może wystąpić w relacji więcej niż raz. Dopuszczalne jest jednak, aby wartości tych atrybutów przyjmowały wartości puste. Ograniczenie wartość unikalna jako ograniczenie atrybutu definiuje się podając słowo kluczowe UNIQUE po opisie atrybutu, którego dotyczy ograniczenie. Podobnie jak z każdym innym ograniczeniem, tutaj również można poprzedzić właściwą definicję ograniczenia słowem kluczowym CONSTRAINT i nazwą ograniczenia. Ograniczenie wartość unikalna jako ograniczenie relacji definiuje się podając, jako osobny wpis na liście atrybutów, (opcjonalnie) słowo kluczowe CONSTRAINT i nazwę ograniczenia, następnie słowo kluczowe UNIQUE i w nawiasach listę atrybutów, których dotyczy ograniczenie. Przykład (1) pokazuje sposób definicji ograniczenia wartość unikalna jako ograniczenia atrybutu. W tworzonej na tym przykładzie relacji ograniczenie nadano atrybutowi nazwa. Dzięki ograniczeniu, każdy projekt musi mieć inną nazwę, ale możliwe jest wstawienie kilku projektów o nazwie równej NULL. Przykład (2) pokazuje sposób definicji ograniczenia wartość unikalna jako ograniczenia relacji. W tworzonej na tym przykładzie relacji ograniczenie nadano parze atrybutów NUMER i NAZWA. Jak łatwo zauważyć, w tym przykładzie nadano ograniczeniu integralnościowemu nazwę UN_NAZWA. Dzięki temu ograniczeniu, żadna kombinacja wartości atrybutu NUMER i atrybutu NAZWA nie może się powtórzyć. Przykładowo, może wystąpić wiele krotek o wartości atrybutu NUMER równej 1, ale muszą one mieć różne NAZWY. Może również wystąpić wiele krotek o wartości atrybutu NAZWA równej System informatyczny dla dziekanatu, jednak wówczas muszą one mieć różne wartości na atrybucie NUMER. 19
20 Wyjątkiem jest tutaj sytuacja, w której krotka zawiera wartości NULL zarówno w atrybucie NUMER jak i atrybucie NAZWA. Takie krotki nie podlegają ograniczeniu i można wstawić ich dowolną liczbę. W przeciwieństwie do ograniczenia integralnościowego klucz podstawowy ograniczeń wartość unikalna można zdefiniować dowolną liczbę. 20
21 Zadanie (3) Utwórz relację UCZELNIE o następujących atrybutach i ograniczeniach: Nazwa ID_UCZELNI NAZWA ADRES BUDZET ZALOZONA Typ Liczbowy, (max 4 cyfry). Klucz podstawowy (ograniczenie relacji). Łańcuchowy o zmiennej długości (max 100 znaków). Wartość unikalna (ograniczenie relacji). Łańcuchowy o zmiennej długości (max 100 znaków) Liczbowy (max 10 cyfr, 2 po przecinku). Typ reprezentujący datę. Ćwiczenie 7 - DDL (21) Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe wartość unikalna. 21
22 Rozwiązanie (3) CREATE TABLE uczelnie ( id_uczelni NUMERIC(4), nazwa CHARACTER VARYING(100), adres CHARACTER VARYING(100), budzet NUMERIC (10,2), zalozona DATE, PRIMARY KEY(id_uczelni), UNIQUE(nazwa) ); INSERT INTO uczelnie (id_uczelni,nazwa) VALUES (10, PP'); INSERT INTO uczelnie (id_uczelni,nazwa) VALUES (20, PP'); Ćwiczenie 7 - DDL (22) Slajd pokazuje rozwiązanie zadania (3), którego treść przytoczono poniżej. Utwórz relację UCZELNIE o następujących atrybutach i ograniczeniach: ID_UCZELNI Typ liczbowy, (max 4 cyfry). Klucz podstawowy (ograniczenie relacji). NAZWA Łańcuchowy o zmiennej długości (max 100 znaków). Wartość unikalna (ograniczenie relacji). ADRES Łańcuchowy o zmiennej długości (max 100 znaków) BUDZET Liczbowy (max 10 cyfr, 2 po przecinku). ZALOZONA Typ reprezentujący datę. Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe wartość unikalna. 22
23 Wartość obowiązkowa 1 CREATE TABLE projekty ( numer NUMERIC(6) PRIMARY KEY, nazwa CHARACTER VARYING (100) UNIQUE NOT NULL, budzet NUMERIC(10,2) CONSTRAINT nn_budzet NOT NULL, termin_zak DATE NOT NULL ); Ćwiczenie 7 - DDL (23) Ograniczenie klucz podstawowy powodowało, że nie można było podać wartości NULL dla żadnego atrybutu wchodzącego w skład tego ograniczenia. Nie trzeba jednak definiować klucza podstawowego, aby wymusić podawanie wartości różnych od NULL. Istnieje również ograniczenie wartość obowiązkowa, z którym nie jest związane wymaganie unikalności wartości atrybutów. Ograniczenie wartość obowiązkowa można zdefiniować jedynie jako ograniczenie atrybutu podając słowa kluczowe NOT NULL za właściwą definicją atrybutu (opcjonalnie poprzedzając je nazwą). Przykład (1) na slajdzie pokazuje kolejną wersję relacji PROJEKTY, w której ograniczenie wartość obowiązkowa zdefiniowano dla atrybutów NAZWA, BUDZET i TERMIN_ZAK. Szczególnie interesującym przypadkiem jest tutaj ograniczenie atrybutu NAZWA. Jak łatwo zauważyć zdefiniowano tutaj dwa ograniczenia dla jednego atrybutu. W ogólności możliwe jest zdefiniowanie dowolnej liczby ograniczeń dla jednego atrybutu, dla każdego podając w razie konieczności nazwę. Drugą ciekawą rzeczą jest to, iż zdefiniowano tutaj ograniczenia UNIQUE i NOT NULL, co w efekcie ma takie samo działanie jak ograniczenie PRIMARY KEY. 23
24 Zadanie (4) Utwórz relację KSIAZKI o następujących atrybutach i ograniczeniach: Nazwa ID_KSIAZKI TYTUL AUTORZY CENA DATA_WYDANIA Typ Liczbowy, (max 10 cyfr). Klucz podstawowy (ograniczenie atrybutu). Łańcuchowy o zmiennej długości (max 100 znaków). Wartość obowiązkowa Łańcuchowy o zmiennej długości (max 100 znaków) Liczbowy (max 6 cyfr, 2 po przecinku). Typ reprezentujący datę. Ćwiczenie 7 - DDL (24) Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe wartość obowiązkowa. 24
25 Rozwiązanie (4) CREATE TABLE ksiazki ( id_ksiazki NUMERIC (10) PRIMARY KEY, tytul CHARACTER VARYING (100) NOT NULL, autorzy CHARACTER VARYING (100), cena NUMERIC (6,2), data_wydania DATE ); INSERT INTO ksiazki(id_ksiazki,tytul) VALUES (10,NULL); Ćwiczenie 7 - DDL (25) Slajd pokazuje rozwiązanie zadania (4), którego treść przytoczono poniżej. Utwórz relację KSIAZKI o następujących atrybutach i ograniczeniach: ID_KSIAZKI Typ liczbowy, (max 10 cyfr). Klucz podstawowy (ograniczenie atrybutu). TYTUL Typ łańcuchowy o zmiennej długości (max 100 znaków). Wartość obowiązkowa. AUTORZY Typ łańcuchowy o zmiennej długości (max 100 znaków). CENA Typ liczbowy (max 6 cyfr, 2 po przecinku). DATA_WYDANIA Typ reprezentujący datę. Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe wartość obowiązkowa. 25
26 Klucz obcy 1 CREATE TABLE projekty ( nazwa CHARACTER VARYING (100) PRIMARY KEY, budzet NUMERIC(10,2), termin_zak DATE, id_szefa NUMBER (4) REFERENCES pracownicy(id_prac) ); CREATE TABLE projekty ( nazwa CHARACTER VARYING (100) PRIMARY KEY, budzet NUMERIC(10,2), 2 termin_zak DATE, id_szefa NUMBER (4), FOREIGN KEY (id_szefa) REFERENCES pracownicy(id_prac) ); Ćwiczenie 7 - DDL (26) Dotychczas omówione ograniczenia integralnościowe dotyczyły tylko jednej relacji. Istnieje również ograniczenie integralnościowe pozwalające na definiowanie związków pomiędzy relacjami. Ograniczenie to nazywane jest kluczem obcym. Przypomnijmy sobie relacje ZESPOLY i PRACOWNICY. Obie relacje posiadają atrybut ID_ZESP. Atrybut ten, w relacji ZESPOLY, pozwala na jednoznaczną identyfikację zespołu. Jak się zapewne już Państwo domyślacie, jest to atrybut, który jest kluczem podstawowym tej relacji. W relacji PRACOWNICY, atrybut ID_ZESP określa jedynie numer zespołu, w którym zatrudniony jest pracownik. Zwróćcie Państwo uwagę na fakt, iż atrybut ten powinien przyjmować jedynie wartości, które występują w atrybucie ID_ZESP relacji ZESPOLY. Ponieważ atrybut ID_ZESP relacji PRACOWNICY powinien przyjmować jedynie wartości klucza podstawowego z innej relacji, nazywa się go kluczem obcym. W ogólności, możliwe jest powiązanie klucza obcego nie tylko z kluczem podstawowym innej relacji, ale także z atrybutami wchodzącymi w skład ograniczenia wartość unikalna. Zdefiniowanie ograniczenia integralnościowego klucz obcy dla jakiegoś zestawu atrybutów wiąże się wskazaniem klucza podstawowego/wartości unikalnych innej relacji, z którymi dany klucz obcy jest powiązany. Ograniczenie pilnuje, aby nigdy w atrybucie/atrybutach wchodzących w skład klucza obcego nie pojawiła się kombinacja wartości nie występująca w relacji z kluczem głównym/wartościami unikalnymi. Jedynym wyjątkiem jest sytuacja, kiedy dla jednego lub więcej atrybutów wchodzących w skład klucza obcego poda się wartości NULL. Taka kombinacja wartości nie musi występować w relacji z kluczem głównym/wartościami unikalnymi. W przykładowych relacjach PRACOWNICY i ZESPOLY, nie będzie możliwe wstawienie pracownika przydzielonego do zespołu, który nie istnieje (nie został wstawiony wcześniej do relacji ZESPOLY). 26
27 Ograniczenie atrybutu klucz obcy definiuje się podając za definicją atrybutu, którego dotyczy ograniczenie, słowo kluczowe REFERENCES, a następnie nazwę relacji z kluczem podstawowym/wartością unikalną i w nawiasie listę atrybutów tej relacji, która wchodzi w skład klucza podstawowego/wartości unikalnej. Ograniczenie relacji klucz obcy definiuje się podając słowa kluczowe FOREIGN KEY, następnie, w nawiasie, listę atrybutów wchodzących w skład klucza obcego, słowo kluczowe REFERENCES oraz nazwę relacji z kluczem podstawowym/wartościami unikalnymi i w nawiasie listę atrybutów tej relacji, która wchodzi w skład klucza podstawowego/wartości unikalnych. Ponieważ wartości atrybutów klucza obcego są porównywane z wartościami atrybutów klucza podstawowego/wartości unikalnej w takiej kolejności, jak podano je w definicji klucza obcego, należy zwrócić szczególną uwagę na odpowiednią kolejność. Przykład (1) przedstawiony na slajdzie definiuje ograniczenie atrybutu klucz obcy dla atrybutu ID_SZEFA wskazując na odpowiadający mu klucz podstawowy ID_PRAC w relacji PRACOWNICY. Przykład (2) definiuje taki sam klucz obcy, ale robi to definiując go jako ograniczenie relacji. W przykładzie tym na klucz obcy składa się tylko jeden atrybut, ale w ogólności można by podać większą ich liczbę. Ograniczenia klucz obcy definiowane tak, jak przedstawiono na slajdzie, spowodują, że: -nie będzie możliwe wstawienie projektu z szefem, który nie został wcześniej wprowadzony do relacji PRACOWNICY, -nie będzie możliwe usunięcie pracownika, który jest szefem jakiegoś projektu, -nie będzie możliwa zmiana identyfikatora pracownika, który jest szefem jakiegoś projektu. Zachowanie to można jednak zmienić. Odpowiednia składnia polecenia CREATE TABLE została opisana na kolejnym slajdzie. 27
28 Klucz obcy cd. 1 CREATE TABLE projekty ( nazwa CHARACTER VARYING (100) PRIMARY KEY, budzet NUMERIC(10,2), termin_zak DATE, id_szefa NUMBER (4) REFERENCES pracownicy(id_prac) ON DELETE SET NULL ); CREATE TABLE projekty ( nazwa CHARACTER VARYING (100) PRIMARY KEY, budzet NUMERIC(10,2), 2 id_szefa NUMBER (4), FOREIGN KEY (id_szefa) REFERENCES pracownicy(id_prac) ON DELETE CASCADE ); Ćwiczenie 7 - DDL (28) Metodę utrzymywania spójności bazy danych ze względu na ograniczenie integralnościowe klucz obcy można zmienić, dodając do definicji ograniczenia słowa kluczowe: - ON DELETE SET NULL usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy wartości NULL, - ON DELETE CASCADE. usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje usunięcie wszystkich krotek, które zawierają klucz obcy wskazujący na usuwaną krotkę, - ON DELETE SET DEFAULT usunięcie krotki z relacji z kluczem głównym/wartością unikalną spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy ich wartości domyślnych, - ON UPDATE SET NULL modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy wartości NULL, - ON UPDATE CASCADE modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy nowej wartości klucza podstawowego/wartości unikalnej, - ON UPDATE SET DEFAULT - modyfikacja wartości klucza podstawowego/wartości unikalnej w krotce spowoduje zapisanie do wskazujących na nią atrybutów tworzących klucz obcy ich wartości domyślnych. Dla każdego ograniczenia klucz obcy można zdefiniować jedno zachowanie dotyczące usuwania (ON DELETE) i jedno dotyczące modyfikacji (ON UPDATE) (w dowolnej kolejności). W SZBD Oracle zaimplementowano jak na razie jedynie ON DELETE SET NULL i ON DELETE CASCADE. 28
29 Rozważmy przykłady przedstawione na slajdzie. W przykładzie (1) zdefiniowano klucz obcy ID_SZEFA wskazujący na klucz podstawowy relacji pracownicy (ID_PRAC) i zmodyfikowano zachowanie tego ograniczenia dodając słowa kluczowe ON DELETE SET NULL. Dzięki temu możliwe będzie usunięcie z relacji PRACOWNICY szefa projektu. Jeżeli usuniemy szefa, to we wszystkich jego projektach atrybutowi ID_SZEFA zostanie przypisane NULL. W przykładzie (2) zdefiniowano klucz obcy ID_SZEFA wskazujący na klucz podstawowy relacji pracownicy (ID_PRAC) i zmodyfikowano zachowanie tego ograniczenia dodając słowa kluczowe ON DELETE CASCADE. Tutaj, usunięcie szefa spowoduje również usunięcie wszystkich jego projektów. 29
30 Zadanie (5) Utwórz relację POKOJE o następujących atrybutach i ograniczeniach: Nazwa NUMER_POKOJU ID_ZESP LICZBA_OKIEN Typ Liczbowy (max 3 cyfry). Klucz podstawowy (ograniczenie relacji). Liczbowy (max 2 cyfry). Klucz obcy wskazujący na klucz podstawowy relacji ZESPOLY (ograniczenie atrybutu). Liczbowy (max 1 cyfra). Ćwiczenie 7 - DDL (30) Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe klucz obcy. 30
31 Rozwiązanie (5) CREATE TABLE pokoje ( numer_pokoju NUMERIC (3), id_zesp NUMERIC (2) REFERENCES zespoly(id_zesp), liczba_okien NUMERIC(1), PRIMARY KEY (numer_pokoju) ); INSERT INTO pokoje(numer_pokoju,id_zesp) VALUES (123,90); Ćwiczenie 7 - DDL (31) Slajd pokazuje rozwiązanie zadania (5), którego treść przytoczono poniżej. Utwórz relację POKOJE o następujących atrybutach i ograniczeniach: NUMER_POKOJU Typ liczbowy (max 3 cyfry). Klucz podstawowy (ograniczenie relacji). ID_ZESP Typ liczbowy (max 2 cyfry). Klucz obcy wskazujący na klucz podstawowy relacji ZESPOLY (ograniczenie atrybutu). LICZBA_OKIEN Typ liczbowy (max 1 cyfra). Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe klucz obcy. 31
32 Ograniczenie domeny atrybutu 1 CREATE TABLE projekty ( numer NUMERIC(6) PRIMARY KEY, nazwa CHARACTER VARYING (100) UNIQUE, budzet NUMERIC(10,2) CHECK (budzet < ), termin_zak DATE ); 2 CREATE TABLE projekty ( numer NUMERIC(6) PRIMARY KEY, nazwa CHARACTER VARYING (100) UNIQUE, budzet NUMERIC(10,2) NOT NULL, termin_rozp DATE NOT NULL, termin_zak DATE NOT NULL, CHECK (termin_rozp<termin_zak) ); Ćwiczenie 7 - DDL (32) Ostatnim ograniczeniem integralnościowym, które można zdefiniować, jest ograniczenie domeny atrybutu. Jest nim warunek logiczny zdefiniowany na wartościach atrybutów krotki, który musi być zawsze spełniony. Ograniczenie domeny atrybutu jako ograniczenie atrybutu jest definiowane poprzez podanie, za opisem atrybutu, słowa kluczowego CONSTRAINT i nazwy ograniczenia (opcjonalnie), a następnie słowa kluczowego CHECK i w nawiasie warunku logicznego, który musi być spełniony przez wartość atrybutu. Ważne jest, aby warunek ten dotyczył tylko atrybutu, dla którego zdefiniowane jest ograniczenie. Ograniczenie domeny atrybutu jako ograniczenie relacji jest definiowane poprzez podanie słowa kluczowego CONSTRAINT i nazwy ograniczenia (opcjonalnie), a następnie słowa kluczowego CHECK i w nawiasie warunku logicznego, który muszą spełniać wartości atrybutów relacji. W przypadku ograniczenia relacji możliwe jest podawanie warunków dotyczących więcej niż jednego atrybutu relacji. Rozważmy przykłady na slajdzie. W przykładzie (1) zdefiniowano ograniczenie atrybutu ograniczające domenę atrybutu BUDZET do wartości liczbowych mniejszych niż W przykładzie (2) zdefiniowano ograniczenie relacji mówiące o tym, by termin rozpoczęcia projektu był mniejszy od terminu jego zakończenia. 32
33 Zadanie (6) Utwórz relację PLYTY_CD o następujących atrybutach i ograniczeniach: Nazwa KOMPOZYTOR TYTUL_ALBUMU DATA_NAGRANIA DATA_WYDANIA CZAS_TRWANIA! Typ Łańcuchowy (max 100 znaków). Wartość obowiązkowa. Łańcuchowy (max 100 znaków). Wartość obowiązkowa. Kombinacja wartości kompozytora i tytułu albumu musi być unikalna (nadaj ograniczeniu nazwę UN_KO_TY). Typ reprezentujący datę. Typ reprezentujący datę. Data nagrania musi być wcześniejsza niż data wydania (ograniczenie relacji). Typ reprezentujący okres czasu (INTERVAL). Czas musi być krótszy niż 82 minuty (ograniczenie atrybutu). Ćwiczenie 7 - DDL (33) Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe ograniczenie domeny atrybutu. (!) W zadaniu nakazano użyć typu INTERVAL. Normalnie należałoby użyć tutaj typu INTERVAL MINUTE(2) TO SECOND. Jeżeli do wykonywania ćwiczeń korzystacie państwo z SZBD Oracle, należy użyć tutaj bardziej ogólnego typu INTERVAL DAY TO SECOND, gdyż typ INTERVAL MINUTE TO SECOND nie jest wspierany. 33
34 Rozwiązanie (6) CREATE TABLE plyty_cd ( kompozytor CHARACTER VARYING (100) NOT NULL, tytul_albumu CHARACTER VARYING (100) NOT NULL, CONSTRAINT un_komp_album UNIQUE (kompozytor,tytul_albumu), data_nagrania DATE, data_wydania DATE, CHECK (data_nagrania<data_wydania), czas_trwania INTERVAL DAY TO SECOND, check(czas_trwania < INTERVAL '82:0' MINUTE(2) TO SECOND) ); Ćwiczenie 7 - DDL (34) Slajd pokazuje rozwiązanie zadania (6), którego treść przytoczono poniżej. Rozwiązanie jest kontynuowane na kolejnym slajdzie. Utwórz relację PLYTY_CD o następujących atrybutach i ograniczeniach: KOMPOZYTOR Typ łańcuchowy (max 100 znaków). Wartość obowiązkowa. TYTUL_ALBUMU Typ łańcuchowy (max 100 znaków). Wartość obowiązkowa. Kombinacja wartości kompozytora i tytułu albumu musi być unikalna (nadaj ograniczeniu nazwę UN_KO_TY). DATA_NAGRANIA Typ reprezentujący datę. DATA_WYDANIA Typ reprezentujący datę. Data nagrania musi być wcześniejsza niż data wydania (ograniczenie relacji). CZAS_TRWANIA Typ reprezentujący okres czasu (INTERVAL). Czas musi być krótszy niż 82 minuty (ograniczenie atrybutu). Po utworzeniu relacji spróbuj wstawić krotki naruszające ograniczenie integralnościowe ograniczenie domeny atrybutu. 34
35 Rozwiązanie (6) cd. INSERT INTO plyty_cd(kompozytor, tytul_albumu, data_nagrania, data_wydania, czas_trwania) VALUES ('Queen', 'Flash Gordon', DATE ' ', DATE ' ',INTERVAL '83:0' MINUTE(2) TO SECOND); Ćwiczenie 7 - DDL (35) 35
36 Tworzenie relacji przez podzapytanie 1 2 CREATE TABLE nazwa_relacji (nazwa_atrybutu [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr]..., nazwa_atrybutu [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr]...,... [ [CONSTRAINT nazwa_ogr] ograniczenie_rel,...] ) AS SELECT zapytanie; CREATE TABLE roczne_place (nazwisko PRIMARY KEY, etat, placa) AS SELECT nazwisko, etat, 12 * (placa_pod + NVL(placa_dod,0)) FROM pracownicy; Ćwiczenie 7 - DDL (36) Polecenie CREATE TABLE tworzące relację można rozbudować o możliwość podania zapytania, którego wyniki posłużą do wypełnienia nowo utworzonej relacji. W tej wersji polecenia CREATE TABLE, na liście atrybutów nie podajemy typów atrybutów, a jedynie wartości domyślne i ograniczenia integralnościowe. Zapytanie wypełniające relację jest podawane po słowie kluczowym AS za listą atrybutów. Jeżeli wynik zapytania nie spełnia ograniczeń integralnościowych zdefiniowanych na liście atrybutów, próba utworzenia relacji kończy się błędem. Ogólną składnię rozbudowanego polecenia przedstawiono na przykładzie (1). Ważne jest tutaj, aby liczba atrybutów w relacji wynikowej zapytania była taka sama jak liczba wyrażeń zdefiniowanych w klauzuli SELECT. Rozważmy przykład (2). Przykład ten przedstawia polecenie tworzące relację ROCZNE_PLACE z atrybutami NAZWISKO (z ograniczeniem klucz podstawowy ), ETAT i PLACA, i zapisujące do tej relacji wynik zapytania, które zwraca nazwisko, etat i roczną płacę wszystkich pracowników. Możliwe jest również pominięcie listy atrybutów i podanie tylko zapytania. Wówczas tworzona jest relacja z atrybutami o nazwach i typach takich jakie są zawarte w relacji wynikowej zapytania. Przykładowo, wersja polecenia z przykładu (2), w której nie definiuje się listy atrybutów wygląda następująco: CREATE TABLE roczne_place AS SELECT nazwisko, etat, 12 * (placa_pod + NVL(placa_dod,0)) as placa FROM pracownicy; Oczywiście, w tej wersji polecenia CREATE TABLE nie jest możliwe definiowanie ograniczeń integralnościowych. Możliwe jest jednak późniejsze ich dodanie za pomocą polecenia ALTER TABLE opisanego na kolejnych slajdach. 36
37 Zadanie (7) Utwórz relację zawierającą nazwisko szefa i nazwisko podwładnego, i wypełnij ją danymi (całość wykonaj za pomocą jednego polecenia). Ćwiczenie 7 - DDL (37) 37
38 Rozwiązanie (7) CREATE TABLE prac_szef (szef, podwladny) AS SELECT s.nazwisko, p.nazwisko FROM pracownicy s JOIN pracownicy p ON (s.id_prac=p.id_szefa); Ćwiczenie 7 - DDL (38) Slajd pokazuje rozwiązanie zadania (7), którego treść przytoczono poniżej. Utwórz relację zawierającą nazwisko szefa i nazwisko podwładnego, i wypełnij ją danymi (całość wykonaj za pomocą jednego polecenia). 38
39 Modyfikowanie schematu relacji 1 ALTER TABLE nazwa_relacji ADD [ nazwa typ(rozmiar) [DEFAULT wartość] ograniczenia CONSTRAINT nazwa typ ograniczenie ]; 2 ALTER TABLE nazwa_relacji MODIFY ( nazwa typ(rozmiar) [DEFAULT wartość] ograniczenia ); 3 ALTER TABLE nazwa_relacji DROP [ COLUMN ( nazwa ) CONSTRAINT ( nazwa ) ]; Ćwiczenie 7 - DDL (39) Polecenie ALTER TABLE pozwala na modyfikowanie relacji. Dzięki niemu możliwe jest dodawanie i usuwanie atrybutów i ograniczeń integralnościowych oraz modyfikowanie definicji atrybutu. Przykład (1) pokazuje składnię polecenia ALTER TABLE służącą do dodawania nowych atrybutów lub ograniczeń ntegralnościowych. Polecenie to rozpoczyna się od słów kluczowych ALTER TABLE, po których podaje się nazwę relacji, słowo kluczowe ADD i: albo definicję atrybutu (łącznie z ograniczeniami atrybutu), albo definicję ograniczenia relacji. Przykładowo, polecenie: ALTER TABLE pracownicy ADD numer_telefonu CHARACTER VARYING (20) CHECK (length(numer_telefonu)>6); spowoduje dodanie do relacji PRACOWNICY atrybutu typu łańcuchowego NUMER_TELEFONU, którego długość nie powinna być mniejsza niż 6 znaków. Z kolei polecenie: ALTER TABLE pracownicy ADD CONSTRAINT un_imie_nazwisko UNIQUE (imie,nazwisko); spowoduje dodanie do relacji PRACOWNICY ograniczenia relacji o nazwie UN_IMIE_NAZWISKO, którego celem jest zapewnienie unikalności każdej kombinacji imienia i nazwiska. Przykład (2) pokazuje składnię polecenia ALTER TABLE służącą do modyfikacji definicji atrybutu. Polecenie to rozpoczyna się od słów kluczowych ALTER TABLE, po których podaje się: nazwę relacji, słowo kluczowe MODIFY i nową definicję atrybutu. Ważne jest tutaj, aby atrybut, którego nazwę podaje się w definicji, znajdował się już w relacji. 39
40 Przykładowo, polecenie: ALTER TABLE pracownicy MODIFY imie CHARACTER VARYING (100) NOT NULL zmodyfikuje typ atrybutu IMIE relacji PRACOWNICY na CHARACTER VARYING (100) i nada mu ograniczenie atrybutu wartość obowiązkowa (NOT NULL). Przykład (3) pokazuje składnię polecenia ALTER TABLE służącą do usuwania atrybutu lub ograniczenia integralnościowego. Polecenie to rozpoczyna się od słów kluczowych ALTER TABLE, po których podaje się nazwę relacji, słowo kluczowe DROP i: albo słowo kluczowe COLUMN i nazwa atrybutu, albo słowo kluczowe CONSTRAINT i nazwa ograniczenia. Przykładowo, polecenie: ALTER TABLE pracownicy DROP CONSTRAINT fk_etat; spowoduje usunięcie ograniczenia integralnościowego o nazwie FK_ETAT. W relacji PRACOWNICY jest to nazwa ograniczenia klucz obcy wskazującego na atrybut o nazwie NAZWA w relacji ETATY. Polecenie: ALTER TABLE pracownicy DROP COLUMN imie; spowoduje usunięcie atrybutu IMIE z relacji PRACOWNICY. 40
41 Zadanie (8) Zmień ograniczenie wartość unikalna założone na atrybutach kompozytor i tytul_albumu relacji PLYTY_CD, na ograniczenie klucz podstawowy. W tym celu najpierw usuń ograniczenie wartość unikalna i załóż nowe ograniczenie: klucz podstawowy na tych samych atrybutach. Ćwiczenie 7 - DDL (41) 41
42 Rozwiązanie (8) ALTER TABLE plyty_cd DROP CONSTRAINT un_ko_ty; ALTER TABLE plyty_cd ADD CONSTRAINT pk_ko_ty PRIMARY KEY (kompozytor,tytul_albumu); Ćwiczenie 7 - DDL (42) Slajd pokazuje rozwiązanie zadania (8), którego treść przytoczono poniżej. Zmień ograniczenie wartość unikalna założone na atrybutach KOMPOZYTOR i TYTUL_ALBUMU relacji PLYTY_CD, na ograniczenie klucz podstawowy. W tym celu najpierw usuń ograniczenie wartość unikalna i załóż nowe ograniczenie: klucz podstawowy na tych samych atrybutach. 42
43 Zarządzanie ograniczeniami 1 ALTER TABLE relacja ENABLE [CONSTRAINT nazwa rodzaj] 2 ALTER TABLE pracownicy ENABLE CONSTRAINT fk_etat; 3 ALTER TABLE relacja DISABLE [CONSTRAINT nazwa rodzaj] 4 ALTER TABLE pracownicy DISABLE PRIMARY KEY; Ćwiczenie 7 - DDL (43) Ograniczenia integralnościowe można włączać i wyłączać za pomocą polecenia ALTER TABLE. Wyłączone ograniczenie nie jest w ogóle sprawdzane i mogą być do relacji wstawiane krotki niezgodne z tym ograniczeniem. Próba włączenia ograniczenia może zakończyć się błędem, jeżeli wstawione krotki nie spełniają tego ograniczenia. Przykład (1) pokazuje ogólną składnię polecenia ALTER TABLE pozwalającą na włączenie wcześniej wyłączonego ograniczenia. Polecenie rozpoczyna się od słów kluczowych ALTER TABLE, po których podaje się nazwę relacji, potem słowo kluczowe ENABLE i: albo słowo kluczowe CONSTRAINT i nazwę ograniczenia, albo rodzaj ograniczenia (np. PRIMARY KEY, UNIQUE). Przykład (2) pokazuje polecenie włączające ograniczenie o nazwie FK_ETAT. Przykład (3) demonstruje składnię polecenia ALTER TABLE pozwalającą na wyłączenie ograniczenia. Jest ona identyczna ze składnią pozwalającą na włączanie ograniczeń z tą jedną różnicą, że słowo kluczowe ENABLE zastąpiono słowem kluczowym DISABLE. Przykład (4) pokazuje polecenie wyłączające ograniczenie klucz podstawowy relacji PRACOWNICY. Jeżeli podczas tworzenia relacji nie zdefiniowano nazwy ograniczenia integralnościowego, to nazwa ta jest generowana automatycznie przez SZBD. Jeżeli nie znamy nazwy ograniczenia, to w każdym SZBD istnieje możliwość sprawdzenia, jakie ograniczenia integralnościowe są zdefiniowane dla danej relacji. Sposób odczytania listy nazw ograniczeń zależy od SZBD. W SZBD Oracle można ją odczytać z tzw. słownika bazy danych. Jest to zestaw relacji, które przechowują informacje o różnych aspektach pracy SZBD. Przykładowo, aby odczytać listę nazw ograniczeń, ich typów i, w przypadku ograniczenia integralnościowego ograniczenie domeny atrybutu warunku, można wykorzystać zapytanie: 43
44 SELECT constraint_name, constraint_type, search_condition FROM user_constraints WHERE table_name= NAZWA_RELACJI'; 44
45 Zadanie (9) Wyłącz ograniczenie klucz podstawowy założone na atrybutach kompozytor i tytul_albumu relacji PLYTY_CD. Wstaw krotki naruszające wyłączone ograniczenie. Spróbuj włączyć ograniczenie. Co się stało? Ćwiczenie 7 - DDL (45) 45
46 Rozwiązanie (9) ALTER TABLE plyty_cd DISABLE CONSTRAINT pk_ko_ty; INSERT INTO plyty_cd(kompozytor, tytul_albumu, data_nagrania, data_wydania, czas_trwania) VALUES ('Queen', 'Flash Gordon', DATE ' ', DATE ' ',INTERVAL '80:0' MINUTE(2) TO SECOND); INSERT INTO plyty_cd(kompozytor, tytul_albumu, data_nagrania, data_wydania, czas_trwania) VALUES ('Queen', 'Flash Gordon', DATE ' ', DATE ' ',INTERVAL '80:0' MINUTE(2) TO SECOND); ALTER TABLE plyty_cd ENABLE CONSTRAINT pk_ko_ty; Ćwiczenie 7 - DDL (46) Slajd pokazuje rozwiązanie zadania (9), którego treść przytoczono poniżej. Wyłącz ograniczenie klucz podstawowy założone na atrybutach kompozytor i tytul_albumu relacji PLYTY_CD. Wstaw krotki naruszające wyłączone ograniczenie. Spróbuj włączyć ograniczenie. Co się stało? 46
47 Zmiana nazwy i usuwanie relacji 1 RENAME stara_nazwa TO nowa_nazwa; 2 RENAME pracownicy TO zatrudnieni; 3 DROP TABLE nazwa_relacji [CASCADE CONSTRAINTS]; 4 DROP TABLE etaty CASCADE CONSTRAINTS; Ćwiczenie 7 - DDL (47) Ostatnimi poleceniami, jakie przedstawimy państwu na tych ćwiczeniach, są polecenia RENAME i DROP TABLE pozwalające odpowiednio na: zmianę nazwy relacji i usunięcie relacji. Przykład (1) pokazuje składnię polecenia RENAME. Polecenie to rozpoczyna się od słowa kluczowego RENAME, następnie podaje się nazwę modyfikowanej relacji, słowo kluczowe TO i nową nazwę relacji. Przykład (2) demonstruje użycie tego polecenia do zmiany nazwy relacji PRACOWNICY na nazwę ZATRUDNIENI. Przykład (3) pokazuje składnię polecenia DROP TABLE. Polecenie rozpoczyna się od słów kluczowych DROP TABLE, po których podaje się nazwę usuwanej relacji i opcjonalnie słowa kluczowe CASCADE CONSTRAINTS. CASCADE CONSTRAINTS oznacza, że usuwając relację należy również usunąć również wszystkie ograniczenia klucz obcy, które wskazują na atrybuty usuwanej relacji. W sytuacji, kiedy takie ograniczenia istnieją, ale w poleceniu DROP TABLE nie użyje się słów CASCADE CONSTRAINTS, to wykonanie polecenie kończy się błędem. Przykład (4) pokazuje użycie tego polecenia do usunięcia relacji ETATY. 47
48 Zadanie (10) Zmień nazwę relacji ZWIERZETA na GATUNKI, a potem ją usuń. Ćwiczenie 7 - DDL (48) 48
49 Rozwiązanie (10) RENAME zwierzeta TO gatunki; DROP TABLE gatunki; Ćwiczenie 7 - DDL (49) Slajd pokazuje rozwiązanie zadania (10), którego treść przytoczono poniżej. Zmień nazwę relacji ZWIERZETA na GATUNKI, a potem ją usuń. 49
50 Zadania 11.Utwórz relację PROJEKTY o następujących atrybutach i ograniczeniach: Nazwa ID_PROJEKTU OPIS_PROJEKTU DATA_ROZPOCZECIA DATA_ZAKONCZENIA FUNDUSZ Typ Liczbowy (max 4 cyfry). Klucz podstawowy. Łańcuchowy (max 20 znaków). Wartość obowiązkowa i unikalna. Typ reprezentujący datę. Domyślnie data systemowa Typ reprezentujący datę. Późniejsza niż data rozpoczęcia. Liczbowy (max 7 cyfr, w tym 2 po przecinku). Ćwiczenie 7 - DDL (50) 50
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji
Typy Oracle atrybutów relacji Typ NUMBER (1)
Tworzenie relacji polecenie CREATE TABLE Rozdział 6 Język definiowania danych DDL CREATE TABLE nazwa_relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr],
Typy Oracle atrybutów relacji Typ NUMBER (1)
Tworzenie relacji polecenie CREATE TABLE Rozdział 6 Język definiowania danych DDL CREATE TABLE nazwa_relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr],
Wykład 4. SQL praca z tabelami 1
Wykład 4 SQL praca z tabelami 1 Typy danych Typy liczbowe Typy całkowitoliczbowe Integer types - Typ INTEGER; 32-bitowa liczba ze znakiem z zakresu -2 31 do 2 31 1 - Typ SMALLINT; typ całkowity mniejszy
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.
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. 1 polecenie CREATE TABLE CREATE TABLE nazwa_relacji Tworzenie
Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do
Na dotychczasowych zajęciach zapoznaliście się Państwo z poleceniem SELECT pozwalającym ą na wykonywanie zapytań ń do bazy danych i odczytywanie danych zawartych w relacjach. Celem tego ćwiczenia jest
D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?
D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się
3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota
Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)
Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z
Tworzenie tabeli Np. create table nazwa_tab( \\stworzenie tabeli Id numer(4) constraint PRAC_PK primary key, \\ustawiamy klucz podst. Nazwisko varchar2(30), \\typ tekstowy 30 znaków Kwota number(10,2)
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania
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ń):
Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1
Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane
Wykład 8. SQL praca z tabelami 5
Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu
Ref. 7 - Język SQL - polecenia DDL i DML
Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość
SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska
SQL TECHNOLOGIE BAZ DANYCH Wykład 5: Język DDL i DML. SQL (ang. StructuredQueryLanguage) strukturalny język zapytań używany do tworzenia, modyfikowania relacyjnych baz danych oraz do umieszczania i pobierania
kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli
SPOOL moj_plik SPOOL OFF @ moj_ plik edit CREATE TABLE DESCRIBE ALTER TABLE RENAME DROP TABLE CONNECT CONNECT USER_NAME DISCONNECT EXIT zapisuje wszystkie wydane polecenia oraz ich wyniki do pliku moj_plik,
Bazy danych - Materiały do laboratoriów VIII
Bazy danych - Materiały do laboratoriów VIII dr inż. Olga Siedlecka-Lamch Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 23 kwietnia 2011 roku Polecenie COMMIT i ROLLBACK Polecenie
Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność
Odnawialne Źródła Energii I rok. Tutorial PostgreSQL
Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym
UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');
polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {
Instrukcja CREATE TABLE
Podstawy języka SQL 2 Instrukcja CREATE TABLE CREATE TABLE tabela (pole_1 typ [(rozmiar)] [NOT NULL] [indeks_1] [, pole_2 typ [(rozmiar)] [NOT NULL] [indeks_2] [,...]] [, CONSTRAINT indeks_wielopolowy
Bazy danych. Dr inż. Paweł Kasprowski
Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność
Autor: Joanna Karwowska
Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,
Bazy danych Ćwiczenia projektowe
Bazy danych Ćwiczenia projektowe Przygotował: Piotr Hajder Katedra Informatyki Stosowanej i Modelowania Wydział Inżynierii Metali i Informatyki Przemysłowej, AGH Agenda 01. Typy danych 02. Polecenia DDL
Aspekty aktywne baz danych
Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać
Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)
Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych
Ćwiczenie 6 - DML. Tworzenie, modyfikacja i usuwanie krotek. Podstawy poleceń COMMIT i ROLLBACK. Ćwiczenie 6 DML. Wymagania: Bazy Danych
Bazy Danych Ćwiczenie 6 - DML Tworzenie, modyfikacja i usuwanie krotek. Podstawy poleceń COMMIT i ROLLBACK. Ćwiczenie 6 DML Na dotychczasowych zajęciach zapoznaliście się Państwo z poleceniem SELECT pozwalającym
Język SQL. Rozdział 8. Język manipulowania danymi DML
Język SQL. Rozdział 8. Język manipulowania danymi DML Wstawianie danych i polecenie INSERT, modyfikowanie danych i polecenie UPDATE, usuwanie danych i polecenie DELETE, połączenia modyfikowalne, sekwencje.
I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE
Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy
PRZESTRZENNE BAZY DANYCH WYKŁAD 2
PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,
Projektowanie Baz Danych GiG-2-KG Ćw. 5. Podstawy języka SQL
Podstawy języka SQL Język SQL (ang. Structured Query Language) jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do systemu zarządzania bazą danych (SZBD). Język SQL jest językiem deklaratywnym.
Język SQL, zajęcia nr 1
Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze
Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach
Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym. Modele - konceptualne reprezentacja obiektów w
CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy
Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.
Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny
Projektowanie systemów baz danych
Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do
Wprowadzenie do projektowania i wykorzystania baz danych Relacje
Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR
Widok Connections po utworzeniu połączenia. Obszar roboczy
Środowisko pracy 1. Baza danych: Oracle 12c - Serwer ELARA - Konta studenckie, dostęp także spoza uczelni - Konfiguracja: https://e.piotrowska.po.opole.pl/index.php?option=conf 2. Środowisko: SQL Developer
Wykład 5. SQL praca z tabelami 2
Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,
Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.
Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne. 1 Perspektywa Perspektywa (ang. view) jest strukturą
Wykład 05 Bazy danych
Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o
Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1
Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie
Bazy danych 7. SQL podstawy
Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny
Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.
Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane. 1 Perspektywa Perspektywa (ang. view) jest strukturą logiczną
SQL - DDL. 1 Tabele systemowe. 2 Typy danych
SQL - DDL DDL (ang. data definition language) jest częścią języka zapytań SQL obejmująca tworzenie i zarządzanie (modyfikację, usuwanie i przydzielanie uprawnień) obiektami w bazie danych (tabelami, perspektywami,
strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych
SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych
Zarządzanie bazą danych za pomocą poleceń języka SQL*Plus
Katedra Informatyki i Automatyki Politechnika Rzeszowska Zarządzanie bazą danych za pomocą poleceń języka SQL*Plus C5.I. Wprowadzenie C5.I.1 Ogólna charakterystyka i uruchomienie systemu Język SQL jest
Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1
Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych
Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie
Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną
Wykład 2. SQL 1 Structured Query Lenguage
Wykład 2 SQL 1 Structured Query Lenguage SQL (Structured Query Language) Język zapytań do bazy danych. IBM lata osiemdziesiąte. Stosowany w systemach zarządzania bazami danych (DBMS); Oracle, Paradox,Access,
Tworzenie baz danych i tabel
Tworzenie baz danych i tabel Wprowadzenie SQL (ang. Structured Query Language strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych.
Transformacja modelu ER do modelu relacyjnego
Transformacja modelu ER do modelu relacyjnego Wykład przygotował: Robert Wrembel BD wykład 4 (1) 1 Plan wykładu Transformacja encji Transformacja związków Transformacja hierarchii encji BD wykład 4 (2)
Wykład 6. SQL praca z tabelami 3
Wykład 6 SQL praca z tabelami 3 Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1
SQL w praktyce. Miłej i owocnej nauki!!!
SQL w praktyce Niniejsza praca objęta jest prawami autorskimi. Nielegalne jest kopiowanie żadnej częsci tej pracy w żadnej postaci. Niezgodne z prawem tym bardziej jest udostępnianie innym tej pracy odpłatnie
Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska
Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion Autor: Joanna Karwowska SQL zapewnia obsługę: zapytań - wyszukiwanie danych w bazie, operowania danymi - wstawianie, modyfikowanie
2010-10-21 STANDARDY JĘZYKA SQL CECHY JĘZYKA SQL WADY I ZALETY
PLAN WYKŁADU BAZY DANYCH Wykład 3,4 dr inż. Agnieszka Bołtuć Definicja, historia, cechy SQL Standardy SQL Formy i podzbiory SQL Typy danych Składnia DML DDL DCL Perspektywy Definicja dziedziny, asercja
SQL Structured Query Language
SQL Structured Query Language stworzony na początku lat 70 ubiegłego wieku w IBM przez Donalda Messerly'ego, Donalda Chamberlina oraz Raymonda Boyce'a pod nazwą SEQUEL pierwszy SZBD System R utworzony
Podstawy języka SQL. SQL Structured Query Languagestrukturalny
Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych
SIECI KOMPUTEROWE I BAZY DANYCH
KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB1, DB2: TEMAT: Wprowadzenie do SQL. Praca z pojedyncza
Administracja i programowanie pod Microsoft SQL Server 2000
Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Typy danych wbudowane użytkownika Tabele organizacja wiersza przechowywanie dużych danych automatyczne
Obiektowe bazy danych Ćwiczenia laboratoryjne (?)
Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Tworzenie typów obiektowych 1. Zdefiniuj typ obiektowy reprezentujący SAMOCHODY. Każdy samochód powinien mieć markę, model, liczbę kilometrów oraz datę
Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.
Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna
P o d s t a w y j ę z y k a S Q L
P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p
Bazy danych. Polecenia SQL
Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony
Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych
Projektowanie bazy danych Jarosław Kuchta Projektowanie Aplikacji Internetowych Możliwości projektowe Relacyjna baza danych Obiektowa baza danych Relacyjno-obiektowa baza danych Inne rozwiązanie (np. XML)
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1 Bazy Danych Instrukcja laboratoryjna Temat: Obsługa bazy danych za pomocą phpmyadmin oraz phppgadmin 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do phpmyadmin oraz phppgadmin
Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE
Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1 INSERT Instrukcja INSERT dodawanie
Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:
Bazy danych. Komunikacja z serwerem Aby połączyć się z serwerem i móc wykonywać czynności związane z obsługą baz, potrzebny jest program klienta. Razem z serwerem MySQL dostępny jest działający w wierszu
Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:
Zbiór pytań nr 2 1 Tabela DEPARTMENTS ma następującą strukturę: Nazwa kolumny Typ danych Uwagi dept_id NUMBER(4) NOT NULL, PRIMARY KEY dept_name VARCHAR2(30) mgr_id NUMBER(6) location_id NUMBER(4) Które
Przestrzenne bazy danych Podstawy języka SQL
Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured
Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli
Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa Studia Podyplomowe dla Nauczycieli Bazy danych SQL Języki baz danych Interfejs DBMS składa się
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 laboratorium 3 tworzenie, modyfikacje i usuwanie tabel, operacje na danych Cel Stworzenie w ramach bazy danych Biblioteka nowych tabel według specyfikacji (CREATE TABLE Ustawianie właściwości
Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni
Akademia Morska w Gdyni Gdynia 2004 1. Podstawowe definicje Baza danych to uporządkowany zbiór danych umożliwiający łatwe przeszukiwanie i aktualizację. System zarządzania bazą danych (DBMS) to oprogramowanie
DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];
Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server
Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML
Procedury wyzwalane Rozdział 13 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie
Język SQL. Rozdział 2. Proste zapytania
Język SQL. Rozdział 2. Proste zapytania Polecenie SELECT, klauzula WHERE, operatory SQL, klauzula ORDER BY. 1 Wprowadzenie do języka SQL Język dostępu do bazy danych. Język deklaratywny, zorientowany na
Wykład 3 2014-04-25 12:45 BD-1 W_3
Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25
Bazy danych 6. Klucze obce. P. F. Góra
Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:
Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:
Język SQL (Structured Query Language} służy do manipulowania danymi umieszczonymi w relacyjnych bazach danych. Jest językiem uniwersalnym, dzięki czemu praca na różnych systemach baz danych sprowadza się
Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)
Laboratorium nr 8 Temat: Podstawy języka zapytań SQL (część 2) PLAN LABORATORIUM: 1. Sortowanie. 2. Warunek WHERE 3. Eliminacja powtórzeń - DISTINCT. 4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. 5.
ACESS- zadania z wykorzystaniem poleceń SQL
ACESS- zadania z wykorzystaniem poleceń SQL Dane są relacje o schematach: Pracownik ( (nr integer, nazwisko text(12), etat text(10), szef integer, pracuje_od date, placa_pod Currency, placa_dod Currency,
Język SQL. Rozdział 3. Funkcje wierszowe
Język SQL. Rozdział 3. Funkcje wierszowe Funkcje wierszowe (funkcje znakowe, funkcje liczbowe, funkcje operujące na datach, funkcje konwersji, funkcje polimorficzne). 1 Funkcje Przekształcają dane, pobrane
Bloki anonimowe w PL/SQL
Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia
Język PL/SQL. Rozdział 6. Procedury wyzwalane
Język PL/SQL. Rozdział 6. Procedury wyzwalane Procedury wyzwalane, cele stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie
Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)
Bazy danych wykład szósty Więzy i wyzwalacze Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa szósty Więzy i wyzwalacze 1 / 35 Wstęp Wiemy jak nakładać pewne ograniczenia (więzy) w
Bazy Danych i Usługi Sieciowe
Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z
Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika
Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued
Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe
Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE
SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek
SELECT SELECT kolumna1, kolumna2,, kolumnan FROM tabela wybrane kolumny SELECT * FROM tabela wszystkie kolumny select * from Orders select CustomerID, CompanyName, Country from Customers WHERE SELECT *
Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych
Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł
Bazy danych i usługi sieciowe
Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z
Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.
Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie
WPROWADZENIE DO JĘZYKA SQL
J.NAWROCKI, M. ANTCZAK, H. DWIEK, W. FROHMBERG, A. HOFFA, M. KIERZYNKA, S. WĄSIK WPROWADZENIE DO JĘZYKA SQL KORZYSTANIE Z SQLITE 1) Pobierz paczkę z bazą danych ze strony prowadzącego (np. http://www.cs.put.poznan.pl/wfrohmberg/download/sqlite.zip)
Bazy danych - wykład wstępny
Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,
SQL Structured Query Language
Terminy, określenia: Relacja tabela Krotka wiersz ( rekord ) Atrybut kolumna (pole ) Stopień relacji liczba atrybutów Klucz główny relacji jednoznaczny identyfikator krotki Dziedzina zbiór dopuszczalnych
Język SQL, zajęcia nr 2
Język SQL, zajęcia nr 2 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Funkcja agregująca
Laboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe
Funkcje Rozdział 3a Funkcje wierszowe Funkcje wierszowe (funkcje znakowe, funkcje liczbowe, funkcje operujące na datach, funkcje konwersji, funkcje polimorficzne) Przekształcają dane, pobrane przez polecenie