Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.

Podobne prezentacje


Prezentacja na temat: "Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu."— Zapis prezentacji:

1 Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu zawierającego algebrę relacyjną i rachunek relacji. Ogólnie system zarządzania relacyjną bazą danych: Reprezentuje całą informację z bazie danych za pomocą tabel. Reprezentuje całą informację z bazie danych za pomocą tabel. Wspiera trzy podstawowe operacje relacyjne: wybór (selekcja, ang. selection), rzutowanie (projekcja, ang. projection) i złączanie (ang. join). Wspiera trzy podstawowe operacje relacyjne: wybór (selekcja, ang. selection), rzutowanie (projekcja, ang. projection) i złączanie (ang. join). Szczegółowe wymagania określa dwanaście tzw. praw Codda.

2 Między innymi system w pełni relacyjny musi: Reprezentować całą informację zawartą w bazie w postaci tabel. Reprezentować całą informację zawartą w bazie w postaci tabel. Utrzymywać niezależność logicznej reprezentacji danych od fizycznego sposobu ich przechowywania. Utrzymywać niezależność logicznej reprezentacji danych od fizycznego sposobu ich przechowywania. Używać języka wysokiego poziomu w celu strukturalizacji, wyszukiwania i zmiany informacji w bazie danych. Używać języka wysokiego poziomu w celu strukturalizacji, wyszukiwania i zmiany informacji w bazie danych. Wspierać podstawowe operacje relacyjne i takie operacje teorii zbiorów, jak suma, przecięcie, różnica i dzielenie. Wspierać podstawowe operacje relacyjne i takie operacje teorii zbiorów, jak suma, przecięcie, różnica i dzielenie. Wspierać perspektywy umożliwiające użytkownikowi określenie alternatywnych sposobów oglądania danych w tabelach. Wspierać perspektywy umożliwiające użytkownikowi określenie alternatywnych sposobów oglądania danych w tabelach. Dostarczać metodę pozwalającą odróżniać wartości nieznane (null) od zera lub miejsca niewypełnionego. Dostarczać metodę pozwalającą odróżniać wartości nieznane (null) od zera lub miejsca niewypełnionego. Wspierać mechanizmy zapewniające spójność, prawa dostępu, transakcje i odzyskiwanie danych. Wspierać mechanizmy zapewniające spójność, prawa dostępu, transakcje i odzyskiwanie danych.

3 Postulaty Codda dla relacyjnej bazy danych (1985 rok) 1. Postulat informacyjny: na poziomie logicznym dane są reprezentowane wyłącznie za pomocą tabel. 2. Postulat dostępu: do każdej pojedynczej danej jest dostęp za pomocą tabel, kolumn i wartości kluczy głównych. 3. Postulat wartości null: w systemie jest dostępna specjalna wartość reprezentująca wartość brakującą, nieokreśloną lub nieznaną; jest to wartość różna od wszystkich konkretnych wartości, jak np. pusty napis lub zero.

4 4. Postulat słownika danych: informacje o obiektach bazy danych tworzących jej schemat są na poziomie logicznym zgrupowane w tabele, które są dostępne w taki sam sposób, jak każde inne dane. 5. Postulat pełnego języka danych: w systemie jest zaimplementowany pełny język obejmujący definiowanie danych, perspektyw, więzów spójności, operowanie danymi (interaktywne lub przez program), nadawanie uprawnień użytkownikom, transakcje. Postulaty Codda dla relacyjnej bazy danych (1985 rok)

5 6. Postulat modyfikowania bazy danych przez perspektywy: system umożliwia modyfikowanie danych za pomocą perspektyw, w przypadku gdy taka modyfikacja jest semantycznie sensowna. 7. Postulat modyfikowania danych na wysokim poziomie abstrakcji: system umożliwia modyfikowanie danych za pomocą operacji, których argumentami są tabele (perspektywy), a więc w szczególności nie tylko w sposób nawigacyjny. 8. Fizyczna niezależność danych: zmiany w metodach przechowywania danych i dostępu do nich nie mają wpływu na aplikacje. Postulaty Codda dla relacyjnej bazy danych (1985 rok)

6 9. Logiczna niezależność danych: zmiany w tabelach zachowujące informacje i dopuszczalne semantycznie nie mają wpływu na aplikacje. 10. Niezależność więzów spójności: więzy spójności są definiowane w języku bazy danych (nie muszą być wyrażane w aplikacji). Postulaty Codda dla relacyjnej bazy danych (1985 rok)

7 11. Niezależność dystrybucyjna: system (i jego język) umożliwiają używanie danych zapisanych w różnych fizycznie miejscach (w różnych węzłach sieci). 12. Zabezpieczenie przed operacjami na niższych poziomach abstrakcji: jeżeli system umożliwia operacje na niższych poziomach abstrakcji, nie mogą one naruszać relacyjnego modelu danych (w tym pomijać ograniczeń określonych przez więzy spójności). Postulaty Codda dla relacyjnej bazy danych (1985 rok)

8 Postulat 1. Model relacyjny - wszystko jest tabelą Tabela podzielona jest na poziome wiersze i pionowe kolumny. Alternatywne pojęcia (niemal synonimy): Tabela – relacja – plik. Tabela – relacja – plik. Wiersz – krotka (wystąpienie encji) – rekord. Wiersz – krotka (wystąpienie encji) – rekord. Kolumna – atrybut (właściwość) – pole. Kolumna – atrybut (właściwość) – pole.

9 Zbiór powiązanych ze sobą tabel to baza danych. Tabela to zbiór wierszy, czyli wystąpień encji. Encje charakteryzują własności, czyli wartości w poszczególnych kolumnach. W relacyjnej bazie danych występują dwa rodzaje tabel: Tabele użytkownika. Tabele użytkownika. Tabele systemowe (katalog, słownik systemu) – czwarte prawo Codda. Tabele systemowe (katalog, słownik systemu) – czwarte prawo Codda. Postulat 1.

10 Postulat 3. Wartość nieokreślona (null) Wartość null (rozwiązanie problemu brakującej informacji) oznacza brak danej (jest ona nieznana lub nie wprowadzona). Stosowanie null zmienia tradycyjną logikę dwuwartościową (tak/nie) na logikę trójwartościową (tak/nie/być może) – stanowi integralną część standardu języka SQL. Stosowanie null zmienia tradycyjną logikę dwuwartościową (tak/nie) na logikę trójwartościową (tak/nie/być może) – stanowi integralną część standardu języka SQL.

11 Postulat 5. Język wysokiego poziomu System relacyjny wymaga pełnego podjęzyka danych (np. SQL). Zakres zastosowań pełnego podjęzyka danych: Operowanie danymi (wyszukiwanie i modyfikowanie). Operowanie danymi (wyszukiwanie i modyfikowanie). Definiowanie danych. Definiowanie danych. Administrowanie danymi. Administrowanie danymi. Każda operacja języka wyrażona jest instrukcją lub poleceniem. Operacje wyszukiwanie nazywane są często zapytaniami.

12 SQL jako podjęzyk danych Język SQL jest językiem nieproceduralnym, tzn. pozwala na określenie warunków, jakie ma spełniać wynik bez podawania szczegółów dotyczących sposobu realizacji. Operacje wyszukiwania powodują utworzenie i wyprowadzenie tabel wynikowych zwanych tabelami wyprowadzanymi na podstawie tabel bazowych zawierających surowe dane. Operacje relacyjne: Rzutowanie – wybór kolumn (określa podzbiór kolumn). Rzutowanie – wybór kolumn (określa podzbiór kolumn). Wybór – wybór wierszy (określa podzbiór wierszy). Wybór – wybór wierszy (określa podzbiór wierszy). Złączanie – utworzenie jednej tabeli wynikowej na podstawie kilku tabel bazowych. Złączanie – utworzenie jednej tabeli wynikowej na podstawie kilku tabel bazowych.

13 Postulat 6. Różne sposoby oglądania danych Perspektywa (tabela wirtualna, tabela pochodna) – tabela utworzona na podstawie jednej lub kilku tabel bazowych, która umożliwia inny, alternatywny sposób przeglądania danych. Dane oglądane w perspektywie nie są zapamiętane w ten sposób w bazie danych (nie jest ona kopią danych). Zmiana danych w perspektywie powoduje (zwykle) ich modyfikację w rzeczywistości (prawo Codda).

14 Postulat 7. Bezpieczeństwo sprowadza się do kontroli kto używa jakich danych i w jakiem celu. Podjęzyk danych powinien umożliwić realizację tej kontroli. Poziom kontroli zależy od SZBD (na poziomie baz danych, tabel, kolumn, wierszy). Rodzaje użytkowników: Zwykły użytkownik (użytkownik) – prawa wynikające z nadanych mu uprawnień. Zwykły użytkownik (użytkownik) – prawa wynikające z nadanych mu uprawnień. Użytkownik uprzywilejowany – właściciel baz danych lub obiektów bazodanowych (osoba tworząca te obiekty). Użytkownik uprzywilejowany – właściciel baz danych lub obiektów bazodanowych (osoba tworząca te obiekty). Administrator systemu (administrator bazy danych). Administrator systemu (administrator bazy danych).

15 Postulat 8. i 9. Niezależność danych Niezależność danych jest celem SZBD w modelu relacyjnym. Poziomy niezależności: Fizyczna niezależność danych (reprezentacja danych widziana przez użytkownika jest całkowicie niezależna od fizycznego sposobu pamiętania danych – wydzielenie metod dostępu). Fizyczna niezależność danych (reprezentacja danych widziana przez użytkownika jest całkowicie niezależna od fizycznego sposobu pamiętania danych – wydzielenie metod dostępu). Logiczna niezależność danych (reprezentacja danych widziana przez użytkownika jest niezależna od programów użytkowych). Logiczna niezależność danych (reprezentacja danych widziana przez użytkownika jest niezależna od programów użytkowych).

16 Postulat 10. Spójność (integralność) to poprawność danych w bazie danych. Ograniczenia (tzw. więzy) dotyczące spójności powinny być definiowane w tym samym podjęzyku danych, co reszta systemu i zapamiętane w słowniku bazy danych (prawo Codda). Metody zapewnienia spójności: Zarządzanie transakcjami – polecenie podjęzyka danych musi być wykonane w całości, albo wcale (żadna jego część). Zarządzanie transakcjami – polecenie podjęzyka danych musi być wykonane w całości, albo wcale (żadna jego część). Spójność encji – ograniczenia dziedziny, ograniczenia na wartości klucza głównego, dodatkowe warunki. Spójność encji – ograniczenia dziedziny, ograniczenia na wartości klucza głównego, dodatkowe warunki. Spójność odwołań – zgodność fragmentów informacji powtarzających się w kilku tabelach. Spójność odwołań – zgodność fragmentów informacji powtarzających się w kilku tabelach. Dodatkowe ograniczenia (np. wyzwalacze). Dodatkowe ograniczenia (np. wyzwalacze).

17 SQL Strukturalny (Standardowy) Język Zapytań

18 Składnia języka SQL Uwagi dotyczące konwencji składniowej SQL: SQL jest językiem o formacie swobodnym (brak wymagań na liczbę wierszy składających się na polecenie i liczby słów w wierszu oraz miejsca rozpoczęcia i zakończenia polecenia). SQL jest językiem o formacie swobodnym (brak wymagań na liczbę wierszy składających się na polecenie i liczby słów w wierszu oraz miejsca rozpoczęcia i zakończenia polecenia). Słowa kluczowe języka można zazwyczaj pisać małymi i dużymi literami (przeważnie są nierozróżnialne w tym przypadku). Słowa kluczowe języka można zazwyczaj pisać małymi i dużymi literami (przeważnie są nierozróżnialne w tym przypadku). Identyfikatory stałych, zmiennych i obiektów bazodanowych nadawane przez użytkownika muszą spełniać zwykle bardzo różne ograniczenia narzucone przez poszczególne SZBD (np. długość, dopuszczalne znaki, rozróżnianie małych i dużych liter – zazwyczaj w tym miejscu są rozróżnialne). Identyfikatory stałych, zmiennych i obiektów bazodanowych nadawane przez użytkownika muszą spełniać zwykle bardzo różne ograniczenia narzucone przez poszczególne SZBD (np. długość, dopuszczalne znaki, rozróżnianie małych i dużych liter – zazwyczaj w tym miejscu są rozróżnialne).

19 Uwagi dotyczące konwencji składniowej SQL (cd): Polecenia mogą posiadać dodatkowe opcje, z których musi być wybrana jedna ({opcja1/opcja2/...}), czy musi być wybrana jedna lub więcej niż jedna ({opcja1, opcja2,..}), ewentualnie może być wybrana jedna lub wcale ([opcja1/opcja2/...]), czy może być wybrana jedna, więcej niż jedna lub wcale ([opcja1, opcja2,...]) –nawiasy klamrowe i kwadratowe nie są częścią składni języka. Polecenia mogą posiadać dodatkowe opcje, z których musi być wybrana jedna ({opcja1/opcja2/...}), czy musi być wybrana jedna lub więcej niż jedna ({opcja1, opcja2,..}), ewentualnie może być wybrana jedna lub wcale ([opcja1/opcja2/...]), czy może być wybrana jedna, więcej niż jedna lub wcale ([opcja1, opcja2,...]) –nawiasy klamrowe i kwadratowe nie są częścią składni języka. Nawiasy okrągłe są częścią składni języka SQL. Nawiasy okrągłe są częścią składni języka SQL. Instrukcja SQL wymaga użycia znaku końca (zazwyczaj średnik). Instrukcja SQL wymaga użycia znaku końca (zazwyczaj średnik). Składnia języka SQL

20 Tworzenie bazy danych Tworzenie bazy danych wymaga najpierw utworzenia schematu bazy danych (zawiera np. szkielet tabel systemowych), który nie jest wypełniony danymi – w niektórych SZBD operacja ta jest zarezerwowana dla administratora. Tworzenie i używanie baz danych wymaga: Utworzenia (inicjalizacji) bazy danych. Utworzenia (inicjalizacji) bazy danych. Utworzenia tabel wewnątrz bazy danych. Utworzenia tabel wewnątrz bazy danych. Wypełnienia tabel (pracy z tabelami). Wypełnienia tabel (pracy z tabelami).

21 Utwórz (schemat) bazę danych (ewentualnie dodatkowe opcje) CREATE DATABASE nazwa_bazy_danych; CREATE DATABASE nazwa_bazy_danych; CREATE SCHEMA nazwa_bazy_danych; CREATE SCHEMA nazwa_bazy_danych;przykład CREATE DATABASE Firma; CREATE DATABASE Firma; Tworzenie bazy danych

22 Wybierz (domyślną) bazę danych USE nazwa_bazy_danych; USE nazwa_bazy_danych; DATABASE nazwa_bazy_danych; DATABASE nazwa_bazy_danych;przykład USE Firma; USE Firma; Używanie bazy danych

23 Pokaż dostępne bazy danych SHOW DATABASES; SHOW DATABASES; Usuń bazę danych DROP nazwa_bazy_danych; DROP nazwa_bazy_danych;przykład DROP Firma; DROP Firma; Używanie bazy danych

24 Praca z konkretną bazą danych wymaga deklaracji jej użycia. Niekiedy w niektórych SZBD praca z bazą danych będzie wymagała połączenia się z nią przy pomocy polecenia CONNECT. Pełne prawa do bazy danych posiada jej właściciel, czyli osoba, która ją utworzyła (dodatkowo także administrator systemu). Używanie bazy danych

25 Tworzenie tabeli Tworzenie tabeli co najmniej obejmuje: Nadanie nazwy tabeli. Nadanie nazwy tabeli. Nadanie nazw kolumnom tworzącym tabelę. Nadanie nazw kolumnom tworzącym tabelę. Określenie typu danych dla każdej kolumny. Określenie typu danych dla każdej kolumny. Określenie statusu NULL (dopuszczenie lub zakazanie wartości nieokreślonej) dla każdej kolumny – w różnych SZBD różnie przyjmuje się wartość domyślą tego statusu (NULL/NOT NULL). Określenie statusu NULL (dopuszczenie lub zakazanie wartości nieokreślonej) dla każdej kolumny – w różnych SZBD różnie przyjmuje się wartość domyślą tego statusu (NULL/NOT NULL). Wprowadzenie danych. Wprowadzenie danych.

26 Tworzenie tabeli Dodatkowe możliwości przy tworzeniu tabeli: Określenie wartości domyślnych (DEFAULT) przyjmowanych automatycznie, gdy nic nie zostanie wprowadzone. Określenie wartości domyślnych (DEFAULT) przyjmowanych automatycznie, gdy nic nie zostanie wprowadzone. Określenie więzów ograniczających dopuszczalne wartości wprowadzane do poszczególnych kolumn. Określenie więzów ograniczających dopuszczalne wartości wprowadzane do poszczególnych kolumn. Określenie więzów definiujących kolumnę jako klucz główny, klucz jednoznaczny, lub oba klucze jednocześnie. Określenie więzów definiujących kolumnę jako klucz główny, klucz jednoznaczny, lub oba klucze jednocześnie. Ustanowienie więzów sprawdzających zależności między kluczami głównymi i obcymi. Ustanowienie więzów sprawdzających zależności między kluczami głównymi i obcymi.

27 Tworzenie tabeli Typ danych określa rodzaj informacji przechowywanej w danej kolumnie (także charakter możliwych do wykonania operacji). Systemy relacyjne mogą obsługiwać wiele (ograniczoną liczbę) typów danych. W różnych SZBD typy danych mogą być różne. SZBD udostępnia funkcje konwersji danych do innego typu (w ograniczonym zakresie). Wybór długości i typu danych jest istotny z punktu widzenia wykonywanych operacji oraz zajmowanej pamięci (preferowane typy danych o zmiennej długości). Wybór precyzji i skali zależy od charakteru wykonywanych operacji.

28 Rodzaje typów danych: Znakowe (napisowe) typy danych – ciąg znaków o stałej lub zmiennej długości, przy odwoływaniu umieszczany w pojedynczych apostrofach. Niektóre SZBD udostępniają znakowe narodowe typy danych oraz osobny typ znakowy do przechowywania dużej ilości tekstu; przykłady identyfikatorów: Znakowe (napisowe) typy danych – ciąg znaków o stałej lub zmiennej długości, przy odwoływaniu umieszczany w pojedynczych apostrofach. Niektóre SZBD udostępniają znakowe narodowe typy danych oraz osobny typ znakowy do przechowywania dużej ilości tekstu; przykłady identyfikatorów: CHAR(N) – łańcuch znaków o stałej długości N. CHAR(N) – łańcuch znaków o stałej długości N. VARCHAR(N) – łańcuch znaków o zmiennej długości N. VARCHAR(N) – łańcuch znaków o zmiennej długości N. TEXT, LONGTEXT – odpowiednio krótki lub długi łańcuch tekstu. TEXT, LONGTEXT – odpowiednio krótki lub długi łańcuch tekstu. Tworzenie tabeli

29 Rodzaje typów danych (cd): Binarne typy danych – przechowujące w postaci binarnej kody np. obrazów o różnej długości; przykłady identyfikatorów: Binarne typy danych – przechowujące w postaci binarnej kody np. obrazów o różnej długości; przykłady identyfikatorów: BIT(N) – ciąg bitów o stałej długości N. BIT(N) – ciąg bitów o stałej długości N. BIT VARYING(N) – ciąg znaków o zmiennej długości. BIT VARYING(N) – ciąg znaków o zmiennej długości. BLOB – mały wielki obiekt binarny. BLOB – mały wielki obiekt binarny. LONGBLOB – wielki wielki obiekt binarny. LONGBLOB – wielki wielki obiekt binarny. Całkowite typy danych – przechowujące tylko liczby całkowite; przykłady identyfikatorów: Całkowite typy danych – przechowujące tylko liczby całkowite; przykłady identyfikatorów: NUMBER, INTEGER. NUMBER, INTEGER. TINYINT, SMALLINT, INT, BIGINT. TINYINT, SMALLINT, INT, BIGINT.

30 Rodzaje typów danych (cd): Dziesiętne typy danych – przechowujące liczby z częściami ułamkowymi; przykłady identyfikatorów: Dziesiętne typy danych – przechowujące liczby z częściami ułamkowymi; przykłady identyfikatorów: DECIMAL, NUMERIC(p,s) – format stałopozycyjny. DECIMAL, NUMERIC(p,s) – format stałopozycyjny. FLOAT, DOUBLE – format zmiennopozycyjny (przybliżony). FLOAT, DOUBLE – format zmiennopozycyjny (przybliżony). Walutowe typy danych – przechowujące wartości walutowe; przykład identyfikatora: Walutowe typy danych – przechowujące wartości walutowe; przykład identyfikatora: MONEY. MONEY. Tworzenie tabeli

31 Rodzaje typów danych (cd): Typy danych daty i czasu – przechowujące datę, czas oraz ich kombinację; przykłady identyfikatorów: Typy danych daty i czasu – przechowujące datę, czas oraz ich kombinację; przykłady identyfikatorów: DATE – data w ustalonym formacie. DATE – data w ustalonym formacie. TIME – czas w ustalonym formacie. TIME – czas w ustalonym formacie. DATETIME – data i czas w ustalonym formacie. DATETIME – data i czas w ustalonym formacie. YEAR – rok w ustalonym formacie. YEAR – rok w ustalonym formacie. Porządkowe typy danych – przechowujące liczby rosnące sekwencyjnie (w niektórych SZBD typ ten stanowi oddzielny typ danych, w innych jest dostępny jako specjalna własność podstawowego typu danych). Porządkowe typy danych – przechowujące liczby rosnące sekwencyjnie (w niektórych SZBD typ ten stanowi oddzielny typ danych, w innych jest dostępny jako specjalna własność podstawowego typu danych). Tworzenie tabeli

32 CREATE TABLE nazwa_tabeli ( CREATE TABLE nazwa_tabeli ( nazwa_kolumny typ_danych [NULL/NOT NULL] [DEFAULT wartość_domyślna] [więzy_spójności_kolumny],... [więzy_spójności_tabeli],...); Tworzenie tabeli

33 przykład CREATE TABLE Pracownicy ( CREATE TABLE Pracownicy ( Id_pracownika Number(6) PRIMARY KEY, Nazwisko Varchar2(20) NOT NULL, Stanowisko Varchar2(9), Kierownik Number(6) REFERENCES Pracownicy, Data_zatrudnienia Date, Zarobki Number(8,2), Premia Number(8,2), Id_działu Number(3) REFERENCES Działy, CHECK (Premia < Zarobki)); Tworzenie tabeli

34 CREATE TABLE Działy ( CREATE TABLE Działy ( Id_działu Number(3) PRIMARY KEY, Nazwa_działu Varchar2(20) NOT NULL UNIQUE, Miejsce Varchar2(50)); CREATE TABLE Zaszeregowania ( CREATE TABLE Zaszeregowania ( Grupa Number(2) PRIMARY KEY, Dolne Number(8,2) NOT NULL, Górne Number(8,2) NOT NULL, CHECK (Dolne < Górne));

35 Tworzenie tabeli więzy spójności: PRIMARY KEY – klucz główny PRIMARY KEY – klucz główny REFERENCES nazwa_tabeli (nazwa_kolumny) – związek między kluczem obcym i kluczem głównym REFERENCES nazwa_tabeli (nazwa_kolumny) – związek między kluczem obcym i kluczem głównym FOREIGN KEY – klucz obcy FOREIGN KEY – klucz obcy NULL – dozwolona wartość nieokreślona NULL – dozwolona wartość nieokreślona NOT NULL – niedozwolona wartość nieokreślona NOT NULL – niedozwolona wartość nieokreślona UNIQUE – klucz jednoznaczny (bez powtórzeń) UNIQUE – klucz jednoznaczny (bez powtórzeń) DEFAULT – definiuje wartość domyślną DEFAULT – definiuje wartość domyślną CHECK – sprawdź warunek CHECK – sprawdź warunek

36 Operacje na tabelach Usuwanie tabeli DROP TABLE nazwa_tabeli; DROP TABLE nazwa_tabeli;przykład DROP TABLE Pracownicy; DROP TABLE Pracownicy; Zmiana schematu tabeli ALTER TABLE nazwa_tabeli ADD [COLUMN] def_kolumny; ALTER TABLE nazwa_tabeli ADD [COLUMN] def_kolumny;przykład ALTER TABLE Pracownicy ADD COLUMN Pesel Char(8); ALTER TABLE Pracownicy ADD COLUMN Pesel Char(8); ALTER TABLE Pracownicy ADD Pesel Char(11); ALTER TABLE Pracownicy ADD Pesel Char(11);

37 Operacje na tabelach Wyświetlanie dostępnych tabel SHOW TABLES; SHOW TABLES; Wyświetlanie struktury tabeli DESCRIBE nazwa_tabeli; DESCRIBE nazwa_tabeli;przykład DESCRIBE Pracownicy; DESCRIBE Pracownicy;

38 Operacje na tabelach Zakładanie indeksów CREATE [UNIQUE] INDEX nazwa_indeksu CREATE [UNIQUE] INDEX nazwa_indeksu ON nazwa_tabeli (kolumna [ASC/DESC],...); przykład CREATE UNIQUE INDEX Ind_prac_num CREATE UNIQUE INDEX Ind_prac_num ON Pracownicy (Pesel); CREATE INDEX Ind_prac_naz CREATE INDEX Ind_prac_naz ON Pracownicy (Nazwisko DESC); ASC – rosnąco, DESC – malejąco Usuwanie indeksów DROP INDEX nazwa_indeksu (ew. nazwa_tabeli.nazwa_indeksu); DROP INDEX nazwa_indeksu (ew. nazwa_tabeli.nazwa_indeksu);przykład DROP INDEX Ind_prac_num; DROP INDEX Ind_prac_num;

39 Operacje na tabelach Wstawianie danych INSERT INTO nazwa_tabeli INSERT INTO nazwa_tabeli VALUES (wartość,...); INSERT INTO nazwa_tabeli (nazwa_kolumny,...) INSERT INTO nazwa_tabeli (nazwa_kolumny,...) VALUES (wartość,...); przykład INSERT INTO Pracownicy VALUES (9901, Kowalski, INSERT INTO Pracownicy VALUES (9901, Kowalski, SALESMAN, 9345, , 300, 100, 12); SALESMAN, 9345, , 300, 100, 12); INSERT INTO Pracownicy (Id_pracownika, Nazwisko) INSERT INTO Pracownicy (Id_pracownika, Nazwisko) VALUES (9901, Kowalski);

40 Operacje na tabelach Modyfikowanie danych UPDATE nazwa_tabeli UPDATE nazwa_tabeli SET nazwa_kolumny=wyrażenie,... [WHERE warunek]; przykład UPDATE Pracownicy SET Zarobki = Zarobki*1,1 UPDATE Pracownicy SET Zarobki = Zarobki*1,1 WHERE Stanowisko = SALESMAN; Klauzula SET określa kolumny i zmieniane wartości. Klauzula SET określa kolumny i zmieniane wartości. Klauzula WHERE określa wiersze, w których ma dojść do zmiany. Klauzula WHERE określa wiersze, w których ma dojść do zmiany.

41 Operacje na tabelach Usuwanie danych DELETE FROM nazwa_tabeli DELETE FROM nazwa_tabeli [WHERE warunek]; (brak WHERE spowoduje usunięcie wszystkich wierszy) przykład DELETE FROM Pracownicy DELETE FROM Pracownicy WHERE Stanowisko IS NULL;

42 Operacje na tabelach Wprowadzanie danych do tabeli z pliku zewnętrznego (np. MySQL) LOAD DATA LOCAL INFILE nazwa_pliku LOAD DATA LOCAL INFILE nazwa_pliku INTO TABLE nazwa_tabeli; przykład LOAD DATA LOCAL INFILE Pracownicy.txt LOAD DATA LOCAL INFILE Pracownicy.txt INTO TABLE Pracownicy; UWAGA: Polecenie to nie jest częścią standardu języka SQL.

43 Operacje na tabelach Tworzenie tabeli z innej tabeli CREATE TABLE nazwa_tabeli SELECT... CREATE TABLE nazwa_tabeli SELECT...przykład CREATE TABLE Osoby SELECT Nazwisko CREATE TABLE Osoby SELECT Nazwisko FROM Pracownicy; Tworzenie tabeli tymczasowej (np. MySQL) CREATE TEMPORARY TABLE nazwa_tabeli [TYPE = HEAP] CREATE TEMPORARY TABLE nazwa_tabeli [TYPE = HEAP] SELECT … przykład CREATE TEMPORARY TABLE nazwa SELECT nazwa CREATE TEMPORARY TABLE nazwa SELECT nazwa FROM c;

44 Operacje na tabelach Każda zmiana zawartości w bazie danych wywołana przez operację podjęzyka danych może zostać odwołana lub zatwierdzona (różne SZBD różnie przyjmują wartość domyślą). Jeżeli wartością domyślną jest automatyczne zatwierdzanie wyników transakcji, to użytkownik może odwołać zmiany w następnym poleceniu. Gdy wartością domyślną jest nie zatwierdzanie wyników transakcji, to użytkownik w kolejnym poleceniu musi je zatwierdzić osobnym poleceniem, by nie stracić zmian. Zatwierdzanie zmian w bazie danych COMMIT [WORK]; COMMIT [WORK]; Rezygnacja ze zmian w bazie danych ROLLBACK [WORK]; ROLLBACK [WORK];

45 Indeksy (indeksowanie) Indeksy przyspieszają wyszukiwanie danych, dlatego powinno się indeksować kolumny często wykorzystywane do przeszukiwania danych. Indeksy są przechowywane w osobnym miejscu pamięci (często w pamięci głównej) i przyspieszają działanie systemu. Nie należy tworzyć indeksów do wszystkich kolumn: Budowanie i przetwarzanie indeksów pochłania czas i pamięć systemu komputerowego. Budowanie i przetwarzanie indeksów pochłania czas i pamięć systemu komputerowego. Wstawianie, modyfikowanie i usuwanie danych w kolumnach indeksowanych trwa dłużej o czas przebudowy indeksu. Wstawianie, modyfikowanie i usuwanie danych w kolumnach indeksowanych trwa dłużej o czas przebudowy indeksu.

46 Indeksy (indeksowanie) Co należy indeksować: Kolumnę (kolumny) klucza głównego (szczególnie, gdy jest ona dołączana do innych tabel jako klucz obcy). Kolumnę (kolumny) klucza głównego (szczególnie, gdy jest ona dołączana do innych tabel jako klucz obcy). Kolumnę często używaną zgodnie z porządkiem sortowania. Kolumnę często używaną zgodnie z porządkiem sortowania. Kolumny regularnie wykorzystywane przy złączeniach. Kolumny regularnie wykorzystywane przy złączeniach. Kolumny często przeszukiwane. Kolumny często przeszukiwane. Czego nie należy indeksować: Kolumny, do których zapytania rzadko się odwołują. Kolumny, do których zapytania rzadko się odwołują. Kolumny o małej liczbie różnych wartości (np. Tak/Nie). Kolumny o małej liczbie różnych wartości (np. Tak/Nie). Kolumny w małych tabelach (np. o kilku wierszach). Kolumny w małych tabelach (np. o kilku wierszach).

47 Indeksy (indeksowanie) Rodzaje indeksów: Indeksy jednokolumnowe – tworzone dla jednej kolumny. Indeksy jednokolumnowe – tworzone dla jednej kolumny. Indeksy zgrupowane – zawierające więcej, niż jedną kolumnę (stosowane, gdy lepiej jest przeszukiwać równocześnie dwie lub więcej kolumn ze względu na ich powiązanie logiczne). Indeksy zgrupowane – zawierające więcej, niż jedną kolumnę (stosowane, gdy lepiej jest przeszukiwać równocześnie dwie lub więcej kolumn ze względu na ich powiązanie logiczne). Indeksy jednoznaczne (UNIQUE) – nie powtarzające się (żadne dwa wiersze nie mają takiej samej wartości indeksu, nawet gdy wartości w kolumnie się powtarzają). Indeksy jednoznaczne (UNIQUE) – nie powtarzające się (żadne dwa wiersze nie mają takiej samej wartości indeksu, nawet gdy wartości w kolumnie się powtarzają). Indeksy zgrupowane (inne znaczenie, oferują niektóre SZBD) – porządek logiczny indeksów jest zgodny z porządkiem fizycznym wierszy (odszukanie danych z pomocą indeksu zgrupowanego jest zawsze szybsze niż dla indeksu niezgrupowanego). Indeksy zgrupowane (inne znaczenie, oferują niektóre SZBD) – porządek logiczny indeksów jest zgodny z porządkiem fizycznym wierszy (odszukanie danych z pomocą indeksu zgrupowanego jest zawsze szybsze niż dla indeksu niezgrupowanego). Indeksy niezgrupowane – indeksy, które nie są zgrupowane. Indeksy niezgrupowane – indeksy, które nie są zgrupowane.

48 Więzy spójności Różne SZBD udostępniają zazwyczaj następujące więzy spójności: PRIMARY KEY – oznacza kolumnę (dodawane przy definicji kolumny) lub grupę kolumn (deklaracja na poziomie tabeli PRIMARY KEY (kol1, kol2,...)) stanowiących klucz główny tabeli. Nie jest wówczas dopuszczalna wartość NULL i każda wartość musi być jednoznaczna. PRIMARY KEY – oznacza kolumnę (dodawane przy definicji kolumny) lub grupę kolumn (deklaracja na poziomie tabeli PRIMARY KEY (kol1, kol2,...)) stanowiących klucz główny tabeli. Nie jest wówczas dopuszczalna wartość NULL i każda wartość musi być jednoznaczna. UNIQUE – gwarantuje jednoznaczność każdej wartości w kolumnie dopuszczając jedną wartość NULL (dodawane przy definicji kolumny). UNIQUE – gwarantuje jednoznaczność każdej wartości w kolumnie dopuszczając jedną wartość NULL (dodawane przy definicji kolumny). DEFAULT – definiuje wartość nadawaną przez system automatyczne, gdy użytkownik nie poda jej jawnie, także NULL (dodawana przy definicji kolumny). DEFAULT – definiuje wartość nadawaną przez system automatyczne, gdy użytkownik nie poda jej jawnie, także NULL (dodawana przy definicji kolumny).

49 Więzy spójności Różne SZBD udostępniają zazwyczaj następujące więzy spójności: CHECK (reguły poprawności CHECK (warunek)) – określa jakie wartości mogą być wprowadzane do określonej kolumny (dodawane przy definicji kolumny) lub grupy kolumn (deklaracja na poziomie tabeli). CHECK (reguły poprawności CHECK (warunek)) – określa jakie wartości mogą być wprowadzane do określonej kolumny (dodawane przy definicji kolumny) lub grupy kolumn (deklaracja na poziomie tabeli). REFERENCES nazwa_tabeli (nazwa_kolumny) - wiąże klucze główne z obcymi, wprowadzona wartość do kolumny klucza obcego musi istnieć w kolumnie tabeli, do której jest odwołanie. REFERENCES nazwa_tabeli (nazwa_kolumny) - wiąże klucze główne z obcymi, wprowadzona wartość do kolumny klucza obcego musi istnieć w kolumnie tabeli, do której jest odwołanie. FOREIGN KEY – wskazuje klucz obcy bez powiązania nadawanego przez opcję REFERENCES (deklaracja na poziomie definicji kolumny). FOREIGN KEY – wskazuje klucz obcy bez powiązania nadawanego przez opcję REFERENCES (deklaracja na poziomie definicji kolumny).

50 Wybieranie danych z bazy danych Do wybierania danych z bazy danych służy instrukcja SELECT. Pozwala ona wybierać dane (kolumny i wiersze) z jednej lub wielu tabel równocześnie (po ich złączeniu), umożliwia porządkowanie wierszy w tabeli wynikowej, grupowanie wierszy oraz stosowanie podzapytań w zapytaniach (zagnieżdżone instrukcje SELECT).

51 SQL – zapytania proste Wybór określonych kolumn i wierszy z tabeli (tabel) SELECT [ALL/DISTINCT] nazwa_kolumny,... SELECT [ALL/DISTINCT] nazwa_kolumny,... FROM nazwa_tabeli (nazwy_tabel) [WHERE warunki wyszukiwania]; przykłady SELECT Nazwisko, Zarobki, Stanowisko SELECT Nazwisko, Zarobki, Stanowisko FROM Pracownicy; (wybiera kolumny Nazwisko, Zarobki i Stanowisko z Pracownicy)

52 SQL – zapytania proste przykłady cd. SELECT * SELECT * FROM Pracownicy; (wybiera wszystkie kolumny z tabeli Pracownicy – klauzula *) SELECT Nazwisko, Zarobki, Stanowisko SELECT Nazwisko, Zarobki, Stanowisko FROM Pracownicy WHERE Id_działu = 10; (wybiera określone kolumny z tabeli Pracownicy i tylko te wiersze, które spełniają podanych warunek) SELECT DISTINCT Kierownik SELECT DISTINCT Kierownik FROM Pracownicy; (wybiera kolumnę Kierownik z tabeli Pracownicy odrzucając powtarzające się wiersze – klauzula DISTINCT)

53 SQL – zapytania proste przykłady cd. SELECT ALL Kierownik SELECT ALL Kierownik FROM Pracownicy; (wybiera kolumnę Kierownik z tabeli Pracownicy nie odrzucając powtarzających się wierszy – klauzula ALL, zazwyczaj domyślna) SELECT Pracownicy.Nazwisko, Adresy.Miasto SELECT Pracownicy.Nazwisko, Adresy.Miasto FROM Pracownicy, Adresy WHERE Pracownicy.Id_Pracownika = Adresy.Id_Pracownika; (wybiera dwie kolumny z połączonych dwóch tabel)

54 SQL – zapytania proste W przypadku wyboru kolumn z różnych tabel (podanych w klauzuli FROM) istnieje niekiedy potrzeba kwalifikowania nazw (w zasadzie tylko, gdy nazwy kolumn w tabelach powtarzają się, czyli w przykładzie powyższym można z kwalifikacji zrezygnować) w następujący sposób: Nazwa_bazy_danych.Nazwa_tabeli.Nazwa_kolumnyNazwa_bazy_danych.Nazwa_perspektywy.Nazwa_kolumny Warunek złączenia tabel podawany jest w klauzuli WHERE.

55 SQL – zapytania proste Przetwarzanie wartości w kolumnach i stosowanie aliasów (synonimów, nazw zastępczych) SELECT [ALL/DISTINCT] wyrażenie [[AS] alias],... SELECT [ALL/DISTINCT] wyrażenie [[AS] alias],... FROM nazwa_tabeli (nazwa_tabel) [WHERE warunek_wyszukiwania] [ORDER BY wyrażenie [ASC/DESC/,...]; przykłady SELECT p.Nazwisko, a.Miasto SELECT p.Nazwisko, a.Miasto FROM Pracownicy p, Adresy a WHERE p.Id_Pracownika = a.Id_Pracownika; (nadanie nazwom tabel aliasów dla wygody przy pisaniu) SELECT Id_Pracownika [AS] Numer, Nazwisko SELECT Id_Pracownika [AS] Numer, Nazwisko FROM Pracownicy (identyfikator pracownika będzie posiadał nowy nagłówek)

56 SQL – zapytania proste Przetwarzanie wartości w kolumnach i stosowanie aliasów Przykłady ciąg dalszy SELECT Id_pracownika, Nazwisko, SELECT Id_pracownika, Nazwisko,Trunc(Months_Between(Sysdate, Data_zatrudnienia)/12) AS Zatrudnienie FROM Pracownicy ORDER BY Zatrudnienie DESC; (oprócz kolumn z identyfikatorem i nazwiskiem wyprowadzona zostanie kolumna z czasem pracy w pełnych latach o nagłówku Zatrudnienie; całość będzie uporządkowana według malejących wartości w kolumnie Zatrudnienie – klauzula ORDER BY) SELECT Pracownik, Id_Pracownika [AS] Numer, Nazwisko SELECT Pracownik, Id_Pracownika [AS] Numer, Nazwisko FROM Pracownicy (w przedstawiony sposób można dodawać napisy w zapytaniach, co niekiedy ułatwia zrozumienie; każdy wiersz tabeli wynikowej zostanie poprzedzony od lewej napisem Pracownik )

57 SQL – zapytania proste Przetwarzanie wartości w kolumnach i stosowanie aliasów Przykłady ciąg dalszy SELECT Nazwisko, Czas_Pracy * Stawka AS Pensja SELECT Nazwisko, Czas_Pracy * Stawka AS Pensja FROM Pracownicy (w tabeli wynikowej zostanie wyprowadzony wynik mnożenia dwóch kolumn pod nazwą Pensja – nazwy kolumn muszą być bez spacji) SELECT Nazwisko, Czas_Pracy * Stawka AS Pensja SELECT Nazwisko, Czas_Pracy * Stawka AS Pensja FROM Pracownicy (w tabeli wynikowej zostanie wyprowadzony wynik mnożenia dwóch kolumn pod nazwą Pensja – nazwy kolumn muszą być bez spacji)

58 SQL – zapytania proste Operatory arytmetyczne możliwe do stosowania w wyrażeniach: * mnożenie. * mnożenie. / dzielenie. / dzielenie. + dodawanie. + dodawanie. - odejmowanie. - odejmowanie. %dzielenie modulo (dostępne w niektórych SZBD). %dzielenie modulo (dostępne w niektórych SZBD). UWAGA: Wynik operacji arytmetycznej, gdy jeden z argumentów ma wartość NULL jest także równy NULL. Priorytet operatorów: mnożenie/dzielenie, dodawanie/odejmowanie.


Pobierz ppt "Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu."

Podobne prezentacje


Reklamy Google