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

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

Autor: Joanna Karwowska

Relacyjne bazy danych. Podstawy SQL

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

Wykład 6. SQL praca z tabelami 3

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wykład 2. Relacyjny model danych

Wprowadzenie do baz danych

Relacyjne bazy danych. Podstawy SQL

Systemy GIS Tworzenie zapytań w bazach danych

Laboratorium Bazy danych SQL 2

3. Podzapytania, łączenie tabel i zapytań

Język SQL, zajęcia nr 1

SQL (ang. Structured Query Language)

Relacyjne bazy danych. Normalizacja i problem nadmierności danych.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Paweł Rajba

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

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

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

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

WPROWADZENIE DO BAZ DANYCH

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Indeksowanie w bazach danych

Przestrzenne bazy danych Podstawy języka SQL

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Bazy danych - wykład wstępny

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

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

Relacyjne bazy danych

Wykład 5. SQL praca z tabelami 2

Wstęp do relacyjnych baz danych. Jan Bartoszek

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

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

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

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

Model relacyjny. Wykład II

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

Microsoft SQL Server Podstawy T-SQL

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

Język SQL. Rozdział 2. Proste zapytania

Podyplomowe Studia Systemy informatyczne w logistyce

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

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

Bazy danych 6. Klucze obce. P. F. Góra

Model relacyjny. Wykład II

Bazy danych. Dr inż. Paweł Kasprowski

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

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

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

Optymalizacja poleceń SQL Metody dostępu do danych

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

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

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Wykład 8. SQL praca z tabelami 5

Autor: Joanna Karwowska

BAZY DANYCH JĘZYK ZAPYTAŃ BAZ DANYCH SQL. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

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

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

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

SIECI KOMPUTEROWE I BAZY DANYCH

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Język SQL podstawy zapytań

Systemy baz danych. mgr inż. Sylwia Glińska

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Bazy danych 9. SQL Klucze obce Transakcje

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

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Internetowe bazy danych

NORTHWIND. Anonco.pl. ćwiczenia praktyczne. KiK s Tutorials. NORTHWIND dwiczenia praktyczne. ANONCO.PL/SQL SQLSERVERDLAOPORNYCH.WORDPRESS.

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

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

1 Wstęp do modelu relacyjnego

Język SQL, zajęcia nr 2

Bazy danych. Polecenia SQL

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

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

Podstawy technologii WWW

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

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Bazy danych 10. SQL Widoki

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Transformacja modelu ER do modelu relacyjnego

Przykładowa baza danych BIBLIOTEKA

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

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

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Autor: Joanna Karwowska

Transkrypt:

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Integralność danych Aspekty integralności Integralność encji Integralność powiązań Dodatkowe ograniczenia Współczesne SZBD (DBMS), jeśli są poprawnie skonfigurowane, nie dopuszczają instrukcji modyfikacji danych, która narusza integralność danych

Integralność encji CEL: zagwarantowanie unikalności klucza głównego przez wszystkie rekordy w tabeli Rozwiązania: Unikalny klucz główny (PK) jest zdefiniowany dla tabeli (tworzony jest również unikalny indeks) SZBD (DBMS) monitoruje operacje CRUD (create/update/delete) aby zachować unikalność klucza głównego (PK)

Integralność powiązań CEL: zagwarantowanie, że klucze obce wskazują na istniejące rekordy identyfikowane przez odpowiadające im klucze główne Rozwiązania: Klucz główny jest zdefiniowany dla tabeli zawierającej klucz główny + klucz obcy jest zdefiniowany dla tabeli zawierającej klucz obcy aby ustanowić relację SZBD (DBMS) monitoruje operacje CRUD (create/update/delete) aby zachować/podtrzymywać relacje

Integralność powiązań - przykład Sale Budynek Piętro Sala Wyposażenie WOY/21 0 033 Budynek Zasób Sala WOY/21 1 134 WOY/21 Krzesło 033 WOY/21 Stolik 033 klucz główny (PK primary key) klucz obcy (FK foreign key) Każde wyposażenie musi wskazywać na istniejącą salę w tabeli Sale SZBD (DBMS) nie pozwoli na utworzenie wyposażenia, które znajduje się w nieistniejącej sali

Dodatkowe ograniczenia Istnieje możliwość zdefiniowania warunków logicznych, które musza być spełnione przez wszystkie rekordy, np.: Pensja > podatek aby zapewnić, że wartość w kolumnie pensja jest większa od wartości podatku dla każdej osoby w tabeli Te warunki są sprawdzane przy każdej operacji CRUD (create/update/delete) wykonywanej na tabeli

Język SQL SQL Structured Query Language to język używany do: Definiowania struktur danych Aktualizowania informacji Zapytań o informację Istnieją różne wersje standardu SQL: SQL86 a.k.a. SQL1 SQL92 a.k.a. SQL2 SQL:1999 a.k.a SQL3 wyrażenia regularne, kwerendy rekurencyjne, trigery, pewne cechy obiektowości (struktury) SQL:2003 podstawowa obsługa XML, kolumny z automatycznie generowanymi wartościami SQL:2006 pełna obsługa XML SQL:2008 instrukcja TRUNCATE TABLE ekwiwalent DELETE FROM mytable SQL:2013 tymczasowe klucze główne, tymczasowa integralność powiązań

Implementacje SQL Na początku standard SQL bazował na wspólnym zbiorze funkcjonalności zaimplementowanych w systemach bazodanowych IBM i Oracle Standard tylko częściowo zaimplementowany w SZBD innych producentów Dlatego napisanie kodu, który jest przenośny pomiędzy różnymi SZBD (DBMS) jest sztuką! Różni producenci SZBD oferują inne rozszerzenia języka (dialekty języka) zawierające instrukcje procedur jak PL/SQL firmy Oracle czy Transact-SQL Microsoftu

Instrukcja SQL SELECT Instrukcja SELECT służy do wyszukiwania informacji w tabeli lub zbiorze tabel połączonych relacją (klucze główne i klucze obce)

SQL SELECT Typ_sali Budynek Piętro Sala laboratorium WOY/21 0 033 wykładowa WOY/21 3 314 laboratorium WOY/12 1 1221 SELECT * FROM Sale SELECT budynek, sala FROM Sale

SELECT aliasy SELECT budynek AS bud, sala AS sa FROM Sale Wynik zapytania: bud sa WOY/21 033 WOY/21 314 WOY/12 1221

SELECT instrukcja WHERE SELECT * FROM Sale WHERE pietro >2 AND typ_sali = laboratorium Wynik zapytania: Typ_sali Budynek Piętro Sala wykładowa WOY/21 3 314

SELECT fraza IN SELECT * FROM Sale WHERE pietro IN (2,3) Wynik zapytania: Typ_sali Budynek Piętro Sala laboratorium WOY/12 2 1242 wykładowa WOY/21 3 314

SELECT instrukcja ORDER BY SELECT * FROM Sale WHERE pietro >=1 ORDER BY typ_sali, piętro Wynik zapytania: Typ_sali Budynek Piętro Sala laboratorium WOY/12 1 1221 wykładowa WOY/21 2 214 wykładowa WOY/21 3 314

SELECT instrukcja ORDER BY SELECT * FROM rooms [...] ORDER BY Column_Name [DESC] [,Column_Name...] Jest możliwe, aby sortować w porządku malejącym (DESC) Domyślny jest porządek rosnący Uwaga praktyczna: kolumny zawijające tekst są sortowane jak tekst, np. jeśli kolumna zawiera numery jako test to 1000 < 2 Kiedy używamy do sortowania wielu kolumn to najpierw jest sortowanie po pierwszej kolumnie, potem po drugiej itd.

SELECT fraza DISTINCT SELECT DISTINCT typ_sali, piętro FROM Sale WHERE pietro >=2 Wynik zapytania: Typ_sali Piętro laboratorium 1 wykładowa 2 wykładowa 3 Otrzymamy tylko unikalne kombinacje kolumn

Łączenia tabel oraz iloczyn kartezjański Sale Typ_sali Budynek Piętro Sala laboratorium WOY/12 1 1221 wykładowa WOY/21 2 214 Wyposażenie Budynek Zasób Sala WOY/12 Krzesło 1221 WOY/12 Stolik 1221 W jaki sposób wykonać zapytanie obejmujące wiele tablic, np. liczba zasobów w budynku WOY/21 na piętrze 1?

Łączenia tabel style zapytań OLD-STYLE QUERY SELECT FROM TABLE1,TABLE2[, ] WHERE Condition1[ AND Condition2 ] [ ] Przykład: SELECT * FROM Sale, Wyposażenie WHERE Sale.Budynek = Wyposażenie.Budynek AND Sale.sala= Wyposażenie.sala MODERN-STYLE QUERY SELECT FROM TABLE1 JOIN TABLE2[ JOIN ] ON Condition1[ AND Condition2 ] [ ] Przykład: SELECT * FROM Sale JOIN Wyposażenie ON Sale.Budynek = Wyposażenie.Budynek AND Sale.sala = Wyposażenie.sala

Interpretacja zapytania krok 1 Otrzymujemy iloczyn kartezjański Budynek_A Piętro Sala Budynek_B Zasób Sala WOY/12 1 1221 WOY/12 Krzesło 1221 WOY/21 2 214 WOY/12 Krzesło 1221 WOY/12 1 1221 WOY/12 Stolik 1221 WOY/21 2 214 WOY/12 Stolik 1221 Aby odpowiedzieć na zapytanie obejmujące wiele tabel tworzony jest najpierw iloczyn kartezjański np. tworzona jest tymczasowa tablica wszystkich możliwych kombinacji rekordów.

Interpretacja zapytania krok 2 Otrzymujemy iloczyn kartezjański Budynek_A Piętro Sala Budynek_B Zasób Sala WOY/12 1 1221 WOY/12 Krzesło 1221 WOY/21 2 214 WOY/12 Krzesło 1221 WOY/12 1 1221 WOY/12 Stolik 1221 WOY/21 2 214 WOY/12 Stolik 1221 W drugim kroku iloczyn kartezjański jest filtrowany tak, aby zawierał tylko wiersze, które spełniają warunek: Sale.Budynek = Wyposażenie.Budynek AND Sale.sala= Wyposażenie.sala

Zapytania do wielu tabel (Cross-table queries) Unikalność kolumn w otrzymanym zbiorze jest zapewniana przez SZBD (DBMS). Stąd, jeśli jest to konieczne, dodawany jest sufiks np. Budynek_A, Budynek_B Jeśli musimy odwoływać się do jakiejś kolumny z zapytania to: Jeśli nazwa kolumny jest unikalna w zapytaniu to wystarczy użycie jej nazwy (unqualified name), np. piętro W przeciwnym razie należy użyć pełnej nazwy (qualified name), np. Sale.Budynek

Inne rodzaje JOIN Sale Typ_sali Budynek Piętro Sala laboratorium WOY/12 1 1221 wykładowa WOY/21 2 214 Wyposażenie Budynek Zasób Sala WOY/12 Krzesło 1221 WOY/12 Stolik 1221 W jaki sposób otrzymać sale 214 w wyniku jeśli nie ma żadnego wyposażenia w tej sali?

Inne rodzaje JOIN Sale Typ_sali Budynek Piętro Sala laboratorium WOY/12 1 1221 wykładowa WOY/21 2 214 Wyposażenie Budynek Zasób Sala WOY/12 Krzesło 1221 WOY/12 Stolik 1221 MODERN-STYLE QUERY SELECT FROM TABLE1 [INNER LEFT RIGHT FULL] JOIN TABLE2[ JOIN ] ON Condition1[ AND Condition2 ] [ ]

Inne rodzaje JOIN INNER JOIN: Zwraca takie rekordy, że istnieje co najmniej jedno dopasowanie w OBU tabelach LEFT JOIN: Zwraca wszystkie rekordy z lewej tabeli oraz dopasowane rekordy z prawej tabeli RIGHT JOIN: Zwraca wszystkie rekordy z prawej tabeli oraz dopasowane rekordy z lewej tabeli FULL JOIN: Zwraca takie rekordy, że istnieje co najmniej jedno dopasowanie w JEDNEJ z tabel

JOIN w MySQL JOIN, CROSS JOIN, i INNER JOIN są ekwiwalentami (mogą być sobą zastępowane). W standardowym SQL CROSS JOIN jest iloczynem kartezjańskim NATURAL [LEFT] JOIN jest ekwiwalentem odpowiednio INNER JOIN i LEFT JOIN RIGHT JOIN konwertowany do LEFT JOIN z uwzględnieniem zamiany tabel. Ze względu na kompatybilność zalecane jest używanie LEFT JOIN STRAIGHT_JOIN działa jak JOIN, ale lewa tabela jest czytana jako pierwsza. Może być to przydatne, jeśli optymalizator bazy danych źle układa tabele OUTER JOIN (lub FULL OUTER JOIN) zwraca wszystkie rekordy niezależnie od dopasowania. W miejsca niedopasowane wstawiana jest wartość NULL

JOIN w MS SQL (T-SQL)

T-SQL CROSS JOIN 5*6=30 rekordów

Pytania?