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

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
Relacyjny model danych
SQL – Strukturalny język zapytań
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Relacyjny model danych
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
WPROWADZENIE DO BAZ DANYCH
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
POWTÓRZENIE Metodologia : Pojęcia:
Wykład 8 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Projektowanie fizycznej bazy danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Modele baz danych - spojrzenie na poziom fizyczny
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Język SQL (Structured Query Language) DDL (Data Definition Language)
Structured Query Language
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SQL – Structured Query Language (3)
Podstawy programowania
MySQL – ODBC - ACCESS.
Bazy danych.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
MySQL bazy danych dla witryny
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
Andrzej Macioł Bazy danych – model relacyjny – cz. 1 Andrzej Macioł
SQL - Structured Query Language
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Jak zacząć w MS SQL? USE master; GO IF DB_ID (Nbaza') IS NOT NULL DROP DATABASE baza; GO CREATE DATABASE baza; GO USE baza; GO.
Wybrane zagadnienia relacyjnych baz danych
WPROWADZENIE DO BAZ DANYCH
Model relacyjny.
Komendy SQL do pracy z tabelami i bazami
PL/SQL – dalsza wędrówka
Projektowanie stron WWW
Projektowanie bazy danych
Łódź 2008 Banki danych WYKŁAD 2 dr Łukasz Murowaniecki T-109.
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Systemy Baz Danych Wykład III
Temat 3: Integralność danych. Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną.
Michał Krawczykowski kl. IIIB
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Projektowanie relacyjnych baz danych – diagramy związków encji
Typy danych, klucz podstawowy, klucz obcy
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Temat: Tworzenie bazy danych
Transformacja modelu EER do modelu relacyjnego
Indeksy.
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

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. 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”.

Między innymi system w pełni relacyjny musi: Reprezentować całą informację zawartą w bazie w postaci tabel. 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. 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. 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.

Postulaty Codda dla relacyjnej bazy danych (1985 rok) Postulat informacyjny: na poziomie logicznym dane są reprezentowane wyłącznie za pomocą tabel. Postulat dostępu: do każdej pojedynczej danej jest dostęp za pomocą tabel, kolumn i wartości kluczy głównych. 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.

Postulaty Codda dla relacyjnej bazy danych (1985 rok) 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. 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) Postulat modyfikowania bazy danych przez perspektywy: system umożliwia modyfikowanie danych za pomocą perspektyw, w przypadku gdy taka modyfikacja jest semantycznie sensowna. 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. 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) Logiczna niezależność danych: zmiany w tabelach zachowujące informacje i dopuszczalne semantycznie nie mają wpływu na aplikacje. 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) 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). 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).

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

Postulat 1. 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 systemowe (katalog, słownik systemu) – czwarte prawo Codda.

Wartość nieokreślona (null) 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.

Język wysokiego poziomu 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). Definiowanie danych. Administrowanie danymi. Każda operacja języka wyrażona jest instrukcją lub poleceniem. Operacje wyszukiwanie nazywane są często zapytaniami.

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). Wybór – wybór wierszy (określa podzbiór wierszy). Złączanie – utworzenie jednej tabeli wynikowej na podstawie kilku tabel bazowych.

Różne sposoby oglądania danych 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).

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ń. Użytkownik uprzywilejowany – właściciel baz danych lub obiektów bazodanowych (osoba tworząca te obiekty). Administrator systemu (administrator bazy danych).

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). Logiczna niezależność danych (reprezentacja danych widziana przez użytkownika jest niezależna od programów użytkowych).

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ęść). 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. Dodatkowe ograniczenia (np. wyzwalacze).

Strukturalny (Standardowy) Język Zapytań SQL Strukturalny (Standardowy) Język Zapytań

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). 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).

Składnia języka SQL 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. Nawiasy okrągłe są częścią składni języka SQL. Instrukcja SQL wymaga użycia znaku końca (zazwyczaj średnik).

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 tabel wewnątrz bazy danych. Wypełnienia tabel (pracy z tabelami).

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

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

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

Używanie bazy danych 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).

Tworzenie tabeli Tworzenie tabeli co najmniej obejmuje: Nadanie nazwy tabeli. Nadanie nazw kolumnom tworzącym tabelę. 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). Wprowadzenie danych.

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 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. Ustanowienie więzów sprawdzających zależności między kluczami głównymi i obcymi.

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.

Tworzenie tabeli 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: 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. TEXT, LONGTEXT – odpowiednio krótki lub długi łańcuch tekstu.

Tworzenie tabeli 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: 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. BLOB – mały „wielki obiekt binarny”. LONGBLOB – wielki „wielki obiekt binarny”. Całkowite typy danych – przechowujące tylko liczby całkowite; przykłady identyfikatorów: NUMBER, INTEGER. TINYINT, SMALLINT, INT, BIGINT.

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

Tworzenie tabeli Rodzaje typów danych (cd): Typy danych daty i czasu – przechowujące datę, czas oraz ich kombinację; przykłady identyfikatorów: DATE – data w ustalonym formacie. TIME – czas w ustalonym formacie. DATETIME – data i czas 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).

Tworzenie tabeli Tworzenie 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 przykład 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 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 ( Grupa Number(2) PRIMARY KEY, Dolne Number(8,2) NOT NULL, Górne Number(8,2) NOT NULL, CHECK (Dolne < Górne));

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

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

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

Operacje na tabelach Zakładanie indeksów CREATE [UNIQUE] INDEX nazwa_indeksu ON nazwa_tabeli (kolumna [ASC/DESC],...); przykład CREATE UNIQUE INDEX Ind_prac_num ON Pracownicy (Pesel); 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 Ind_prac_num;

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

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

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

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

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

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]; Rezygnacja ze zmian w bazie danych ROLLBACK [WORK];

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. Wstawianie, modyfikowanie i usuwanie danych w kolumnach indeksowanych trwa dłużej o czas przebudowy indeksu.

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ę często używaną zgodnie z porządkiem sortowania. Kolumny regularnie wykorzystywane przy złączeniach. Kolumny często przeszukiwane. Czego nie należy indeksować: Kolumny, do których zapytania rzadko się odwołują. Kolumny o małej liczbie różnych wartości (np. Tak/Nie). Kolumny w małych tabelach (np. o kilku wierszach).

Indeksy (indeksowanie) Rodzaje indeksów: 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 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 niezgrupowane – indeksy, które nie są zgrupowane.

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. 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).

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). 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).

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).

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

(wybiera wszystkie kolumny z tabeli Pracownicy – klauzula *) SQL – zapytania proste przykłady cd. SELECT * FROM Pracownicy; (wybiera wszystkie kolumny z tabeli Pracownicy – klauzula *) 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 (wybiera kolumnę Kierownik z tabeli Pracownicy odrzucając powtarzające się wiersze – klauzula DISTINCT)

(wybiera dwie kolumny z połączonych dwóch tabel) SQL – zapytania proste przykłady cd. 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 FROM Pracownicy, Adresy WHERE Pracownicy.Id_Pracownika = Adresy.Id_Pracownika; (wybiera dwie kolumny z połączonych dwóch tabel)

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_kolumny Nazwa_bazy_danych.Nazwa_perspektywy.Nazwa_kolumny Warunek złączenia tabel podawany jest w klauzuli WHERE.

SQL – zapytania proste Przetwarzanie wartości w kolumnach i stosowanie aliasów (synonimów, nazw zastępczych) 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 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 FROM Pracownicy (identyfikator pracownika będzie posiadał nowy nagłówek)

Przetwarzanie wartości w kolumnach i stosowanie aliasów SQL – zapytania proste Przetwarzanie wartości w kolumnach i stosowanie aliasów Przykłady ciąg dalszy 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 (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 ”)

Przetwarzanie wartości w kolumnach i stosowanie aliasów SQL – zapytania proste Przetwarzanie wartości w kolumnach i stosowanie aliasów Przykłady ciąg dalszy 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)

SQL – zapytania proste Operatory arytmetyczne możliwe do stosowania w wyrażeniach: * mnożenie. / dzielenie. + dodawanie. - odejmowanie. % 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.