Bazy Danych cz 5

background image

1

Modyfikacje danych

Do modyfikacji danych służą trzy polecenia

INSERT

Dodawanie danych do tabeli

UPDATE

Modyfikacja istniejących danych w tabeli

DELETE

Usunięcie danych z tabeli

Podczas dodawania i modyfikacji dane muszą
być zgodne z dziedzinami atrybutów

background image

2

Dodawanie danych INSERT

INSERT INTO

NazwaTabeli

(

lista_kolumn

)

VALUES (

lista_wartości_danych

);

NazwaTabeli

– oznacza tabelę bazową lub

modyfikowalną perspektywę

lista_kolumn

– lista kolumn tabeli oddzielonych

przecinakami (kilka lub jedna kolumna)

lista_wartości_danych

– lista wartości danych

odpowiadających kolejnym atrybutom wymienionym

w liście kolumn

background image

3

Zasady tworzenia użycia INSERT

Parametr

lista_kolumn

jest opcjonalny

Brak parametru oznacza, że polecenie dotyczy wszystkich
kolumn tabeli

Kolejność kolumn określona jest przez kolejność

tworzenia atrybutów

Pojawienie się tego parametru oznacza konieczność
podania wartości dla wszystkich wymienionych kolumn

Wartości domyślne dla kolumn nie wymienionych na

liście lub wartość nieokreślona (NULL)

Liczba parametrów na obu listach musi być identyczna

Zgodność dziedzin kolejnych elementów

Polecenie nie dokonuje automatycznej konwersji typów

background image

4

Przykłady

INSERT INTO Personel
VALUES ('SG16','Alan','Brown','asystent','M',
DATE '25.05.1957',8300,'B003');

Wypisujemy wartości dla wszystkich kolumn

Kolejność kolumn zgodna z kolejnością kolumn w

definicji tabeli

INSERT INTO Personel (pracownikNr, imie,
nazwisko, stanowisko, pensja, biuroNr)
VALUES

('SG44','Anne','Jones','asystent',8100,'B003');

background image

5

INSERT - SELECT

Kopiowanie wybranych wierszy z innych tabel

INSERT INTO NazwaTabeli(

lista_kolumn

)

SELECT ....

Zapytanie SELECT musi zwracać wynik zgodny
ze schematem wskazanej tabeli

Podzapytanie może być złożone

Po klauzuli SELECT może pojawić się kilka nazw

lista_kolumn oraz wynik działania podzapytania SELECT
podlegają tym identycznym regułom ja k w poleceniu

INSERT

background image

6

SELECT nieruchomoscNr, typ, pokoje, czynsz FROM
Nieruchomosc ORDER BY typ DESC, czynsz DESC;

nieruchomoscNr

typ

pokoje

czynsz

PG16

mieszkanie

4

450

PL94

mieszkanie

4

400

PG36

mieszkanie

3

375

PG4

mieszkanie

3

350

PA14

dom

6

650

PG21

dom

5

600

NieruchomoscCzynsz(

nieruchomoscNr

,

typ

,

pokoje

,

czynsz

);

INSERT INTO NieruchomoscCzynsz

SELECT nieruchomoscNr, typ pokoje, czynsz FROM
Nieruchomosc ORDER BY typ DESC, czynsz DESC;

background image

7

Modyfikacja danych

UPDATE NazwaTabeli
SET nazwa_kolumny=wartosc, ...
[WHERE warunek];

Parametr NazwaTabeli może być nazwą tabeli

bazowej lub perspektywy modyfikowalnej

Klauzula SET wskazuje kolumny których wartości

muszą być zmienione

Klauzula WHERE wybiera wiersze, które mają być

zmodyfikowane

Pominięcie klauzuli powoduje modyfikację wszystkich
rekordów

background image

8

Przykłady

UPDATE Personel SET pensja = pensja *1.03;

Modyfikacja dotyczy wszystkich wierszy, pominięta

została klauzula WHERE

UPDATE Personel SET pensja = pensja*1.05
WHERE stanowisko = 'dyrektor';

Modyfikacja będzie dotyczyć tylko tych wybranych

rekordów

UPDATE Personel SET stanowisko = 'dyrektor',
pensja = 18000 WHERE praconskiNr = 'SG14';

Modyfikacja wybranego rekordu

background image

9

Usuwanie danych z tabeli

DELETE FROM

nazwa_tabeli

[WHERE warunek];

nazwa_tabeli

oznacza nazwę tabeli bazowej lub

nazwę perspektywy modyfikowalnej

Pominięcie klauzuli WHERE oznaczać będzie
usunięcie wszystkich rekordów z tabeli

Polecenie bez warunku selekcji nie usuwa samej

tabeli a jedynie zawarte w niej rekordy

Umieszczenie warunku selekcji powoduje usunięcie

tylko wybranych rekordów

background image

10

Przykłady

DELETE FROM Wizyta;

Usuwa wszystkie rekordy z tabeli Wizyta

DELETE FROM Wizyta WHERE
nieruchomoscNr = 'PG4';

Usuwa tylko rekordy odpowiadające określonej

nieruchomości

Klauzula DELETE może zawierać podzapytania
jedynie w sekcji WHERE

Podzapytania skalarne

background image

11

Łączenie tabel wynikowych

Operacje na zbiorach

Suma - UNION, przekrój - INTERSECT, różnica – EXCEPT
(MINUS)

Zachowanie schematów

Operacje na zbiorach mogą być wykonane w oparciu

o wskazane kolumny lub wszystkie wspólne kolumny

CORRESPONDING BY

CORRESPONDING

Dodanie klauzuli ALL powoduje uwzględnienie
wszystkich wierszy

Duplikaty nie są usuwane

background image

12

Suma zbiorów

Podaj listę wszystkich miast, w których znajduje się

biuro lub nieruchomość

Dane znajdują się w dwóch tabelach Biuro oraz

Nieruchomosc

( SELECT miasto FROM Biuro WHERE Miasto IS NOT NULL )

UNION

( SELECT miasto FROM Nieruchomosc WHERE miasto IS NOT
NULL
);

Wynik końcowy jest sumą wszystkich wierszy z

pierwszego i drugiego zapytania

Duplikaty wierszy są usuwane z wyniku

background image

13

( SELECT * FROM Biuro WHERE miasto IS NOT NULL )

UNION CORRESPONDING BY miasto

( SELECT * FROM Nieruchomość WHERE miasto IS NOT
NULL
);

Jawne wskazanie kolumny po której odbywać się będzie
sumowanie

Wskazane kolumny muszą mieć identyczne dziedziny oraz
nazwy

Zmiana nazwy kolumny może być dokonana przez operator AS

CORRESPONDING BY miasto

Użyte będą wszystkie kolumny posiadające te same nazwy i

schematy

Kolejność wyników określona jest przez pierwsze zapytanie

background image

14

Przekrój zbiorów - INTERSECT

Wynikiem działania operatora jest tabela zawierająca
wspólne wiersza dwóch tabel

Podaj listę wszystkich miast w których znajduje się i

biuro i nieruchomość

( SELECT miasto FROM Biuro)

INTERSECT

( SELECT miasto FROM Nieruchomosc);

Obliczenie tabeli pośredniej pierwszego zapytania

Obliczenie tabeli pośredniej trzeciego zapytania

Utworzenie jednej tabeli wynikowej składającej się z wierszy

występujących w obu wyliczonych tabelach pośrednich

background image

15

(SELECT * FROM Biuro )

INTERSECT CORRESPONDING BY miasto

(SELECT * FROM Nieruchomosc);

Powyższe zapytanie może być wykonane również w inny

sposób

SELECT DISTINCT

b.miasto

FROM

Biuro b

,

Nieruchomosc d

WHERE

b.miasto

=

d.miasto

;

SELECT DISTINCT

miasto

FROM

Biuro b

WHERE EXIST

( SELECT * FROM

Nieruchomosc d

WHERE

b.miasto

=

d.miasto

);

background image

16

Różnica zbiorów – EXCEPT (MINUS)

Podaj listę wszystkich zbiorów, w których znajduje się

biuro, ale nie ma żadnej nieruchomości

( SELECT miasto FROM Biuro )

EXCEPT

( SELECT miasto FROM Nieruchomosc );

Obliczenie tabeli pośredniej za pomocą pierwszego
zapytania

Obliczenie drugiej tabeli pośredniej za pomocą

drugiego zapytania

Utworzenie tabeli końcowej z wierszy należących do
pierwszej tabeli pośredniej ale nie występuje w drugiej

background image

17

( SELECT * FROM Biuro )

EXCEPT CORRESPONDING BY miasto

( SELECT * FROM Nieruchomosc);

SELECT DISTINCT miasto FROM Biuro
WHERE miasto NOT IN

( SELECT miasto FROM

Nieruchomosc);

SELECT DISTINCT

miasto

FROM

Biuro b

WHERE NOT EXIST

( SELECT * FROM

Nieruchomosc d

WHERE

b.miasto

=

d.miasto

)

;

background image

18

Zapytania dotyczące wielu tabel

Podstawą zapytania dla wielu tabel jest

złączenie

Operacja złączenia

łączy informacje z dwu (lub kilku)

tabel

, wybierając z nich takie, które w kolumnach

złączenia mają takie

same wartości

Złączenia są stosowane, gdy tabela wynikowa

zawierać będzie kolumny z różnych tabel

Poszczególne tabele pojawiające się na liście FROM

oddzielamy przecinkami

Jeżeli nazwy kolumn w tabelach mogą się powtarzać

stosujemy

aliasy nazw dla tabel

background image

19

Złączenia proste

Podaj nazwy klientów, którzy odwiedzili nieruchomości.

Wraz z danymi klienta podaj zgłoszone uwagi

Zapytanie dotyczy dwóch tabel

Klient

oraz

Wizyta

Obydwie tabele zawierają kolumnę

klientNr

więc

muszą być zastosowane aliasy

Jednoznaczne określenie pochodzenia kolumny

SELECT

k.klientNr

,

imie

,

nazwisko

,

nieruchomoscNr

,

uwagi

FROM

Klient k

,

Wizyta w

WHERE

k.klientNr

=

w.klientNr

;

background image

20

Jeżeli nazwa kolumny nie jest poprzedzona nazwą tabeli
lub nazwą zastępczą SZBD automatycznie wybierze

odpowiednią tabelę

Błędy mogą się pojawić dla identycznych nazw kolumn

Wynikiem działania tego zapytania są wiersze obu tabel,

które w kolumnach

klientNr

mają takie same wartości

Kolumny te nazywane są

kolumnami złączenia

Kolumny złączenia muszą mieć zgodne schematy

background image

21

Złączenie wewnętrzne

Złączenie wewnętrzne tworzy kombinację dwóch tabel i
wiąże je na podstawie wartości ich kolumn

Kolumny muszą mieć identyczne schematy

tabela_1

INNER JOIN

tabela_2

ON

kolumna_z_tabeli_1

=

kolumna_z_tabeli_2

Słowa kluczowe INNER JOIN może być zastąpione
słowem JOIN

Zastosowanie klauzuli WHERE dotyczyć będzie całego
złączenia

Obliczany jest po dokonaniu złączenia

background image

22

SELECT

klientNr

,

imie

,

nazwisko

,

nieruchomoscNr

,

uwagi

FROM

Klient

INNER JOIN

Wizyta

ON

Klient.klientNr = Wizyta.KlientNr;

Do złączenia kolumn można zastosować dowolny

operator

<, >, <=, >=, <>,

LIKE

Złączenie uzyskane za pomocą operatora = nazywamy

równozłączeniem

Operacja złączenia może dotyczyć

kilku tabel

Niektóre SZBD wymagają zastosowania nawiasów
ograniczających kolejne złączenie

background image

23

Alternatywne sposoby zapisu

SELECT

klientNr

,

imie

,

nazwisko

,

nieruchomoscNr

,

uwagi

FROM

Klient

INNER JOIN

Wizyta

ON

Klient.klientNr = Wizyta.KlientNr;

SELECT

klientNr, imie, nazwisko, nieruchomoscNr, uwagi

FROM

Klient

INNER JOIN

Wizyta

USNIG

klientNr;

SELECT

klientNr, imie, nazwisko, nieruchomoscNr, uwagi

FROM

Klient

NATURAL JOIN

Wizyta;

background image

24

Wielozłączenia

Podaj nazwy klientów, którzy odwiedzili nieruchomości.

Wraz z danymi klienta podaj zgłoszone uwagi oraz datę

rejestracji klienta

SELECT

klientNr

,

imie

,

nazwisko

,

nieruchomoscNr

,

uwagi,

dataRejestracji, biuroNr

FROM

Klient

INNER JOIN

Wizyta

ON

Klient.klientNr

=

Wizyta.KlientNr

INNER JOIN

Rejestracja

ON

Wizyta.klientNr

=

Rejestracja.klientNr

;

background image

25

Złączenie trzech tabel

Dla każdego biura podaj numery i nazwiska pracowników,

którzy nadzorują nieruchomości. W wyniku podaj także

miasto, w którym znajduje się biuro, oraz nieruchomości

nadzorowane przez pracownika

Tabele: Biuro, Personel, Nieruchomosc

Informacje z tabel Biuro i Personel złączone są za pomocą

warunku

Biuro.biuroNr = Personel.biuroNr

Połączenie pracownika z biurem w którym pracuje

Tabele Personel oraz Nieruchomosc związane są za

pomocą

warunku

Personel.PracownikNr

=

Nieruchomośc.PracownikNr

Połączenie pracowników z nadzorowanymi przez nich

nieruchomościami

background image

26

SELECT

b.biuro

,

b.miasto

,

p.pracownikNr

, imie, nazwisko,

nieruchomoscNr

FROM

Biuro b

,

Personel p

,

Nieruchomosc d

WHERE

b.biuroNr

=

p.biuroNr

AND

p.pracownikNr

=

d.pracownikNr

ORDER BY

b.biuroNr

,

p.pracownikNr

,

nieruchomoscNr

;

SELECT

bp.biuro

,

bp.miasto

,

bp.pracownikNr

, imie,

nazwisko, nieruchomoscNr

FROM (

Biuro b

JOIN

Personel p

USING

biuroNr

) AS

bp

JOIN

Nieruchomosc

USING

pracownikNr

;

background image

27

Obliczanie złączenia

Każde

złączenie

jest

podzbiorem

iloczynu

kartezjańskiego

dwóch tabel

Iloczyn kartezjański

dwóch tabel jest tabelą, która

składa się ze wszystkich możliwych par wierszy z

dwóch tabel składowych

Tabela wynikowa zawiera

wszystkie

kolumny

pierwszej i drugiej tabeli iloczynu kartezjańskiego

SELECT [ DISTINCT | ALL ] {

* | lista_kolumn

)

FROM

NazwaTabeli1

CROSS JOIN

NazwaTabeli2

;

background image

28

1.

Utwórz iloczyn kartezjański tabel wymieninych po
klauzuli FROM

2.

Jeżeli istnieje klauzula WHERE, to zastosuj warunek

selekcji dla każdego wiersza iloczynu (pozostają

tylko te wiersze, które spełniają warunek)

3.

Dla pozostałych wierszy ustal wartość każdego
elementu z listy SELECT i wygeneruj jeden wiersz

wyniku

4.

Jeżeli

zastosowano

słowo

DISTINCT,

usuń

powtarzające się wiersze z tabeli wynikowej

5.

Jeżeli występuje klauzula ORDER BY, uporządkuj

tabelę wynikową według podanych kryteriów

background image

29

Złączenia zewnętrzne

Złączenia wewnętrzne łączy w pary wiersze z dwóch

tabel jeżeli mają takie same wartości w wybranej

kolumnie

Jeżeli wiersz tabeli nie zostanie połączony w parę to nie

trafia do tabeli wynikowej

Złączenie zewnętrzne pozwala zachować wiersze nie

spełniające tego warunku

Biuro
biuroNr

miasto

B003

Glasgow

B004

Bristol

B002

Londyn

Nieruchomosc
nieruchomoscNr miasto
PA14

Aberdeen

PL94

Londyn

PG4

Glasgow

background image

30

SELECT

b.*

,

d.*

FROM

Biuro b

,

Nieruchomosc d

WHERE

b.miasto

=

d.miasto

;

SELECT

b.*

d.*

FROM

Biuro b

INNER JOIN

Nieruchomosc d

ON

b.miasto

=

d.miasto

;

Tabela wynikowa ma dwa wiersze, w których występują
takie same miasta

Nie istnieje wiersz z miastem Bristol i Aberdeen

W celu włączenia tych wierszy należy zastosować

złączenia zewnętrzne

Lewostronne, prawostronne, pełne

biuroNr

miasto

nieruchomoscNr miasto

B003

Glasgow

PG4

Glasgow

B002

Londyn

PL94

Londyn

background image

31

Lewostronne złączenie zewnętrzne

Złączenie lewostronne pozwala uwzględnić w wyniku

również te wiersze, które nie mają swojego

odpowiednika w drugiej tabeli

Zawsze uwzględnione zostaną wiersze z lewej tabeli

SELECT

b.*

,

d.*

FROM

Biuro b

LEFT JOIN

Nieruchomosc d

ON

b.miasto

=

d.miasto

;

biuroNr

miasto

nieruchomoscNr miasto

B003

Glasgow

PG4

Glasgow

B002

Londyn

PL94

Londyn

B004

Bristol

NULL

NULL

background image

32

Prawostronne złączenie zewnętrzne

W wyniku uwzględniane są wszystkie wiersze
znajdujące się w prawej tabeli złączenia

SELECT

b.*

,

d.*

FROM

Biuro b

RIGHT JOIN

Nieruchomosc d

ON

b.miasto

=

d.miasto

;

biuroNr

miasto

nieruchomoscNr miasto

B003

Glasgow

PG4

Glasgow

B002

Londyn

PL94

Londyn

NULL

NULL

PA14

Abredeen

Biuro
biuroNr

miasto

B003

Glasgow

B004

Bristol

B002

Londyn

Nieruchomosc
nieruchomoscNr miasto
PA14

Aberdeen

PL94

Londyn

PG4

Glasgow

background image

33

Pełne złączenie zewnętrzne

Pełne złączenie wewnętrzne umożliwia uwzględnienie

wszystkich niedopasowanych wierszy, zarówno z

lewej

jak i

prawej

tabeli złączenia

SELECT

b.*

,

d.*

FROM

Biuro b

FULL JOIN

Nieruchomosc d

ON

b.miasto

=

d.miasto

;

biuroNr

miasto

nieruchomoscNr miasto

B003

Glasgow

PG4

Glasgow

B002

Londyn

PL94

Londyn

NULL

NULL

PA14

Abredeen

B004

Bristol

NULL

NULL


Document Outline


Wyszukiwarka

Podobne podstrony:
kwerendy wybierające, SCI, OB-IV, bazy danych cz I
Bazy Danych cz III [tryb zgodności]
Bazy danych - cz zagadnie do egzaminu, Automatyka i Robotyka, Semestr 3, Bazy danych, BD, BD, Ba
Bazy Danych cz II [tryb zgodnos Nieznany (2)
kwerendy podsumowujące, SCI, OB-IV, bazy danych cz I
Bazy Danych cz 2
Bazy Danych cz 3
Bazy Danych cz 6
Bazy Danych cz 4
Bazy Danych cz 1
3 Bazy danych SQL cz 1 wykład
Bazy danych - podstawowe kroki w projektowaniu cz 2 - wyklady, Zajęcia z Baz Danych - MS Access, cz
Bazy danych - podstawowe kroki w projektowaniu cz 2 - wyklady, Zajęcia z Baz Danych - MS Access, cz
M Smyczek i M Kaim Od zera do ECeDeeLa cz 5 Bazy danych
3 Bazy danych SQL cz 2 wykład
3 Bazy danych SQL cz 2 wykład
Bazy Danych Elementy Jezyka SQL cz I
3 Bazy danych SQL cz 2 wykład

więcej podobnych podstron