Temat 1: Strukturalny język zapytań SQL

11
Temat 1: Strukturalny język zapytań SQL

description

Temat 1: Strukturalny język zapytań SQL. - PowerPoint PPT Presentation

Transcript of Temat 1: Strukturalny język zapytań SQL

Page 1: Temat 1: Strukturalny język zapytań SQL

Temat 1: Strukturalny język zapytań SQL

Page 2: Temat 1: Strukturalny język zapytań SQL

Początki SQL sięgają zeszłego stulecia i firmy IBM, w której powstał język SEQUEL. Został on rozwinięty i do dzisiaj znany jest pod nazwą SQL – strukturalny język zapytań. Typowy SQL to język nieproceduralny należący do grupy język deklaratywnych. Wyrażenia SQL nazywane są kwerendami. Pozwalają one na wykonanie takich operacji jak:

-Uzyskiwanie informacji

-Modyfikowanie informacji

-Dopisywanie (wstawianie)

-Usuwanie

-Sterowanie danymi

Strukturalny język zapytań ze względu na czynność (funkcję), jaką dane zapytanie ma wykonać w bazie danych, dzielimy na następujące podgrupy wyrażeń:

DDL JDD Data Definition Language

CREATE, ALTER, DROP, TRUNCATE

Język definiowania danych (JDD) stosowany do tworzenia schematu danych. Definiuje strukturę danych.

DML JMD Data Manipulation Language

INSERT, UPDATE, DELETE

Język manipulowania danymi (JMD) służący do wypełniania bazy danych, usuwania informacji i modyfikowania danych.

DCL JKD Data Control Language

GRANT, DENY, REVOKE Język kontrolowania danych (JKD) sprawuje kontrolę nad transakcjami – steruje nimi.

DQL JZ Data Query Language SELECT Język zapytań (JZ), którego zadaniem jest pobieranie informacji spełniających określone warunki.

TCL JSP Transaction Control Language

COMMIT, ROLLBACK, SAVEPOINT

Język sterowania przepływem (JSP) danych (kontrola transakcji).

Page 3: Temat 1: Strukturalny język zapytań SQL

Podczas pracy z bazą danych zachodzi konieczność wydobycia określonych informacji, zwłaszcza takich, które spełniają pożądany przez nas warunek. Ponieważ zmienna relacyjna (tabela) ma dane pogrupowane dzięki atrybutom (kolumnom), możemy na takich zbiorach danych wykonywać operacje.

Na początek trochę teorii. Operacje, o których mówimy, przedstawia się za pomocą operatorów algebry relacyjnej. Operator taki na wejściu pobiera argumenty będące relacjami, natomiast zwraca relację wynikową.

Operator Symbol

Selekcja б

Projekcja π

Złączenie ⋈Suma U

Page 4: Temat 1: Strukturalny język zapytań SQL

Selekcja

Teoria selekcji zostanie wyjaśniona na podstawie przykładu praktycznego:

Wyobraźmy sobie selekcjonera drużyny piłki nożnej. Jego zadaniem jest wybór zawodników spełniających określone kryteria. Przyjmijmy, że kryterium selekcji będzie wiek powyżej 18 lat.

Matematycznie operacja selekcji będzie miała postać:

бWiek>18 (Zawodnicy)ZAWODNICY

Nr Imię Wiek (lat)

1 Janek 12

2 Marek 15

3 Heniek 22

4 Kornel 34

5 Wojtek 25

6 Tadeusz 43

Gdzie:

бWiek>18 (Zawodnicy)

Warunek selekcji

Atrybut (kolumna tabeli – zbiór określonych cech)

Selekcja

Page 5: Temat 1: Strukturalny język zapytań SQL

W strukturalnym języku zapytań taka selekcja będzie miała postać:

SELECT * FROM zawodnicy WHERE wiek > 18;

Należy pamiętać, że zapytanie kończymy, wpisując znak średnika ;.

Page 6: Temat 1: Strukturalny język zapytań SQL

ProjekcjaProjekcja nazywana bywa również rzutem i możemy ją zdefiniować jako wybór kolumn.Operator projekcji na wejściu przyjmuje nazwę kolumn, a na wyjściu zwraca ich zawartość. Możemy prześledzić to na wcześniejszym przykładzie z selekcjonerem piłkarskim. Wyobraźmy sobie sytuację, że selekcjoner będzie potrzebował listy wszystkich zawodników z kandydatami (zawodnikami powyżej 18 roku życia). Lista będzie musiała składać się z imion i numerów zawodników. Aby otrzymać taki zbiór za pomocą algebry relacyjnej, należy posłużyć się wyrażeniem:

πNr, imię (Zawodnicy)

Operator projekcji (rzutu)

Oddzielone przecinkiem nazwy kolumn (atrybutów)

Nazwa tabeli

Page 7: Temat 1: Strukturalny język zapytań SQL

Wyrażenie to możemy również zapisać za pomocą języka SQL w postaci:

SELECT nr, imie FROM zawodnicy;

Page 8: Temat 1: Strukturalny język zapytań SQL

Złączenie

Złączenie służy do pobierania danych z dwóch lub większej liczby tabel w celu porównania lub zestawienia. W tabelach biorących udział w złączeniu muszą występować kolumny, które są zgodne i spełniają warunki pozwalające na dokonanie złączenia. Zaleca się, aby kolumny te łączyły dwie relacje (tabele) na zasadzie: klucz podstawowy, klucz obcy, chociaż warunek ten nie jest niezbędny do wykonania złączenia.

Dla przykładu wykorzystamy dwie tabele: zawodnicy i pokoje:

Zawodnicy Pokoje

Gdy założymy, że numer gościa (kolumna id_goscia) odpowiada numerowi zawodnika (kolumnie nr), wówczas, chcąc otrzymać zestawienie imienia zawodnika oraz ceny, którą ma zapłacić za pokój, wykonujemy złączenie:

SELECT imie, cena_za_dobe FROM zawodnicy JOIN pokoje ON nr=id_goscia;

Page 9: Temat 1: Strukturalny język zapytań SQL

A oto przykład operacji równozłączenia zapisany językiem algebry relacyjnej:

(Πimie(ZAWODNICY)) ⋈zawodnicy.id = pokoje.id_pokoju (Πcena_za_dobe(POKOJE))

Operator złączenia Znak równości determinujący typ złączenia - równozłączenie

Page 10: Temat 1: Strukturalny język zapytań SQL

Suma (Union)

Teoriomnogościowa suma dotyczy relacji o tym samym schemacie – językiem algebry relacji może być zapisana jako A U B.

Dla przykładu wykorzystaliśmy dwie tabele: prac_p_pomoc i pracownicy_bhp. Jak przedstawiono poniżej, tabele mają tę samą strukturę.

prac_p_pomocpracownicy_bhp

Page 11: Temat 1: Strukturalny język zapytań SQL

Suma tabel wykonana z użyciem operatora algebry relacyjnej:

Πid_pracownika,imie,nazwisko,wiek(prac_p_pomoc) U Πid_pracownika,imie,nazwisko,wiek(pracownicy_bhp)