Bazy danych. Informacje podstawowe



Podobne dokumenty
Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Przestrzenne bazy danych Podstawy języka SQL

Systemy GIS Tworzenie zapytań w bazach danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Relacyjne bazy danych. Podstawy SQL

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

Autor: Joanna Karwowska

Tadeusz Pankowski Relacyjne bazy danych. są podstawą zachodniej cywilizacji

SQL (ang. Structured Query Language)

Bazy danych. Dr inż. Paweł Kasprowski

Model relacyjny. Wykład II

Paweł Rajba

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Model relacyjny. Wykład II

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Relacyjne bazy danych. Podstawy SQL

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład 6. SQL praca z tabelami 3

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Microsoft SQL Server Podstawy T-SQL

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Technologie baz danych

RBD Relacyjne Bazy Danych

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

1 Wstęp do modelu relacyjnego

3. Podzapytania, łączenie tabel i zapytań

Oracle11g: Wprowadzenie do SQL

Autor: Joanna Karwowska

Ref. 7 - Język SQL - polecenia DDL i DML

SQL Structured Query Language

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

SZKOLENIE: Administrator baz danych. Cel szkolenia

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Podstawy języka SQL cz. 2

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Relacyjny model danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Grupowanie i funkcje agregujące

Bazy danych SQL Server 2005

Wykład 8. SQL praca z tabelami 5

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Teoretyczne podstawy informatyki

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Język SQL, zajęcia nr 1

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Wykład 5. SQL praca z tabelami 2

Autor: Joanna Karwowska

Zadania z SQLa (MS SQL Server)

SQL Structured Query Language

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Projektowanie relacyjnych baz danych

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Wprowadzenie do baz danych

Współczesne systemy baz danych

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

P o d s t a w y j ę z y k a S Q L

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Bazy danych 7. SQL podstawy

SQL - Structured Query Language. strukturalny język zapytań

Operacja Teta-złączenia. v1 v1 Θ v2

SQL Structured Query Language

Współczesne systemy baz danych

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Technologie baz danych

Grupowanie i funkcje agregacji

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wprowadzenie do języka SQL

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1

Język SQL podstawy zapytań

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Wykład XII. optymalizacja w relacyjnych bazach danych

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Dr Michał Tanaś(

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W NOWYM SĄCZU SYLABUS PRZEDMIOTU. Obowiązuje od roku akademickiego: 2011/2012

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Transkrypt:

Bazy danych

Zagadnienia Podstawy relacyjnych baz danych SQL Języki manipulowania w relacjach Aspekty aktywne baz danych Aspekty systemowe baz danych Projektowanie baz danych Zależności funkcyjne i postacie normalne Transakcje bazodanowe Autoryzacja w bazach danych

Literatura J.D. Ullman, J.Widom, Podstawowy wykład z systemów baz danych, Wydawnictwo Naukowo-Techniczne, Warszawa, 2000. T. Pankowski, Podstawy baz danych, Wydawnictwo Naukowe PWN, Warszawa, 1992. L. Banachowski, SQL Język relacyjnych baz danych R. J. Muller, Bazy danych Język UML w modelowaniu danych Jeffrey D. Ullman - Principles of database systems, 1982

Bazy danych Informacje podstawowe

Czym jest baza danych? Zbiór danych istniejących przez długi czas, posiadać odpowiednią strukturę (schemat bazy danych), można na danych wykonywać pewne operacje, reprezentuje pewien fragment rzeczywistości, jest projektowana, tworzona i utrzymywana z punktu widzenia pewnych zastosowań. Zachowane są więzy integralności.

System zarządzania bazą danych Zbiór programów umożliwiających tworzenie i utrzymywanie bazy danych Cechy: Umożliwia dodanie nowej bazy danych i określenia jej schematu Umożliwia zadawanie zapytań Zapewnia możliwość przechowywania dużej ilości danych Jednoczesny dostęp do danych przez wielu użytkowników Umożliwia kontrolę dostępu do poszczególnych danych bazy

Architektura systemu zarządzania bazą danych Moduł zarządzania pamięcią składa się z modułu zarządzania plikami i modułu zarządzania buforami: modułu zarządzania plikami - przechowuje dane o miejscu zapisania plików na dysku i na polecenie modułu zarządzania buforami przesyła zawartość bloku danych lub bloków moduł zarządzania buforami przydziela strony pamięci operacyjnej do odpowiednich bloków Moduł zarządzania zapytaniami przetwarza zapytanie języka SQL na ciąg poleceń żądających dostarczenia określonych danych. Optymalizacja zapytania odpowiedni plan, itd. Indeksy Moduł zarządzania transakcjami

Algebra relacji i SQL

Struktury danych Relacyjna baza danych jest zbiorem relacji. Schemat relacji R(A1, A2,, An) składa się z nazwy relacji R oraz listy atrybutów A1, A2,, An. Każdy atrybut Ai schematu relacji R posiada dziedzinę oznaczoną jako dom(ai). Dziedzina definiuje zbiór wartości jakie dany atrybut może przyjmować. Z atrybutem związany jest więc typ danych.

Struktury danych (2) Relacją r o schemacie R(A1, A2,, An) oznaczoną r(r) nazywamy zbiór k krotek postaci: r = {t1,t2,, tk}. Pojedyncza krotka t jest uporządkowaną listą n wartości: t=< v1,v2,, vn > przy czym vi jest wartością należącą do dom(ai) lub wartością pustą (NULL). i-ta wartość krotki t odpowiadająca wartości atrybutu Ai będzie oznaczona przez t.ai.

Struktury danych (3) Relacja r(r) jest matematyczną relacją stopnia n zdefiniowaną na zbiorze domen: dom(a1), dom(a2),, dom(an) będącą podzbiorem iloczynu kartezjańskiego domen definiujących R: r(r) dom(a1) x dom(a2)x x dom(an)

Charakterystyka relacji Każdy atrybut relacji ma unikalną nazwę Porządek atrybutów w relacji nie jest istotny Porządek krotek w relacji nie jest istotny Wartości atrybutów są atomowe (elementarne) Relacja nie zawiera rekordów powtarzających się

Typy atrybutów Przykładowe typy atrybutów: Char(n) pole tekstowe o stałej długości (jeśli podamy mniej znaków, to pozostałe będą spacjami wypełnione) Varchar(n) pole tekstowe nie dłuższe niż n znaków ( nie ma spacji) Int, Integer liczby całkowite Numeric liczby stałopozycyjne np. Numeric(10,2), 2 miejsca po przecinku Float (8 bytes), Real(4 bytes) liczby zmiennopozycyjne BLOB pola przechowujące liczby binarne

SQL, Algebra relacji SQL (Structured Query Language) język zapytań dla relacyjnych baz danych; Język nieproceduralny użytkownik wyszczególnia operacje co ma być zrobione, a nie w jaki sposób. SQL posiada optymalizator, który wybiera optymalną ścieżkę wykonywania zapytania. SQL ma kilka dialektów. Są nieznaczne różnice pomiędzy różnymi systemami baz danych.

Udostępnienie relacji Udostępnienie relacji (tabeli) o nazwie R: Algebra relacji (AR): R SQL: Select * from R Przykład: select * from Pracownik

Suma Definicja: Operandy R, S tabele jednakowego typu U, wynik: tabela typu U Suma mnogościowa (union): R S = { t t R t S} Student Pracownik Wynik Przykład: select Imie, Nazwisko, NrIndeksu, Rok FROM Student union select Imie, Nazwisko, NrPrac, RokPracy FROM Pracownik

Przekrój Definicja: Operandy R, S tabele jednakowego typu U, wynik: tabela typu U Przekrój (intersect): R S = { t t R t S} Student Pracownik Wynik Przykład: select Imie, Nazwisko FROM Student intersect select Imie, Nazwisko FROM Pracownik

Różnica Definicja: Operandy R, S tabele jednakowego typu U, wynik: tabela typu U Różnica (except): R - S = { t t R t S} Student Pracownik Wynik Przykład: select Imie, Nazwisko FROM Student except select Imie, Nazwisko FROM Pracownik

Selekcja Wypisuje tylko takie krotki, które spełniają warunek. R1 := C (R2), C oznacza warunek Przykład: Sells Wynik AR: Tawerna := bar= Tawerna (Sells) SQL: SELECT * FROM Sells WHERE bar = Tawerna

Selekcja (2) SQL: SELECT * FROM Sells WHERE bar = Tawerna Operatory logiczne: =, <>, >=,<, <=, NOT, LIKE Działanie operatora LIKE: AR: T1 := bar like T% (Sells) SQL: SELECT * FROM Sells WHERE bar like T%

Definicja warunku Definicja warunku E: U zbiór atrybutów, V zbiór stałych (liczb, tekstów), A, A' U, c V, {=,!=, <, <=, >, >=, like,... } operator porównania, Warunkiem nad U nazywamy wyrażenie logiczne E : E ::= A c A A' (E ) not E E or E E and E Krotka r typu U spełnia warunek E, E (r ) = TRUE, jeśli wyrażenie powstałe z E przez podstawienie za każde wystąpienie atrybutu A wartości r.a jest prawdziwe.

Projekcja Wypisuje wszystkie krotki, ale ogranicza atrybuty do wyspecyfikowanej listy. R1 := L (R2), L oznacza listę atrybutów należącą do schematu R2. Przykład: Sells Wynik AR: Prices := beer,price(sells): SQL: SELECT beer,price FROM Sells

Projekcja - formalnie Krotka: r = [A:a, B:b, C:c] typu U={A,B,C} X = {A,C} U Projekcja r na zbiór X: X(r) = {A,C}[A:a, B:b, C:c] = [A:a, C:c] Definicja: Niech r będzie krotką typu U i niech X U. Krotkę t typu X nazywamy projekcją r na X, jeśli t i r mają jednakowe wartości na wszystkich atrybutach ze zbioru X, tzn: t = X(r) A( A X t.a = r.a). X operator projekcji, t.a wartość pola A dla krotki t.

Rozszerzona projekcja Rozszerzona projekcja umożliwiająca tworzenie nowych atrybutów za pomocą wyrażeń arytmetycznych oraz duplikowania istniejących. Przykład: Sells Wynik AR: Prices := Beer+Bar ->B, Bar, Bar (Sells) SQL: SELECT Bar + Beer as B, Bar, Bar FROM Sells

Iloczyn kartezjański R3 := R1 X R2 Łączy każdą krotkę relacji R1 z każdą krotką R2. Przykład: Sells Bar Wynik AR: Cartesian := Sells X Bar SQL: SELECT * FROM Sells, Bar T- SQL: SELECT * FROM Sells CROSS JOIN Bar

Iloczyn kartezjański - formalnie Iloczyn kartezjański krotek: [A:a, B:b]N M[A:a, C:c] = [N.A:a, N.B:b, M.A:a, M.C:c] Uwaga: W iloczynie kartezjańskim występują wszystkie kolumny z obydwu operandów. Prefiksowanie nazwami N i M jest potrzebne dla zapewnienia jednoznaczności nazw pól (kolumn). Gdy atrybuty w krotkach są różne, to prefiksowanie nie jest konieczne.

Złączenie warunkowe R3 := R1 C R2 Na iloczyn kartezjański R1 X R2 nakładany jest warunek C. Złączenie jest nazwane Theta Join. Przykład: Sells Bar Wynik AR: ThetaJoin := Sells Sells.Bar = Bar.Bar Bar SQL: SELECT * FROM Sells INNER JOIN Bar ON Bar.Bar = Sells.Bar

Złączenie naturalne R3 := R1 R2 Łączy relacje R1 i R2 po wspólnym atrybucie. Wspólny atrybut wypisuje tylko raz. Przykład: Sells Bar Wynik AR: Natural := Sells Bar SQL: SELECT * FROM Sells NATURAL JOIN Bar SQL: SELECT * FROM Sells, Bar WHERE Sells.Bar = Bar.Bar

Złączenie naturalne - formalnie Definicja: Niech r i s będą krotkami typów odpowiednio X i Y. Krotka t typu X Y jest złączeniem naturalnym r i s, t = r s, jeśli π X(t) = r i π Y(t) = s. Krotki naturalnie złączalne: [A:a, B:b, C:c, D:d] [A:a, B:b, D:d, E:e, F:f] = [A:a, B:b, C:c, D:d, E:e, F:f] Krotki niezłączalne: [A:a, B:b, C:c, D:d], [A:a, B:b, D:d, E:e, F:f]

Przemianowanie R1 := ρ R1(A1,,An)(R2) Tworzy relację R1 z przemianowanymi atrybutami relacji R2. Przykład: Bar Wynik AR: R:= ρ R(name, addr) (Bar) SQL: SELECT Bar as Name, Address as addr FROM Bar AS R

Schematy operatorów algebry relacji Suma, różnica, przekrój: schematy argumentów operacji są takie same jak schemat wyniku. Selekcja: schemat argumentu jest taki sam jak schemat wyniku. Projekcja: lista atrybutów projekcji mówi o schemacie wynikowym.

Schematy operatorów algebry relacji (2) Iloczyn kartezjański: schemat wynikowy składa się z atrybutów należących do obydwu relacji. Żeby odróżnić atrybuty o tej samej nazwie pochodzące z różnych relacji, należy podać nazwę relacji, np.. R.A Złączenie warunkowe: tak samo jak iloczyn kartezjański. Złączenie naturalne: suma atrybutów dwóch relacji. Przemianowanie: operator określa schemat.

Usuwanie duplikatów R1 := δ (R2). R1 składa się z jednej kopii każdej krotki, która w R2 występuje wiele razy. Przykład: AR: BarDist:= δ( Bar (Sells)) SQL: select distinct Bar FROM Sells

Sortowanie R1 := L (R2) R1 jest listą krotek z R2 posortowaną najpierw po pierwszym atrybucie z listy L, potem po drugim, itd.. Przykład: Sells Wynik AR: Ordered : = Price Sells SQL: select * FROM Sells ORDER BY Price

Agregacje Operacje agregacji nie są operacjami algebry relacji. Na podstawie wszystkich wartości atrybutów obliczają jedną wartość. Przykład: Sells SUM(Price) = 12,50 COUNT(Price) = 4 MAX(Price) = 3,50 AVG(Price) = 3,125 SQL: select avg(price) FROM Sells

Grupowanie R1 := L (R2), L jest listą atrybutów, które są: pojedynczymi atrybutami; AGG(A), gdzie AGG jest funkcją agregującą na atrybucie A; R1 := L (R2) grupuje R2 według wszystkich atrybutów grupujących w L, czyli formułuje jedną grupę dla każdej różnej listy wartości tych atrybutów dla każdej grupy oblicza wartość funkcji agregującej

Grupowanie (2) Przykład 1: Sells Wynik AR: Group := Bar, AVG(Price) -> AvgPrice (Sells) SQL: select Bar, AVG(Price) As AvgPrice FROM Sells GROUP BY Bar Przykład 2: Sells Wynik AR: Group := Bar,Beer, AVG(Price) -> AvgPrice (Sells) SQL: select Bar,Beer, AVG(Price) As AvgPrice FROM Sells GROUP BY Bar,Beer

Grupowanie (3) Wyniki grupowanie można ograniczyć selekcją Przykład: Sells Wynik AR: Group := AVG(Price)>3 Bar,Beer, AVG(Price) -> AvgPrice (Sells)) SQL: select Bar,Beer, AVG(Price) As AvgPrice FROM Sells GROUP BY Bar,Beer having AVG(Price)> 3

Łączenie zewnętrzne obie kolejne instrukcje zwracają wszystkie rekordy X i tylko te rekordy Y, w których <warunek> ma wartość True: SELECT * FROM X LEFT OUTER JOIN Y ON <warunek> SELECT * FROM Y RIGHT OUTER JOIN X ON <warunek>

Łączenie zewnętrzne (2) Pełne łączenie zewnętrzne zwraca wszystkie rekordy obu zestawów, łącząc ze sobą tylko te rekordy, w których warunek jest spełniony (daje wartość True). SQL Server umożliwia pełne łączenia zewnętrzne za pomocą warunku FULL OUTER JOIN: SELECT * FROM X FULL OUTER JOIN Y ON <warunek>

Złączenie zewnętrzne Przykład: SELECT * FROM Sells RIGHT OUTER JOIN Bar ON Bar.Bar = Sells.Bar SELECT * FROM Bar LEFT OUTER JOIN Sells ON Bar.Bar = Sells.Bar SELECT * FROM Bar FULL OUTER JOIN Sells ON Bar.Bar = Sells.Bar Sells Bar Wynik

Operatory mnogościowe (różnica) select Imie, Nazwisko FROM Student except select Imie, Nazwisko FROM Pracownik select s.imie, s.nazwisko from Student as s left outer join Pracownik as p on s.imie = p.imie and s.nazwisko = p.nazwisko where p.imie is null

Operatory mnogościowe (przekrój) select Imie, Nazwisko FROM Student intersect select Imie, Nazwisko FROM Pracownik select s.imie, s.nazwisko from Student as s left outer join Pracownik as p on s.imie = p.imie and s.nazwisko = p.nazwisko where p.imie is not null

Instrukcja SELECT SELECT <ListaPól> FROM <ListaZestawówRekordów> <RodzajŁączenia> JOIN <Warunek> WHERE <KryteriaWyboru> GROUP BY <ListaPólGrupujących> HAVING <KryteriaWyboru> ORDER BY <ListaPólPorządkujących>

Instrukcja WHERE select * FROM Pracownik WHERE Nazwisko < Imie select * FROM Pracownik WHERE Wydzial IN('PPT', 'IZ') select * FROM Pracownik WHERE Wydzial NOT IN('PPT', 'IZ') select * FROM Pracownik WHERE Wydzial IN ('PPT') OR Wydzial IN ('IZ') select * FROM Pracownik WHERE NrPrac BETWEEN 3300 AND 3600 select * FROM Pracownik WHERE NrPrac IS NULL

Podzapytania Q: Podaj wszystkich pracowników, którzy pracują na wydziale, który ma lokalizację we Wrocławiu. Pracownik Lokalizacja SELECT * FROM Pracownik WHERE Wydzial IN (SELECT Wydzial FROM Lokalizacja WHERE Lokalizacja = 'Wroclaw') Wynik

Podzapytania Q: Podaj wszystkie lokalizacje wydziału, na którym pracuje Zaorski. Pracownik Lokalizacja SELECT Lokalizacja FROM Lokalizacja WHERE Wydzial IN (SELECT Wydzial FROM Pracownik WHERE Nazwisko = 'Zaorski') Wynik

Podzapytania Q: Podaj pracowników, których zarobki są mniejsze niż średnia zarobków pracowników. Pracownik Lokalizacja SELECT * FROM Pracownik WHERE Zarobki < (SELECT AVG(Zarobki) FROM Pracownik ) Wynik

Podzapytania Podzapytania mogą być bardziej zagnieżdżone, tzn. w warunku może być następny warunek, itd. W podzapytaniu lewa strona predykatu wymaga zgodnego wyniku z podzapytaniem po prawej stronie. Przykład: Liczba > (podzapytanie zwracające pojedynczą liczbę) Napis = (podzapytanie zwracające pojedynczy napis) Nie może być: Liczba > (Lista liczb)

Podzapytania Składnia z użyciem IN: liczba IN (podzapytanie zwracające listę liczb) text IN (podzapytanie zwracające listę testów) Nie może być: Liczba > (Lista liczb) Może być: Liczba > ANY (Lista liczb) Liczba > ALL (Lista liczb)

Podzapytania Q: Podaj pracowników, których zarobki są większe lub równe niż zarobek przynajmniej jednego pracownika. Pracownik Lokalizacja SELECT * FROM Pracownik WHERE Zarobki > ANY(SELECT (Zarobki) FROM Pracownik ) Wynik

Podzapytania Q: Podaj pracowników, których zarobki są większe niż od zarobku wszystkich pracowników. Pracownik Lokalizacja SELECT * FROM Pracownik WHERE Zarobki >= ALL(SELECT (Zarobki) FROM Pracownik ) Wynik

Podzapytania W przypadku zapytania ze zwykłym podzapytaniem, podzapytanie wykonywane jest jako pierwsze, a wyniki tymczasowe są przechowywane w pamięci SZRBD. Przykład: WHERE Zarob < (SELECT AVG(ZAROB).) Wynik podzapytania jest sprawdzany z każdym wierszem tabeli.

Podzapytania skolerowane Q: Którzy ludzie zarabiają mniej niż wynosi średnia pensja na tym wydziale, na którym dany pracownik pracuje. Pracownik Lokalizacja SELECT * FROM Pracownik AS p WHERE Zarobki < (SELECT AVG(Zarobki) FROM Pracownik AS s WHERE p.wydzial = s.wydzial) Wynik

Podzapytania skolerowane Q: Podaj takie lokalizacje, dla których istnieją pracownicy w nich pracujący. Pracownik Lokalizacja SELECT * FROM Lokalizacja WHERE EXISTS (SELECT * FROM Pracownik WHERE Lokalizacja.Wydzial = Pracownik.Wydzial) Wynik Wyrażenie EXISTS(podzapytanie) jest prawdziwe tylko wtedy, kiedy podzapytanie zwróci co najmniej jeden wiersz

Podzapytania skolerowane Q: Podaj takie lokalizacje, dla których nie istnieją pracownicy w nich pracujący. Pracownik Lokalizacja SELECT * FROM Lokalizacja WHERE NOT EXISTS (SELECT * FROM Pracownik WHERE Lokalizacja.Wydzial = Pracownik.Wydzial) Wynik Wyrażenie NOT EXISTS(podzapytanie) jest prawdziwe tylko wtedy, kiedy podzapytanie nie zwróci żadnego wiersza.

Podzapytania skolerowane W przypadku zapytania ze zwykłym podzapytaniem, podzapytanie wykonywane jest jako pierwsze, a wyniki tymczasowe są przechowywane w pamięci SZRBD. W przypadku zapytań skolerowanych wartość z głównego zapytania jest przekazywana do podzapytania, aby mogło być ono wykonane.

Wstawianie wierszy Pracownik Wynik insert into Pracownik (Imie, Nazwisko, NrPrac, RokPracy, Wydzial, Zarobki) values ('Jadwiga', 'Mrozowska',23000, 8,'PPT', 1200)

Wstawianie wierszy Można opuścić jakiś atrybut: np. RokPracy, Wydział. Jeśli dla tego atrybutu jest zdefiniowana wartość domyślna, wówczas wpisywana jest wartość domyślna. Jeśli nie ma domyślnej wartości to wstawiany jest NULL o ile dla atrybutu można wstawić NULL. Pracownik Wynik insert into Pracownik (Imie, Nazwisko, NrPrac, RokPracy) values ('Jadwiga', 'Hajnicz',23000,4)

Wstawianie wierszy Można opuścić wszystkie atrybuty tabeli. Wtedy należy jednak podać wszystkie wartości. Pracownik Wynik insert into Pracownik values ('Jadwiga', 'Jazwa',23000, 8,'PPT', 1200)

Wstawianie wielu wierszy Można wstawić wiele wierszy do tabeli na podstawie danych z innej tabeli. Pracownik Wynik insert into Pracownik2 (Imie, Nazwisko, NrPrac, Wydzial) select Imie, Nazwisko, NrPrac, Wydzial from Pracownik

Usuwanie danych z tabeli Usuwanie wszystkich danych z tabeli delete from Pracownik2 Usuwanie niektórych krotek delete from Pracownik where Imie = 'Jadwiga' Pracownik Wynik

Usuwanie danych z tabeli Przy usuwaniu można korzystać z podzapytań. Q: Usuń wszystkich pracowników, którzy pracują na wydziale, który ma lokalizację we Wrocławiu delete FROM Pracownik2 WHERE Wydzial IN (SELECT Wydzial FROM Lokalizacja WHERE Lokalizacja = 'Wroclaw') Pracownik2 Wynik

Modyfikowanie wierszy Pracownik Wynik update Pracownik set Wydzial = 'IZ', NrPrac = 22000 WHERE Nazwisko = 'Zaorski'

Modyfikowanie wierszy Pracownik2 Pracownik UPDATE Pracownik2 SET Pracownik2.Wydzial = Pracownik.Wydzial FROM Pracownik2 INNER JOIN Pracownik ON Pracownik2.NrPrac = Pracownik.NrPrac Pracownik2

To tyle.