SYSTEMY BAZ DANYCH Część II Opracowanie : Dr Bożena Śmiałkowska.

Slides:



Advertisements
Podobne prezentacje
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Advertisements

Projektowanie bazy danych
SQL – Strukturalny język zapytań
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Relacyjny model danych
BD-LAB4 Wojciech Pieprzyca
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Język SQL ma ciekawe możliwości tworzenia zapytań
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Co to jest studium przypadku?
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
SQL-owskie szlaki górskie
POWTÓRZENIE Metodologia : Pojęcia:
Wykład 8 Wojciech Pieprzyca
BD-LAB6 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
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
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Structured Query Language
Teoria relacyjnych baz danych
dr inż. Piotr Muryjas Wyższa Szkoła Przedsiębiorczości i Administracji
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
OPERACJA DZIELENIA W SQL
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Arkusze kalkulacyjne, część 3
Bazy danych.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
dr hab. Ryszard Walkowiak prof. nadzw.
Budowanie tabel i relacji
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
Bazy danych Access 200x Ćwiczenie 1.
SQL - Structured Query Language
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Wybrane zagadnienia relacyjnych baz danych
Model relacyjny.
Wyprowadzanie informacji z bazy danych - kwerendy wybierające Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Programowanie baz danych
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
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Temat: Tworzenie bazy danych
Typy wyliczeniowe, kolekcje
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

SYSTEMY BAZ DANYCH Część II Opracowanie : Dr Bożena Śmiałkowska

Cechy języków zapytań do baz danych Deklaratywny charakter, Zanurzenie w języku programowania, Wysoki poziom abstrakcji

SQL Języki zapytań do relacyjnych baz danych Języki oparte na algebrze relacji (ISBL w Ingresie) Języki oparte na predykatach Języki oparte na rachunku krotek (QUEL) Języki oparte na rachunku dziedzin (QBL) SQL = [ język oparty na algebrze relacji ] + [ język oparty na rachunku krotek ]

Literatura do zagadnienia : SQL Celko J.: Zaawansowane techniki programowania. Mikrom, W-wa, 1999 Connan S.: SQL-The standard Handbook. McGraw-Hill Book Company, London, 1993 Harrington J.L.: SQL dla każdego. EDU-Mikom, W-wa, 1998 SQL. Język relacyjnych baz danych. Wellesley Software. WNT, W-wa, 1999 Stephans R.: SQL w 3 tygodnie. LT&P, W-wa, 1999 http://galaxy.uci.agh.edu.pl/chwastek/lectures/db/dbtitle.html http://baszta.iie.ae.wroc.pl/index.html http://www.cs.put.poznan.pl/kjankiewicz/oracle/sql/index.html http://www.cs.put.poznan.pl/rwrembel/courses/sbd.html

SQL to: Strukturalny język zapytań (Ang. Structured Query Language), niepełny język obsługi baz danych, język obsługi baz danych zaimplementowany w systemach zarządzania relacyjnymi bazami danych (RDBMS – relacyjny DBMS), przeznaczony do definiowania struktur danych, wyszukiwania danych oraz operacji na danych, Posiada on akceptację ANSI oraz standard ISO. W praktyce jest to standardowy język zapytań.

Cechy języka SQL Jest językiem wysokiego poziomu (4GL) opartym na języku angielskim, Jest językiem deklaratywnym (nieproceduralnym) zorientowanym na wynik (użytkownik deklaruj co chce uzyskać, a nie jak to chce zrealizować), SQL nie ma instrukcji sterujących wykonanie programu, Jest często zanurzony w innym języku programowania (np.: C, Fortran, PL, itp.), Nie zawiera w sobie rekurencji, Umożliwia definiowanie struktur danych, wyszukiwanie danych oraz operacje na danych (np.: kasowanie danych, modyfikowanie danych itp., o ile użytkownik ma do tego prawo).

Zalety SQL

Wady i ograniczenia SQL

Historia SQL Koniec lat 70 – tych – firma ORACLE (Relational Software Inc.) – pierwsza implementacja praktyczna (komercyjna), 1981 – IBM – SQL/DS. (RDL – Relational Data Language), 1983 – ISO definicja SQL, 1986 – ANSI – pierwszy standard SQL (SQL-86), 1987 – ISO – pierwszy standard SQL : ISO 9075:1987 (E), 1989 – ISO – następny standard SQL : ISO 9076: 1989 (E), (SQL-98), 1992 – ISO – kolejna, wzbogacona wersja : ISO 9075 : 1992 (E), (SQL 2), 1999 – SQL 3 Grupa ODMG (Object DataBase Management Group) w oparciu o SQL opracowała język do obiektowych baz danych OQL.

Historia SQL…cd… Koncepcja leżąca u podstaw języka SQL powstała w wyniku prac prowadzonych w laboratorium badawczym IBM w San Jose w Kalifornii w latach siedemdziesiątych. Tam też została zbudowana implementacja prototypowa relacyjnych pojęć o nazwie System/R. Ten wczesny relacyjny SZBD używał języka znanego wówczas jako SEQUEL. Dlatego właśnie wiele osób wciąż wymawia nazwę SQL jak SEQUEL (to jest sikłel). W latach 1973-1979 badacze z IBM opublikowali w akademickich czasopismach dużo materiałów na temat budowy System/R. W tym czasie zarówno w USA, jak i w Europie na konferencjach i seminariach prowadzono ożywione dyskusje na temat poprawności relacyjnego SZBD. IBM okazał się niewątpliwie nadzwyczaj powolny w dostrzeżeniu komercyjnego znaczenia systemów relacyjnych. Pierwsze pomyślne, komercyjne wykorzystanie idei związanych z relacyjnym modelem danych przypadło korporacji ORACLE, założonej w 1977 r.

Historia SQL…cd… System ORACLE był i jest relacyjnym SZBD opartym na SQL. Wielu innych producentów również wyprodukowało systemy używające SQL. Z tego powodu w 1982 r. organizacja ANSI (American National Standards Committee) przekazała swojemu komitetowi baz danych (X3H2) sprawę utworzenia standardu języka relacyjnych baz danych (RDL). Komitet ten opublikował definicję składni standardu SQL w 1986 r., opartą głównie na dwóch dialektach SQL IBM i ORACLE (ANSI, 1986). W 1987 r. organizacja ISO (International Standards Organization) opublikowała bardzo podobny standard (ISO, 1987). Ten standard jest również znany pod nazwą SQLI. Oryginalny dokument ANSI określa dwa poziomy dla SQLl: poziom pierwszy i poziom drugi. Poziom drugi jest pełnym językiem SQL. Poziom pierwszy, którego pierwotnym założeniem było pełnienie funkcji przecięcia dla istniejących implementacji, jest podzbiorem poziomu drugiego.

Historia SQL…cd… W następstwie powyższych publikacji pojawiło się wiele krytycznych uwag na temat standardu ANSI/ISO, zwłaszcza ze strony specjalistów w dziedzinie baz danych, takich jak E. F. Codd (1988a, 1988b) i C. Dale (1987). Wiele osób uważało, że wadą standardu jest fakt, że jest on częścią wspólną istniejących aplikacji. Inni uważali, że język ma poważniejsze wady, zwłaszcza w zakresie relacyjnych konstrukcji. W 1989 r. w odpowiedzi na krytykę ANSI opublikowała dodatek do standardu, zawierający głównie ulepszenia cech integralności (ANSI, 1989a). Duża część tego dodatku została włączona do roboczej wersji proponowanej drugiej wersji standardu, również wydanego przez ANSI w 1989 r. (ANSI, 1989b). ISO, blisko współpracując z ANSI, wydała w tym samym roku dokument zatytułowany "Database Language SQL with Integrity Enhancement" (ISO, 1989).

Historia SQL…cd… W 1992 r. ANSI i ISO wydały pełną specyfikację rozszerzonej wersji SQL, znanej jako SQL2. Dla tego standardu określono dwa podzbiory: poziom minimalny i poziom pośredni. Poziom minimalny SQL2 jest w zasadzie taki sam jak SQL1 z udoskonalonymi cechami integralności. Uzgodniono już kolejne istotne rozszerzenia standardu SQL2 i oczekuje się pojawienia wersji standardu o nazwie SQL3 pod koniec lat dziewięćdziesiątych. Nie ma zatem jednego standardu, a przynajmniej trzy. Oznacza to, że jakakolwiek implementacja SQL może realizować wszystkie lub część z tych trzech wersji standardu.  Jest to jeden z powodów, dla których większość implementacji komercyjnych uważa się w najlepszym razie za dialekty standardu SQL. Innymi słowy, pod wieloma względami znajdują one wspólny grunt wokół definicji podstaw lub poziomu jeden standardu SQLl. Pod innymi względami różnią się one nie dostosowując się ani do SQLI, ani do późniejszych standardów (typy danych są tu dobrym przykładem). Niektóre implementacje oferują dodatkowe konstrukcje nie uwzględnione w standardzie.

Ogólna charakterystyka SQL… SQL (strukturalny język zapytań - Structured Query Language) Wysoki poziom bezpieczeństwa, integralności i kompletności danych, Praca w konfiguracjach klient-serwer, Optymalizacja zapytań kierowanych do bazy przez użytkowników lub ich systemy, Efektywne przetwarzanie transakcji, Zdolność manipulowania niestandardowymi strukturami SQL jest zwykle podzielony na trzy główne części: definicje danych, operowanie danymi i kontrola danych,

Sposób wykorzystania SQL Interaktywny SQL – bezpośredni dostęp do danych za pomocą interpretera SQL, Statyczny SQL – stały (predefiniowany) kod w SQL – może to być zanurzony SQL (tzw. embedded SQL) – kod znajdujący się wewnątrz innego języka programowania lub modułowy SQL, tzn. samodzielne moduły w języku SQL mogą być łączone z modułami innych języków, Dynamiczny SQL – kod SQL generowany dynamicznie przez programy użytkowe – często generowany jest za pomocą interfejsów graficznych lub z poziomu WWW, Definicyjny SQL – kod w SQL generowany przy pomocy narzędzi CASE (Computer Aided Software Enginnering).

SQL – postać poleceń (zapytań)

Przykładowe pełne określenie zapytania

Przykładowe zapytanie sparametryzowane

Przykładowe zapytanie sparametryzowane

Zapytania dynamiczne - przykład

Zapytania dynamiczne - przykład

Komponenty SQL

Podstawowe struktury danych w SQL

Podstawowe struktury danych cd..

Alfabet SQL Obejmuje: Zestaw znaków SQL charakterystyczny dla implementacji litery duże i małe, cyfry, znaki specjalne , ; ( ) . % _ > < = „ + * / - ? : ! spacja, Literały (stałe), zapisywane w cudzysłowiu np.: ‘Warszawa’ Identyfikatory (nazwy), np.: nazwy tabel, kolumn (atrybutów), widoków, schematów, itp., Nazwy poleceń i funkcji - każda instrukcja w SQl zaczyna się słowem kluczowym, może zawierać modyfikatory i kończy się średnikiem, Znak * oznacza wszystkie kolumny (atrybuty) tabeli,

Zasady konstrukcji wyrażeń

Podstawowe typy danych w SQL Wyróżnia się następujace typy danych: Typy napisowe (String) Character(N) - Napis znakowy o stałej długości. Jeżeli na wejściu znajdzie się napis o mniejszej długości niż N, to na końcu napisu są dodawane spacje, Character Varying (N) - Napis znakowy o minimalnej długości 1 i maksymalnej długości określonej przez system. Jeżeli na wejściu pojawi się napis o mniejszej długości niż N, to jest przechowywana tylko właściwa długość napisu. Bit - Napisy bitowe głównie używane dla danych graficznych i dźwięku. d. Bit Varying. Napisy bitowe zmiennej długości,

Podstawowe typy danych w SQL Typy liczbowe: Numeric - Synonim dla Decimal, Decimal(M, N) - Liczba dziesiętna o długości M z N miejscami po przecinku dziesiętnym, Integer - Liczba całkowita z zakresu wartości określonych przez system, Smallint - Liczba całkowita z mniejszego zakresu wartości określonych przez system, Float - Liczba przechowywana w reprezentacji zmiennopozycyjnej, Real - Jest synonimem Float, Double Precision.

Podstawowe typy danych w SQL Typy daty i godziny (Datetime) : Date - Daty określone przez system, Time - Godziny określone przez system, Timestamp - Daty i godziny z uwzględnieniem ułamków sekund Interval - Przedziały między datami. Konkretne implementacje różnią się realizacją typów danych.

Obiektowy model SQL3

Rozszerzenie typów o obiekty w SQL3

Zakładanie tabel bazy danych CREATE TABLE <nazwa tabeli>     (<nazwa kolumny><typ danych>(<długość>),     <nazwa kolumny><typ danych>(<długość>),                  ...           [PRIMARY KEY (nazwa atrubutu [ , nazwa atrubutu ]…)], FOREIGN KEY  (nazwa atrubutu [, nazwa atrybutu ] …) REFERENCES <nazwa tabeli> (<nazwa atrybutu>)]);

Zakładanie tabel bazy danych - Opcje NOT NULL i UNIQUE Każda kolumna w tabeli może być zdefiniowana jako NOT NULL. Oznacza to, że użytkownik nie może wprowadzić wartości null do tej kolumny. Domyślną specyfikacją dla kolumny jest NULL. To znaczy wartości null są dozwolone w kolumnie. Każda kolumna może być również zdefiniowana jako UNIQUE (jednoznaczna). Ta klauzula zabrania użytkownikowi wprowadzania powtarzających się wartości do kolumny. Kombinację NOT NULL i UNIQUE możemy użyć do zdefiniowania cech klucza głównego.

Zakładanie tabel bazy danych - przykłady Do definicji kolumny możemy dodać klauzulę określającą wartość, którą system automatycznie wpisuje do kolumny, jeżeli użytkownik wprowadzi niepełną informację. Na przykład do kolumny poziom w tabeli Moduły możemy dodać specyfikację DEFAULT <wartość> wskazującą, że domyślnym poziomem powinien być 1: CREATE TABLE Moduły     (NazwaModułu Character( 30) NOT NULL UNIQUE,     Poziom Smallint DEFAULT 1,     KodKursu Character(3),     NrPrac Integer) ;

Zakładanie tabel bazy danych - przykłady CREATE TABLE sale (id_sali short not null, kod_kursu text(10) not null, nazwa_kursu text(30), wymiar_godz byte, czas_od text(12), id_kierunku text(4), Primary key (id_sali), Foreign key (id_kierunku) references KIERUNKI (nr_kierunek));

Zakładanie tabel bazy danych- przykłady

Instrukcja DROP TABLE – usuwanie definicji tabeli Usuwa definicję tabel. Aby usunąć tabelę z bazy danych, używamy następującego polecenia: DROP TABLE <nazwa tabeli> Na przykład DROP TABLE Moduły

Modyfikacja struktury tabel bazy danych Przy założeniu idealnej niezależności danych administrator danych powinien móc modyfikować strukturę bazy danych bez wywierania wpływu na użytkowników lub programy użytkowe, które mają dostęp do bazy danych. W praktyce produkty oparte na SQL realizują tylko ograniczoną postać niezależności danych. Administrator może dodać dodatkową kolumnę do tabeli, zmodyfikować maksymalną długość istniejącej kolumny lub usunąć kolumnę z tabeli. Każdą z tych operacji określamy używając polecenia ALTER TABLE. Na przykład:   ALTER TABLE Wykładowcy ADD COLUMN NrPokoju Smallint ALTER TABLE Wykładowcy ALTER COLUMN NazwiskoPrac Varchar(20) ALTER TABLE Wykładowcy DROP COLUMN NazwiskoPrac dodanie kolumny zmiana wymiaru  usuniecie wymiaru 

Operacje w SQL na danych bazy danych Wstawianie danych do bazy danych (INSERT INTO), Aktualizacja bazy danych (UPDATE), Kasowanie danych z bazy danych (DELETE), Operacje teoriomnogościowe na bazie danych: suma, różnica, iloczyn mnogościowy i kartezjański (UNION, INTERSECT, EXCEPT ), Selekcja danych (SELECT), Projekcja (rzutowanie) danych (realizowane przez SELECT), Łączenie tabel bazy danych: naturalne, warunkowe, zewnętrzne (JOIN, NATURAL JOIN, LEFT OTHER JOIN, RIGHT OTHER JOIN FULL OTHER JOIN oraz realizowane przez SELECT), Dzielenie tabel (DIVISION).

Wstawianie danych do bazy danych Polecenie INSERT dodaje dodatkowy wiersz do podanej tabeli. Na przykład instrukcja: INSERT INTO Moduly VALUES ('Wstęp do zarządzania',I,'BSD',123) dodaje dodatkowy wiersz do tabeli Moduly. Porządek, w jakim powinny być podane wartości w poleceniu INSERT, musi się zgadzać z porządkiem, w jakim pierwotnie określono kolumny dla tabeli w poleceniu CREATE TABLE. Jeżeli chcemy wypisać wartości w jakimś innym porządku niż pierwotnie określony lub jeśli chcemy ominąć jakieś kolumny przed wstawianiem, to musimy dodać listę nazw kolumn do polecenia INSERT. Na przykład: INSERT INTO Moduty (Poziom, KodKursu, NrPrac, NazwaModulu) VALUES (2,'CSD',237,'Tworzenie systemów informacyjnych')

Wstawianie danych do bazy danych

Wstawianie danych do bazy danych Specjalna wersja polecenia INSERT umożliwia dodanie wielu wierszy do tabeli. Jest zwykle używana, aby umieścić wyniki jakiegoś zapytania w podanej tabeli. Przypuśćmy na przykład, że chcemy utworzyć tabelę wykładowców pracujących na wydziale studi6w informatycznych. Możemy to zrobić, jak następuje: CREATE TABLE WykladowcyInformatyki (NrPrac Number(5), NazwiskoPrac Varchar(15), Status Varchar(10), Pensja Decimal(7, 2)) INSERT INTO WykladowcyInformatyki(NrPrac, NazwiskoPrac, Status, Pensja) SELECT NrPrac, NazwiskoPrac, Status, Pensja FROM Wykladowcy WHERE NazwaWydzialu = 'Studia informatyczne'

Usuwanie danych z bazy danych Polecenia DELETE używamy do usuwania wierszy z tabeli. Wiersze do usunięcia podajemy w klauzuli WHERE, podobnie jak w poleceniu SELECT. np.: DELETE FROM Wykładowcy WHERE NazwaWydziału = 'Studia informatyczne'

Aktualizowanie danych w bazie danych Polecenia UPDATE używamy do zmodyfikowania zawartości jednego lub więcej wierszy tabeli. Wiersze do modyfikacji są określane w opcjonalnej klauzuli WHERE, a zmianę lub zmiany do wykonania podajemy w klauzuli SET. Na przykład następujące polecenie zwiększy o 10% pensję wszystkich wykładowców o statusie PL: UPDATE Wykładowcy SET Pensja = Pensja*1.1 WHERE Status = 'PL'

Operacje w SQL na danych bazy danych projekcja Selekcja Łączenie (join) dwóch tabel

Operacje „mnogościowe” w SQL na danych bazy danych 11 Dos w 32 Bios a 11 Dos w 32 Bios a 11 Dos w 32 Bios w 32 Bios z 43 Znak S 44 Kos z 34 Znak w 32 Bios z 43 Znak Suma tabel Różnica tabel Iloczyn tabel A 11 Dos w 32 Bios a 11 Dos w 32 Bios S 44 Kos z 34 Znak

Selekcja

Struktura typowego zapytania selekcyjnego Proste wyszukiwanie jest wykonywane dzięki kombinacji klauzul SELECT, FROM i WHERE: SELECT <nazwa atrybutul.>, <nazwa atrybutu2>,... FROM <nazwa tabeli> [WHERE <warunek>] Klauzula SELECT wskazuje na kolumny, z których wartości mają być wydobyte. Klauzula FROM określa tabele, z których mają pochodzić dane. Klauzula WHERE określa warunek lub warunki, które mają być spełnione przez sprowadzane dane. W następującym poleceniu gwiazdka "*" pełni funkcję symbolu uniwersalnego. Oznacza to, że zostaną wypisane wszystkie atrybuty z tabeli, której nazwa znajduje się po słowie FROM. Klauzula WHERE jest opcjonalna Opcja DISTINCT w wyniku daje różne (niepowtarzalne) wyniki SELECT DISTINCT stanowisko FROM pracownicy;

Warunki w zapytaniach selekcyjnych

Like w Access Znak Opis Cyfra (Od 0 do 9, pozycja wymagana, znaki plus [+] i minus [–] nie są dozwolone). 9 Cyfra lub spacja (pozycja nie jest wymagana, znaki plus i minus nie są dozwolone). # Cyfra lub spacja (pozycja nie jest wymagana, w trybie edycji spacje wyświetlane są jako puste miejsca, lecz podczas zapisywania danych spacje są usuwane; znaki plus i minus są dozwolone). L Litera (od A do Z, pozycja wymagana). ? A Litera lub cyfra (pozycja wymagana). a & Dowolny znak lub spacja (pozycja wymagana). C . , : ; - / Dziesiętny symbol zastępczy oraz separator tysięcy, dat i godzin. (Znak, który zostanie użyty w charakterze separatora zależy od ustawień w oknie dialogowym Właściwości: Ustawienia regionalne w Panelu sterowania systemu Windows). < Powoduje, że wszystkie litery zostaną zmienione na małe. > Powoduje, że wszystkie litery zostaną zmienione na wielkie. ! Powoduje, że wszystkie dane są wyświetlane od strony prawej do lewej zamiast od lewej do prawej. Znaki wpisane do maski wprowadzania zawsze będą ją wypełniać od strony lewej do strony prawej. Wykrzyknik może pojawić się w dowolnym miejscu maski wprowadzania \ Powoduje, że znak, który po nim występuje, zostanie wyświetlony jako znak literałowy (na przykład, \A będzie wyświetlone po prostu jako A).

Struktura typowego zapytania selekcyjnego - przykłady SELECT * FROM Moduły WHERE NazwaModułu = 'Dedukcyjne bazy danych’

Selekcja - przykłady SELECT w.nr_w, p.nazwisko, p.stanowisko, p.dzial, m .miasto, m.ulica FROM pracownicy p, miejsca m,wypozyczenia w WHERE p.nr_m=m.nr_m AND p.nr_p= w.prac_wyp AND m.miasto = ‘WARSZAWA’ W celu połączenia w jeden dwóch łańcuchów znaków należy wykorzystać znak konkatenacji ‘||’ Kolumny wyliczone mogą być nazwane przez zastosowanie klauzuli AS SELECT k.imie || ‘ ‘ || k.nazwisko AS Klient, ‘ul. ‘ || k.ulica || ‘ ‘ || k.numer AS Ulica, k.kod || ‘ ‘ || k.miasto AS Miasto FROM klienci k

Obliczenia w zapytaniach selekcyjnych Ilosc) 1 2 3 4

Selekcja – przykłady cd.. Wyrażenie CASE pozwala na wybranie pewnej wartości w zależności od wartości w innej kolumnie. W przykładzie sprawdzamy czy klient pochodzi z Warszawy, jeśli tak to wpisywana jest wartość „Klient oddziału macierzystego”, w przeciwnym razie jest to Klient z przedstawicielstwa”. SELECT k.imie, k.nazwisko, k.miasto , CASE k.miasto WHEN ‘Warszawa’ THEN ‘Klient oddziału macierzystego’ ELSE ‘Klient z przedstawicielstwa’ END FROM klienci k

Rzut (projekcja)

Rzut (projekcja)

Rzut (projekcja)

Selekcja jako rzut (projekcja) Jeśli w zapytaniu selekcyjnym pominięto warunki selekcji (warunek po słowie kluczowym WHERE), to mamy do czynienia z rzutem (projekcją). Jeżeli określimy nazwy kolumn w zapytaniu selekcyjnym, to instrukcja SELECT języka SQL staje się kombinacją operatorów selekcji (RESTRICT) i rzutu (PROJECT) algebry relacyjnej. SELECT Poziom FROM Moduły      Poziom 1 1 3 3 2 1 1 Wynik selekcji

Struktura typowego zapytania selekcyjnego - przykłady Powtarzające się wartości są dozwolone w SQL ale są niedozwolone w relacyjnym modelu danych. Aby uzyskać prawdziwie relacyjny wynik na powyższe zapytanie, musimy do klauzuli SELECT dodać słowo kluczowe DISTINCT (różne). Usuwa to powtarzające się wartości w tabeli. SELECT DISTINCT Poziom FROM Moduły Poziom 1 3 2 Wynik selekcji z poprzedniego zapytania

Wybór krotek z uporządkowaniem wyniku wyszukiwania SELECT Nazwisko, Imię, Zarobki FROM pracownicy WHERE Zarobki>1000) ORDER BY Nazwisko; Wybierz pola Nazwisko, Imię, Zarobki z rekordów tabeli o nazwie pracownicy dla których pole Zarobki ma wartość większą niż 1000 i posortuj je wg pola Nazwisko Aby uzyskać listę w porządku malejącym, do klauzuli ORDER BY musimy dodać słowo kluczowe DESC po nazwie atrybutu .

Grupowanie krotek do obliczeń klauzula GROUP BY Klauzula (instrukcja) GROUP BY dzieli dane wyselekcjonowane z bazy danych na grupy, biorąc za podstawę wartości w określonej kolumnie lub zbiorze kolumn, i umożliwia wykonanie obliczeń podsumowujących (agregujących) na wartościach w każdej grupie, Ta instrukcja dzieli dane na grupy, biorąc za podstawę wartości w określonej kolumnie lub zbiorze kolumn, i umożliwia wykonanie obliczenia podsumowującego wartości w każdej grupie. W powyższym wypadku dla każdej grupy wykonujemy zliczenie liczby wierszy w grupie i obliczenie średniej pensji w grupie. do grupy funkcji agregujących należą następujące funkcje: Count( ) – oblicza ilość wystąpień, Max( ) - wyznacza wartość największą w grupie, Min( ) - wyznacza wartość najmniejszą w grupie wartości, Avg() - wyznacza wartość średnią w grupie Sum() - suma wartości w grupie

Funkcje agregujące - przykłady

Funkcje agregujące - przykłady

Grupowanie krotek do obliczeń klauzula GROUP BY - przykład SELECT NazwaWydziału, avg(Pensja), count(*) FROM Wykładowcy GROUP BY NazwaWydziału Tabela Wykładowcy NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.00 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 237       Jones S       SL 23500.00 145       Thomas P         wynik Studia informatyczne 22000.00 3 Studia biznesu 20000.00   2

Grupowanie krotek do obliczeń klauzula HAVING - przykład Klauzula GROUP BY może również mieć swoją własną klauzulę ograniczającą "WHERE ' - HAVING. Następująca instrukcja wyszukuje z naszej bazy danych tylko te wydziały, które mają więcej niż dwóch wykładowców: NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.oo 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 237       Jones S       SL 23500.00 145       Thomas P         Tabela Wykładowcy SELECT NazwaWydziału FROM Wykładowcy GROUP BY NazwaWydziału HAVING count(*) > 2 wynik Studia informatyczne

Funkcje agregujące - przykłady

Kolejność klauzul w zapytaniu selekcyjnym Select … From … Where … Group by Having Order by

Przykłady zapytań selekcyjnych 1 2 3

Przykłady zapytań selekcyjnych 1 2 3

Przykłady zapytań selekcyjnych

Zapytania zagnieżdżone - przykład

Zapytania zagnieżdżone - przykład Wykonywanie podzapytania może być powtarzane. W takim wypadku otrzymujemy ciąg wartości do porównywania z wynikami najbardziej zewnętrznego zapytania. Rozważmy na przykład następujące zadanie: Wypisz listę nazwisk pracowników, nazw wydziałów i pensji wszystkich wykładowców, którzy zarabiają więcej niż wynosi średnia pensja pracownika ich wydziału. Tabela Wykładowcy NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.oo 237       Jones S       SL 23500.00 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 145       Thomas P         SELECT NazwiskoPrac, NazwaWydziału, Pensja FROM Wykładowcy L WHERE Pensja>        (SELECT AVG(Pensja)         FROM Wykładowcy         WHERE L.NazwaWydziału = NazwaWydziału)

Zapytania zagnieżdżone - przykład Słowo "strukturalny" w strukturalnym języku zapytań (SQL) pierwotnie odnosiło się do możliwości zagnieżdżania zapytań w instrukcjach SELECT. Na przykład, aby znaleźć osobę, która zarabia więcej niż Jones NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.oo 237       Jones S       SL 23500.00 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 145       Thomas P         Tabela Wykładowcy SELECT Nrprac, NazwiskoPrac FROM Wykładowcy         WHERE Pensja >         (SELECT Pensja         FROM Wykładowcy         WHERE NazwiskoPrac = 'Jones S’') SQL wykonuje na początku najbardziej wewnętrzne zapytanie, którego wynik jest porównywany z wynikiem zwracanym przez najbardziej zewnętrzne zapytanie.

Złączenia tabel - przykład SQL wykonuje złączenia relacyjne przez wskazanie wspólnych atrybutów w klauzuli WHERE instrukcji SELECT. Na przykład poniższa instrukcja SELECT wydobywa dane z tabel Wykładowcy i Moduły, które są istotne dla osób pracujących na wydziale ‘studia informatyczne’. Konkretny warunek (lub warunki) użyty do określenia złączenia jest nazywany warunkiem złączenia. W powyższym przykładzie warunkiem złączenia jest L.NrPrac = M.NrPrac. Tabela Wykładowcy NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.oo 237       Jones S       SL 23500.00 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 145       Thomas P         SELECT NazwiskoPrac, Pensja, NazwaModulu FROM Wykladowcy L, Modufiy M WHERE L.NrPrac = M.NrPrac

Inne złączenia tabel

Złączenie (złączenie naturalne) tabel

Złączenie (złączenie naturalne) tabel

Złączenie (złączenie naturalne) tabel

Złączenie (złączenie naturalne) tabel

Złączenie (złączenie naturalne) tabel NATURAL JOIN lub JOIN wykonuje złączenie dwóch tabel, korzystając ze związku klucz główny - klucz obcy (wtórny), o których informacja jest przechowywana w definicji tabel, przy założeniu, ze kolumny złączenia mają tę samą nazwę w obu tabelach. Operator złączenia naturalnego może być użyty w klauzuli FROM. Jeżeli nazwa klucza głównego-klucza obcego są rożne, to zapytanie może mieć następującą postać: SELECT NazwaModułu, NazwiskoPrac FROM Wykładowcy NATURAL JOIN Moduły Jeżeli nazwa jest różna, musielibyśmy przepisać zapytanie w następujący sposób: SELECT NazwaModulu, NazwiskoPrac FROM Wykładowcy L JOIN Moduły M ON L.NrPrac = M.KodPrac

Złączenie (złączenie naturalne) tabel

Własności złączenia naturalnego

Własności złączenia naturalnego

Złączenie Θ-join

Złączenie Θ-join

Złączenie warunkowe - przykład

Złączenie zewnętrzne tabel

Złączenie zewnętrzne lewostronne

Złączenie zewnętrzne lewostronne

Złączenie zewnętrzne prawostronne

Złączenie zewnętrzne prawostronne

Złączenie zewnętrzne pełne FULL OUTER JOIN

Przykłady złączeń Tabele: Kobiety Faceci imie Wiek Anna 23 Maria 34 Sabina 43 Teresa 55 Wanda 33 Edyta 56 Zofia Mirosława Imie Wiek Jan 33 Henryk 55 Józef 21 Marian 18 Tomasz 44 Zbigniew 76 SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana, Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani FROM Faceci NATURAL JOIN Kobiety; WYNIK=Zbiór pusty, bo złączenie naturalne wymaga równości wszystkich kolumn

Przykłady złączeń cd.. SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana, Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani FROM Faceci JOIN Kobiety ON Faceci.Wiek = Kobiety.Wiek ORDER BY WiekPana, Pan, WiekPani; Pan WiekPana Pani WiekPani Jan 33 Wanda Mirosława Henryk 55 Teresa SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana, Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani FROM Faceci NATURAL JOIN Kobiety; Wynik=zbiór pusty

Przykłady złączeń cd.. SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana, Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani FROM Faceci JOIN Kobiety ON Faceci.Wiek <= Kobiety.Wiek ORDER BY WiekPana, Pan, WiekPani; Pan WiekPana Pani WiekPani Marian 18 Anna 23 Zofia Mirosława 33 Maria 34 ………….. Henryk 55 Teresa Edyta 56

Złączenie RIGHT JOIN SELECT … FROM T1 RIGHT JOIN T2 ON <warunek złączenia> WHERE <warunek wyboru>; WYNIK=Prawie jak „zwykłe” złączenie, z tym, że wiersze z prawej tabeli nie mające odpowiedników w lewej tabeli są uzupełniane wartościami NULL Kolejność tabel jest istotna!

Przykłady złączeń cd.. SELECT * FROM Faceci RIGHT JOIN Kobiety ON Faceci.Wiek= Kobiety.Wiek; Pan WiekPana Pani WiekPani Null Anna 23 Maria 34 Sabina 43 Henryk 55 Teresa Jan 33 Wanda Edyta 56 Zofia Mirosława

Przykłady złączeń cd.. SELECT * FROM Kobiety LEFT JOIN Faceci ON Faceci.Wiek= Kobiety.Wiek; Pani WiekPani Pan WiekPana Anna 23 Null Maria 34 Sabina 43 Teresa 55 Henryk Wanda 33 Jan Edyta 56 Zofia Mirosława

Przykłady złączeń cd.. SELECT * FROM Kobiety RIGHT JOIN Faceci ON Faceci.Wiek = Kobiety.Wiek; Pani WiekPani Pan WiekPana Wanda 33 Jan Teresa 55 Henryk Null Józef 21 Marian 18 Tomasz 44 Zbigniew 76 Mirosława

Przykłady złączeń cd.. Konstrukcje JOIN i LEFT JOIN są często traktowane jako synonimy, ale to nieprawda: Jeżeli w tabeli znajdującej się po prawej stronie ON w konstrukcji LEFT JOIN nie ma żadnych wierszy, dla prawej tabeli użyty zostanie wiersz z samymi wartościami NULL; SELECT Kobiety.* FROM Kobiety JOIN Faceci ON Kobiety.Wiek = Faceci.Wiek WHERE Faceci.Wiek IS NULL; Wynik jest zbiorem pustym

Przykłady złączeń cd.. SELECT Kobiety.* FROM Kobiety LEFT JOIN Faceci ON Kobiety.Wiek = Faceci.Wiek WHERE Faceci.Wiek IS NULL; imie Wiek Anna 23 Maria 34 Sabina 43 Edyta 56 Zofia Znajdź wiersze tabeli Kobiety nie mające odpowiedników w tabeli Faceci

Złączenie zewnętrzne pełne FULL OUTER JOIN

Złączenie zewnętrzne tabel W SQL2 występuje również standardowa składnia złączeń zewnętrznych. Na przykład lewostronne, prawostronne i obustronne złączenia zewnętrzne zostałyby określone w SQL2 w następujący sposób: SELECT * FROM Wykladowcy L LEFT OUTER JOIN Moduly M ON L.NrPrac = M.KodPrac SELECT * FROM Wykladowcy L RIGHT OUTER JOIN Moduly M ON L.NrPrac = M.KodPrac SELECT NazwaModulu, NazwiskoPrac FROM Wykladowcy L FULL OUTER JOIN Moduly M ON L.NrPrac = M.KodPrac

Iloczyn kartezjański krotek

Iloczyn kartezjański krotek

Suma tabel - przykład Operator sumy języka SQL odpowiada operatorowi sumy algebry relacyjnej. Daje on możliwość połączenia wyników dwóch zgodnych zapytań. Na przykład poniższe zapytanie produkuje wynik łączący informacje na temat modułów ‘studia informatyczne’ z modułami na ‘wydziale elektrycznym’. Tabela Wykładowcy NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.oo 237       Jones S       SL 23500.00 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 145       Thomas P         SELECT NazwaModulu, Poziom FROM Moduly WHERE KodKursu = 'CSD' UNION SELECT NazwaModulu, Poziom FROM Moduly WHERE KodKursu = 'EED'

Suma tabel - przykład

Suma tabel - przykład

Suma tabel - przykład np.:

Różnica tabel - przykład Np.:

Różnica tabel - przykład

Różnica tabel z wykorzystaniem EXCEPT - przykład lub Np.:

Różnica tabel z wykorzystaniem złączeń - przykład Np.:

Iloczyn tabel - przykład Operator iloczynu języka SQL odpowiada operatorowi iloczynu algebry relacyjnej. Daje on możliwość porównywania wyników dwóch zgodnych zapytań. Na przykład poniższe zapytanie produkuje wynik wspólnych informacje na temat modułów ‘studia informatyczne’ z modułami na ‘wydziale elektrycznym’. Tabela Wykładowcy NrPrac NazwiskoPrac Status NazwaWydziału Pensja 234       DaviasT L Studia informatyczne 16000.oo 237       Jones S       SL 23500.00 345  Evans R PL 26500.00 123      Smith J Studia biznesu 16500.00 145       Thomas P         SELECT NazwaModulu, Poziom FROM Moduly WHERE KodKursu = 'CSD' INTERSECT SELECT NazwaModulu, Poziom FROM Moduly WHERE KodKursu = 'EED'

Iloczyn tabel - przykład

Podzielenie tabel (division)

Podzielenie tabel (division)

Operacje z wykorzystaniem kursora

Operacje z wykorzystaniem kursora

Operacje pozycyjne UPDATE, DELETE z wykorzystaniem kursora

Perspektywy – widoki (views)

Perspektywy – widoki (views)

Modyfikacja perspektyw

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Zabezpieczenia baz danych

Zabezpieczenia baz danych cd..

Spójność bazy danych

Rodzaje spójności bazy danych

Integralność referencyjna - przykład Integralność referencyjną definiujemy już w SQL89 przez specyfikację klucza obcego. Poniższe definicje określają, że NrPrac w tabeli Moduły ma zostać ustawione na null, jeżeli powiązany rekord wykładowcy jest usuwany. Więzy integralności referencyjnej określają również, że jeśli dokonamy jakiejkolwiek zmiany w numerze pracownika w rekordzie wykładowcy, to zmiana ta powinna zostać odzwierciedlona w powiązanych rekordach modułów.

Integralność referencyjna cd..przykładu CREATE TABLE Wykładowcy           (Nrprac Number(5),            Nazwiskoprac Varchar(15),             Status Varchar(10),             NazwaWydziału(Varchar(20),             Pensja Decimal(7, 2),             PRIMARY KEY (Nrprac))

Integralność referencyjna cd..przykładu CREATE TABLE Moduły (NazwaModulu Char(15),     Poziom Smallint,  KodKursu Char(3),  NrPrac Number(5), PRIMARY KEY (NazwaModutu) FOREIGN KEY (Nrprac) references Wykladowcy)     ON DELETE SET NULL ON UPDATE CASCADE)

Integralność referencyjna cd.. W SQL2 opcjami propagacji są NO ACTION, CASCADE, SET DEFAULT i SET NULL. Opcje CASCADE i SET NULL odpowiadają odpowiednio operacji kaskadowej propagacji (CASCADES) i ustawienia NULL (NULLIFIES). Opcja NO ACTION częściowo odpowiada, ale nie do końca, operacji RESTRICTED. Opcja SET DEFAULT wymusza na systemie używanie zadeklarowanej wartości domyślnej

Integralność dziedziny Integralność dziedziny możemy częściowo określać podając odpowiedni typ danych dla kolumny. Możemy tez użyć klauzuli CHECK, aby wymusić poprawne modyfikacje. Możemy na przykład wymusić, aby wartość wstawiana do kolumny poziom była w określonym zbiorze lub aby numery pracowników mieściły się w podanym zakresie:

Integralność dziedziny - przykłady CREATE TABLE Moduły                                 (NazwaModułu Char(IS),                                 Poziom Smallint,                                 KodKursu Char(3),                                 Nrprac Number(5),                                 PRIMARY KEY (NazwaModułu)                                 FOREIGN KEY (Nrprac IDENTIFIES Wykładowcy)                                 ON DELETE RESTRICT                                 ON UPDATE CASCADE                                 CHECK (Poziom IN 1, 2, 3))               CREATE TABLE Wykładowcy                                 NrPrac Number(5),                                 NazwiskoPrac Varchar(15),                                 Status Varchar( 10),                                 NazwaWydziatu(Varchar(20),                                 Pensja Decimal(7, 2),                                 PRIMARY KEY (NrPrac)                                 CHECK (NrPrac BETWEEN 100 AND 10999))

Integralność danych cd.. Mówimy, że baza danych ma właściwość integralności, kiedy istnieje odpowiedniość między faktami przechowywanymi w bazie danych a światem rzeczywistym modelowanym przez tą bazę. Tą właśnie integralność zapewniają reguły integralności, które można podzielić na dwa rodzaje: integralność encji oraz integralność referencyjną. Integralność encji dotyczy kluczy głównych. Mówi ona, że każda tabela musi mieć klucz główny i że kolumna lub kolumny wybrane jako klucz główny powinny być jednoznaczne i nie zawierać wartości null. Wynika stąd, że w tabeli są zabronione powtórzenia wierszy.

Integralność danych cd.. Integralność referencyjna dotyczy kluczy obcych. Mówi ona, że wartość klucza obcego może się znajdować tylko w jednym z dwóch stanów. Wartość klucza obcego odwołuje się do wartości klucza głównego w tabeli w bazie danych. Czasami wartość klucza obcego może być null, co oznacza że nie ma związku między reprezentowanymi obiektami w bazie danych albo że ten związek jest nieznany. Utrzymywanie integralności referencyjnej oprócz określenia czy klucz obcy jest null, czy nie obejmuje również określenie więzów propagacji. Mówią one co powinno się stać z powiązaną tabelą, gdy modyfikujemy wiersz lub wiersze w tabeli docelowej.

Integralność danych cd.. Są trzy możliwości, które określają co się będzie działo z docelowymi i powiązanymi krotkami dla każdego związku między tabelami w naszej bazie: Ograniczone usuwanie (Restricted). Podejście ostrożne – nie dopuszcza do usuwania rekordu nadrzędnego, jeśli istnieją rekordy podrzędne. Kaskadowe usuwanie (Cascades). Podejście ufne – przy usuwaniu rekordu nadrzędnego usuwa także rekordy podrzędne. Izolowane usuwanie (Isolated). Podejście wyważone – usuwa jedynie rekord nadrzędny.

Asercje jakiejkolwiek tabeli lub dziedziny. W takim wypadku więzy są Więzy mogą być nazywane i określane niezależnie od jakiejkolwiek tabeli lub dziedziny. W takim wypadku więzy są nazywane asercjami. Możemy na przykład zadeklarować asercję, określającą następujące sprawdzanie niezależnie od tabeli Wykładowcy: CREATE ASSERTION NrPracCheck CHECK (NrPrac BETWEEN 100 AND 10999)

Asercje Za każdym razem, gdy instrukcja SQL dokonuje wstawienia, modyfikacji bądź usunięcia wiersza tabeli, istnieje możliwość, że więzy mogą zostać naruszone. SQL89 wymaga, aby system sprawdzał naruszanie więzów pod koniec wykonywania każdej instrukcji. SQL2 umożliwia sprawdzanie więzów pod koniec transakcji. Jeżeli więzy są sprawdzane po każdej instrukcji, to mówimy , ze sprawdzanie odbywa się w trybie natychmiastowym. Jeżeli sprawdzenie następuje pod koniec transakcji, to mówimy, że sprawdzanie odbywa się w trybie opóźnionym. Dlatego dla każdej definicji więzów możemy dołączyć specyfikację tego, czy więzy są sprawdzane z opóźnieniem (DEFERRABLE), czy sprawdzane natychmiast (NOT DEFERRABLE). Początkowy tryb więzów może być określony jako INITIALLY DEFERRED lub INITIALLY IMMEDIATE. Tryb sprawdzania więzów może być następnie w czasie sesji zmieniony za pomocą instrukcji SET CONSTRAINTS, która określa, czy dla listy nazwanych więzów wykonywać sprawdzanie opóźnione czy natychmiastowe.

Zatwierdzanie zmian w bazie danych Instrukcje INSERT, DELETE, UPDATE nie dokonują same trwałych zmian w bazie danych. Aby zmiany wprowadzone przez nie utrwalić, należy wykonać instrukcję COMMIT. Można również zrezygnować z wprowadzania zmian do bazy danych, wycofując je za pomocą instrukcji ROLLBACK. W PostgreSQL domyślnie jest włączona opcja auto-zatwierdzania więc nie trzeba przy pojedynczych instrukcjach wykonywać COMMIT.