Relacyjne bazy danych Język SQL

Podobne dokumenty
Przestrzenne bazy danych Podstawy języka SQL

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

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Dr inż. Paweł Kasprowski

Paweł Rajba

Relacyjne bazy danych. Podstawy SQL

1 Wstęp do modelu relacyjnego

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

Relacyjne bazy danych. Podstawy SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Przykładowa baza danych BIBLIOTEKA

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

Wykład 2. Relacyjny model danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

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

Autor: Joanna Karwowska

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

Model relacyjny. Wykład II

Wprowadzenie do baz danych

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

Język SQL, zajęcia nr 1

Wykład 6. SQL praca z tabelami 3

Wykład 8. SQL praca z tabelami 5

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

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

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Wprowadzenie do języka SQL

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

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

Grupowanie i funkcje agregujące

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Język SQL podstawy zapytań

SQL (ang. Structured Query Language)

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

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

Wykład 5. SQL praca z tabelami 2

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

Model relacyjny. Wykład II

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Oracle11g: Wprowadzenie do SQL

Język SQL. Rozdział 2. Proste zapytania

Bazy danych - wykład wstępny

Projektowanie systemów baz danych

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Wykład :45 BD-1 W_3

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

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

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

Technologie baz danych

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

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

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

SQL w praktyce. Miłej i owocnej nauki!!!

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

Wstęp do relacyjnych baz danych. Jan Bartoszek

Wykład 4. SQL praca z tabelami 1

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Microsoft SQL Server Podstawy T-SQL

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

WPROWADZENIE DO BAZ DANYCH

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Autor: Joanna Karwowska

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

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Bazy Danych - Projekt. Zasady przygotowania i oceny projektów

SZKOLENIE: Administrator baz danych. Cel szkolenia

Widok Connections po utworzeniu połączenia. Obszar roboczy

Zasady transformacji modelu DOZ do projektu tabel bazy danych

ACESS- zadania z wykorzystaniem poleceń SQL

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

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

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

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

Bazy danych Access KWERENDY

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

Język SQL, zajęcia nr 2

TEST E.14 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

Bazy danych. Polecenia SQL

Krzysztof Kadowski. PL-E3579, PL-EA0312,

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

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

Aspekty aktywne baz danych

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

LAB 3 (część 1 Projektu)

SQL Structured Query Language

Wykład 05 Bazy danych

Transkrypt:

Relacyjne bazy danych Język SQL http://www.ftj.agh.edu.pl/~antek

Czym jest baza danych? Zbiorem informacji istniejącym przez długi czas. Zbiorem powiązanych danych. Uporządkowanym zbiorem danych, do których może mieć dostęp wielu użytkowników jednocześnie w dowolnym odpowiadającym im momencie czasu. Logicznie spójnym zbiorem danych, przechowywanych w komputerze, który służy określonym celom i do którego istnieje współbieżny dostęp wielu użytkowników.

Czym jest baza danych? W potocznym rozumieniu termin baza danych odnosi się do zbioru danych zorganizowanego przez system zarządzania bazą danych. Baza danych systemy przetwarzania danych przechowywanie danych przetwarzanie danych wyszukiwanie danych

Przykładowe bazy danych system rezerwacji miejsc (hotel, biuro podróży, linie lotnicze) systemy bankowe, firmy ubezpieczeniowe system biblioteczne system dokumentujący działanie przedsiębiorstwa -- gospodarka materiałowa -- zarządzanie personelem -- obsługa zamówień i księgowość -- zarządzanie i planowanie produkcji

Wspólne cechy baz danych proste zbiory danych o stałym formacie, które mogą być opisane na poziomie logicznym, zwłaszcza przy zastosowaniu modeli danych opartych na rekordach; proste typy danych dla wartości pól lub atrybutów, opisujących zbiór danych; sparametryzowane, wstępnie zdefiniowane zapytania, opisujące powtarzalne zadania wykonywane przez bazę danych; bezpośrednia aktualizacja, powodująca zastąpienie starych wartości nowymi bez zachowania starych wartości; krótkie transakcje, reprezentujące zadania do wykonania przez bazę danych w odpowiedniej do wykonania postaci.

Przykładowy projekt: 1. Dziennik ocen 2. Możliwość sortowania wg nazwiska, daty, oceny 3. Możliwość tworzenia list dla różnych przedmiotów Rozwiązania: 1. Rozwiązanie przy pomocy arkusza kalkulacyjnego - Excel 2. Rozwiązanie przy pomocy bazy danych Access

Dane: 1. Nazwisko tekstowa 25 2. Imię tekstowa 20 3. Ocena całkowita 4. Data oceny data 5. Przedmiot tekstowa 20

Excel Arkusze zawierają dane dla poszczególnych przedmiotów

Excel Operacje możliwe do wykonania na danych w arkuszu kalkulacyjnym sortowanie filtrowanie formularz operacje matematyczne

Excel Sortowanie danych

Excel Filtrowanie danych

Excel Formularz wprowadzający dane

Access Tabele danych w programie Access

Access Relacje pomiędzy tabelami

Access Formularz wprowadzający dane

Access Formularz przedstawiający dane zawarte w tabeli

Access Wprowadzanie danych do tabeli ocena

Access Przedstawienie danych zawartych w tabeli - ocena

System zarządzania bazą danych 1. Umożliwienie użytkownikowi utworzenia nowej bazy danych i określenia jej schematu (logicznej struktury danych) za pomocą specjalizowanego języka definiowania danych ( DDL data definition language). 2. Udostępnienie użytkownikowi możliwości tworzenia zapytań o dane, oraz aktualizowania danych (query language - DML data manipulation language). 3. Zapewnienie możliwości przechowywania ogromnej ilości danych, ochrony danych przed niepowołanym dostępem oraz efektywnego dostępu do danych. 4. Sterowanie jednoczesnym dostępem do danych przez wielu użytkowników.

Zadania SZBD Wejście - wprowadzanie danych - kontrola poprawności danych Wyjście - wyprowadzanie danych - raporty, wydruki Przetwarzanie danych - zakładanie zbiorów danych - wprowadzanie danych do zbiorów - aktualizacja danych - przetwarzanie i wyszukiwanie - wytwarzanie dokumentów zewnętrznych Dodatkowe funkcje systemu : - kontrola integralności danych - zgodność wszystkich danych - zabezpieczenie przed utratą danych - ochrona danych przed nieuprawnionym dostępem

System zarządzania bazą danych model danych Zestaw narzędzi SZBD Interfejs SZBD Świat zewnętrzny Jądro SZBD Baza danych Model danych

Schemat logiczny bazy danych Baza danych Tabela Zbiór tabel Rekord Zbiór rekordów Pole 1 Pole 2 Pole 3 Pole 4 Rekord, pola danych

Zasady (reguły) opisujące modele baz danych Model danych (a w odniesieniu do konkretnej realnej sytuacji - architektura systemu baz danych) - zbiór ogólnych zasad posługiwania się danymi. Zbiór ten obejmuje trzy główne części: 1. Definicja danych: zbiór reguł określających logiczną strukturę danych 2. Operowanie danymi: zbiór reguł dotyczących procesu dostępu do danych i ich modyfikacji 3. Integralność danych: zbiór reguł określających., które stany bazy danych są poprawne (a więc zarazem jakie operacje prowadzące do modyfikacji danych są dozwolone)

Relacyjny model danych Relacyjny model danych posiada trzy podstawowe składowe: relacyjne struktury danych, operatory algebry relacyjnej, które umożliwiają tworzenie, przeszukiwanie i modyfikowanie danych, ograniczenia (więzy) integralnościowe jawnie lub niejawnie określającymi możliwe/dopuszczalne wartości danych. Nieformalnie rzecz biorąc, relacja jest zbiorem krotek (rekordów) posiadających taką samą strukturę (schemat) i różne wartości; zbiór ten jest przedstawiany w postaci tablicy wierszy. Każda krotka zawiera wartość co najmniej jednego atrybutu o określonej dziedzinie, przedstawianego w postaci kolumny tablicy.

Pojęcia stosowane do opisu relacyjnego modelu Formalny termin relacyjny relacja krotka liczebność tabeli atrybut stopień tabeli klucz główny dziedzina Nieformalny równoważnik tabela wiersz lub rekord liczba wierszy kolumna lub pole liczba kolumn jednoznaczny identyfikator zbiór dopuszczalnych wartości

Definicja relacji Relacja R zbiór dziedzin D1,..., Dn składający się z dwóch części: nagłówka i treści. ( W tabelarycznej reprezentacji powiemy, nagłówek wiersz złożony z tytułów kolumn, treść zbiór wierszy z danymi) 1. Nagłówek ustalony zbiór atrybutów, dokładniej par <nazwa atrybutu:nazwa dziedziny> { <A1:D1>, <Aj:Dj>,...,<An:Dn> } 2. Treść składa się z krotek. Każda krotka jest zbiorem par <nazwa atrybutu:wartość atrybutu> { <A1:vi1>, <Aj:vij>,..., <An:vin> } (j = 1,2,..., n) stopień relacji R (i = 1,2,...,m) liczebność relacji R

Definicja relacji Klucz główny S# NAME STATUS CITY Dziedziny S# SNAME STATUS CITY Krotki S1 Smith 20 London S2 Jones 10 Paris S3 Blake 30 Paris S4 Clark 20 London S5 Adams 30 Athens Liczebność Atrybuty Stopień tabeli

Schemat relacji nazwa relacji oraz zbiór jej atrybutów. Relacja R ( atrybut_1, atrybut_2,..., atrybut_n ) { <S# : S# >, <Sname : name >, <Status : status >, <CITY : city> } ( S1, Smith, 20, London ) ( Smith, 20, London, S1 ) ( London, Smith, 20, S1 ) Schemat relacji

Zbiór zasad opisujący relację 1. Każda tabela (relacja) w bazie danych ma jednoznaczną nazwę. 2. Każdy kolumna (atrybut) w relacji ma jednoznaczną nazwę w ramach jednej tabeli (relacji). 3. Wszystkie wartości danego kolumny (atrybutu) muszą należeć do tej samej dziedziny. 4. Porządek kolumn (atrybutów) w relacji nie jest istotny. 5. Każda rekord (krotka) w relacji musi być różna. 6. Porządek rekordów (krotek) nie jest istotny. 7. Każda kolumna (atrybut) w tabeli (relacji) powinien zawierać wartość atomową.

Integralność danych relacyjnych Baza danych zawiera konkretny układ wartości danych - układ ten powinien odpowiadać rzeczywistości. Klucz kandydujący w relacji R jest podzbiorem K zbioru atrybutów relacji R, mającym: 1. Własność jednoznaczności: Żadne dwie różne krotki R nie posiadają tej samej wartości dla K. 2. Własność nieredukowalności: Żaden właściwy podzbiór K nie ma własności jednoznaczności. Jeżeli w relacji jest więcej niż jeden klucz kandydujący, należy wybrać jeden z nich jako klucz główny tej relacji, pozostałe nazywane są kluczami alternatywnymi.

Klucz główny w tabeli Stud (NrStud, NazwS) NrStud NazwS 34698 Smith S 37798 Jones S 34888 Patel P 34668 Smith J Pole rekordu (atrybut) NrStud jednoznacznie identyfikuje każdy rekord w tabeli Stud. Pole NrStud ma właściwość jednoznaczności.

Diagram ERD Entity-Relationship Diagram

Diagram ERD Entity-Relationship Diagram

Język SQL (ang. Structured Query Language) 1979 - pierwsza komercyjna implementacja języka SQL firma Oracle 1986 - oficjalna specyfikacja języka SQL opublikowana przez: Międzynarodową Organizacje Normalizacyjną (ISO) Amerykański Narodowy Instytut Normalizacji (ANSI) 1989 - wprowadzono poprawki, elementy wymuszające spójność odwołań 1992 - kolejna wersja języka SQL - SQL92 - SQL2 1999, 2003, 2008 - kolejne specyfikacje języka SQL 2016 - najnowsza specyfikacja języka SQL

Podział instrukcji SQL ze względu na funkcję Język definiowania struktur danych ( Data Definiction Language -DDL) CREATE SCHEMA, CREATE TABLE, CREATE VIEW, CREATE DOMAIN Język operowania danymi (Data Manipulation Language DML) SELECT, INSERT, UPDATE, DELETE Język zarządzania danymi (Data Control Language - DCL) GRANT, REVOKE

SQL definiowanie struktur danych CREATE ALTER DROP - polecenia budujące, tworzące strukturę w bazie danych - rozszerzenie istniejącej struktury - usunięcie struktury z bazy danych

SQL CREATE SCHEMA SCHEMA schemat to przestrzeń nazw w bazie danych. Baza danych może zawierać jeden lub więcej schematów Zwyczajowo schemat to zestaw obiektów pod kontrola jednego użytkowanika (roli). Schematy mogą zawierać obiekty o identycznych nazwach. Odwołanie do np. tablicy table w schemacie schema następuje poprzez użycie notacji kropkowej: SELECT * FROM schema.table ; Standardowo i domyślnie wszystkie obiekty tworzone są w schemacie public. CREATE SCHEMA nazwa_schematu ; CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [... ] ] => SET search_path TO s1, s2, s3 ; => SHOW search_path ;

Polecenie SQL DDL: CREATE TABLE CREATE TABLE studio ( nazwa CHAR(20), miasto VARCHAR(50), stan CHAR(2), dochody FLOAT ) ; CREATE TABLE studia ( studio_id NUMBER, nazwa CHAR(20), miasto VARCHAR(50), stan CHAR(2) ) ;

Przykładowe typy danych SQL Boolean Smallint Integer Bit Numeric Decimal Float Char(n) Varchar typ logiczny 2 B 4 B 1 b 4B, 8B https://www.postgresql.org/docs/current/static/datatype.html

Polecenie SQL DDL: CREATE TABLE Wartości domyślne Wstawianie wartości domyślnych. CREATE TABLE film ( tytuł_filmu VARCHAR(40) NOT NULL, studio_id NUMBER, data_powstania DATE DEFAULT SYSDATE NULL, gatunek VARCHAR(20) Komedia CHECK gatunek IN ( Horror, Komedia, Dramat ) ) ;

Przykład klucz główny Polecenie SQL DDL: CREATE TABLE Definiowanie klucza głównego dla jednego atrybutu. CREATE TABLE Studia ( studio_id NUMBER PRIMARY KEY, nazwa CHAR(20) UNIQUE, miasto VARCHAR(50), stan CHAR(2) ) ; Definiowanie klucza głównego dla kilku atrybutów. CREATE TABLE Studia ( studio_id NUMBER, nazwa CHAR(20), miasto VARCHAR(50), stan CHAR(2), PRIMARY KEY (studio_id, nazwa), UNIQUE (miasto, stan) ) ;

Tabele indeksów Indeks struktura danych umożliwiająca szybszy dostęp do konkretnych rekordów w pliku, a tym samym przyspieszanie realizacji zapytań. CREATE [UNIQUE] INDEX nazwa_indeksu ON tablica (kolumna); Przykład CREATE INDEX imię_nazwisko ON Osoba (osoba_imię, osoba_nazwisko);

Indeksy Kryteria decydujące o wyborze kolumny na indeks: w kolumnie znajduje się wiele różnych wartości, pole jest często używane w zapytaniach, często wykorzystuje się pole w zapytaniach.

Ćwiczenia praktyczne 1 Zarządzanie bazą danych PostgreSQL: SQL Manager Lite for PostgreSQL DBaaS ElephantSQL Język SQL DDL Tworzenie schematu - CREATE SCHEMA Tworzenie tabeli - CREATE TABLE Modyfikacja tabeli - ALTER TABLE Usuwanie tabeli - DROP TABLE

Polecenie SQL DML: INSERT Struktura instrukcji INSERT INSERT INTO nazwa_tabeli [ (lista_kolumn) ] VALUES (lista_wartości) Przykład: CREATE TABLE Studio (studio_id NUMBER PRIMARY KEY, nazwa_studia VARCHAR(50) UNIQUE, miasto_studio VARCHAR(20) NOT NULL, stan_studio CHAR(2) NOT NULL ) ; INSERT INTO Studio VALUES (1, Giant, Los Angeles, CA ) ; INSERT INTO Studio (studio_id, nazwa_studia, miasto_studio, stan_studio) VALUES ( Burnank, CA, MPM, 2) ;

Polecenie SQL DML: UPDATE Struktura instrukcji UPDATE UPDATE tabela SET kolumna = wartość,... [ WHERE warunek ]; Przykład: UPDATE Studio SET miasto_studio = Nowy Jork, stan_studio = NY WHERE studio_id = 1 ; UPDATE Studio SET (miasto_studio, stan_studio ) = ( Nowy Jork, NY ) WHERE studio_id = 1 ; UPDATE Studio SET stan_studio = AK ;

Polecenie SQL DML: DELETE Struktura polecenia DELETE DELETE FROM tabela [ WHERE warunek ] ; Przykład: DELETE FROM Studio WHERE stan_studio = AX ;

Ćwiczenia praktyczne 2 Język SQL DML Wprowadzanie rekordów do tabeli - INSERT Wyświetlanie rekordów - SELECT Wybór wyświetlanych atrybutów - projekcja Wybór wyświetlanych rekordów - selekcja Poprawa danych w tabeli - UPDATE Usuwanie rekordów z tabeli - DELETE

Polecenie SQL DQL: SELECT Struktura polecenia SELECT SELECT FROM WHERE GROUP BY HAVING ORDER BY opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy) nazwy kolumn warunek (grupowanie wybieranych wierszy) nazwy kolumn lub pozycje kolumn

Polecenie SQL DQL: SELECT SELECT lista_pól FROM tabela [, tabela,... ] Algebra relacyjna rzut (projekcja) SELECT * FROM film; film_id tytuł_filmu studio_id budżet data_produkcji -----------------------------------------------------------------------... SELECT film_id tytuł_filmu data_produkcji studio_id budżet FROM film; film_id tytuł_filmu data_produkcji studio_id budżet --------------------------------------------------------------------... SELECT film_id, tytuł_filmu FROM film; film_id tytuł_filmu -----------------------

Polecenie SQL DQL: SELECT Algebra relacyjna rzut (projekcja)

Polecenie SQL DQL: SELECT SELECT tekst,film_id, 2*2, 2*2, budżet*2 FROM film; tekst film_id 2*2 2*2 budżet*2 ----------------------------------------------- tekst 1 4 2*2 100... ALTER TABLE film ADD przychód NUMBER; SELECT budżet, przychód, przychód - budżet FROM film; budżet przychód przychód-budżet ---------------------------------------------...

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT SELECT wyrażenie AS alias, wyrażenie2 AS alias,... FROM tabela [, tabela,... ] SELECT budżet AS b1, przychód AS p1 FROM film; b1 p1 --------... SELECT budżet, przychód, przychód - budżet AS dochód FROM film; budżet przychód dochód ---------------------------------...

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT Klauzula WHERE - służy do filtrowania wyników zapytania. SELECT lista_pól FROM tabela [, tabela,... ] WHERE warunek SELECT id_film, tytuł_filmu FROM film WHERE id_film = 1; SELECT id_film, budżet FROM film WHERE budżet > 10000 AND id_film = 1 ; Operatory porównania = równy, <> (! = ) nierówny, > większy niż, < mniejszy niż >= nie mniejszy, <= nie większy Operatory logiczne AND, OR, NOT Algebra relacyjna selekcja

Polecenie SQL DQL: SELECT Klauzula ORDER BY służy do sortowania wyników zapytania. SELECT id_film, tytuł_filmu, studio_id, przychód-budżet FROM film WHERE studio_id = 1 ORDER BY 4; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet AS dochód FROM film WHERE studio_id =1 ORDER BY dochód; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet AS dochód FROM film WHERE dochód > 10000 ORDER BY studio_id, dochód;

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT Klauzula IN - sprawdza czy dana grupa wartości znajduje się w podanej kolumnie. SELECT lista_pól FROM tabela [, tabela,... ] WHERE kolumna [ NOT ] IN ( lista_wartości ) SELECT id_film, tytuł_filmu, studio_id, przychód-budżet FROM film WHERE studio_id IN ( 2,4 ) ; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet FROM film WHERE studio_id =2 OR studio_id = 4 ; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet FROM film WHERE studio_id NOT IN ( 2,4 ) ; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet FROM film WHERE studio_id <>2 AND studio_id <> 4 ;

Polecenie SQL DQL: SELECT Klauzula BETWEEN SELECT lista_pól FROM tabela [, tabela,... ] WHERE kolumna [ NOT ] BETWEEN dolna_wartość AND górna_wartość SELECT id_film, tytuł_filmu, studio_id, przychód-budżet AS dochód FROM film WHERE dochód BETWEEN 10000 AND 20000 ; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet AS dochód FROM film WHERE dochód > 10000 AND dochód < 20000 ; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet AS dochód FROM film WHERE dochód NOT BETWEEN 10000 AND 20000 ; SELECT id_film, tytuł_filmu, studio_id, przychód-budżet AS dochód FROM film WHERE dochód < 10000 OR dochód > 20000 ;

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT Klauzula LIKE - wyszukiwanie informacji w łańcuchach znaków SELECT lista_pól FROM tabela [, tabela,... ] WHERE kolumna [ NOT ] LIKE szablon [ ESCAPE char ] Znaki wieloznaczne % - zastępuje dowolną grupę znaków (również grupę pustą) _ - zastępuje pojedynczy znak SELECT id_film, tytuł_filmu FROM film WHERE tytuł_filmu LIKE The % ; SELECT id_film, tytuł_filmu FROM film WHERE tytuł_filmu LIKE % r ; SELECT id_film, tytuł_filmu FROM film WHERE tytuł_filmu LIKE % DATA % ;

Ćwiczenia praktyczne 3 Język SQL DQL polecenie SELECT Aliasy nazw Selekcja rekordów - klauzula WHERE Porządkowanie rekordów - klauzula ORDER BY Wybór rekordów - predykat IN Wybór rekordów - predykat BETWEEN Wyszukiwanie danych tekstowych - LIKE Obsługa wartości NULL Wyświetlanie wartości różnych - DISTINCT

Polecenie SQL DQL: SELECT Funkcje agregujące funkcje działające na grupie wartości zwracanych przez zapytanie. SELECT funkcja (pole) FROM tabela [, tabela,... ] [ WHERE warunek ] COUNT(*) SELECT COUNT(*) FROM film ; SELECT COUNT(*) FROM film WHERE budżet > 10000 ; SELECT COUNT(*) AS total FROM film ; SELECT COUNT(DISTINCT studio_id) FROM film ;

Polecenie SQL DQL: SELECT Funkcje SUM(), AVG() - działają na argumentach numerycznych SELECT SUM(budżet) FROM film ; Funkcje MIN(), MAX() - funkcje mogą być użyte dla różnych typów danych SELECT MIN(data_produkcji) FROM film ; SELECT COUNT(*) FROM film WHERE studio_id = 1; SELECT SUM(budżet) FROM film WHERE studio_id = 2 ;

Polecenie SQL DQL: SELECT

Polecenie SQL DQL: SELECT Klauzula GROUP BY SELECT list_pól FROM tabela [, tabela,... ] WHERE warunek GROUP BY lista_grup ORDER BY lista_sortowania SELECT studio_id, SUM(budżet) FROM film GROUP BY studio_id ; SELECT studio_id, COUNT(*) FROM film GROUP BY studio_id ORDER BY studio_id ; SELECT studio_id, COUNT(*) FROM film WHERE data_produkcji BETWEEN 01-01-1980 AND 31-12-1990 GROUP BY studio_id ORDER BY studio_id ;

Polecenie SQL DQL: SELECT Klauzula HAVING SELECT studio_id, SUM (budżet) FROM film GROUP BY studio_id HAVING SUM(budżet) > 40000 ; SELECT studio_id, SUM(budżet) FROM film GROUP BY studio_id HAVING SUM(budżet) > 20000 AND MIN(rok_produkcji) < 31-12-1970 ORDER BY studio_id ; SELECT studio_id, AVG(przychód) FROM film WHERE przychód IS NOT null GROUP BY studio_id HAVING AVG(przychód) > 30000 ORDER BY AVG(przychód) ;

Polecenie SQL DQL: SELECT

Ćwiczenia praktyczne 4 Język SQL DQL agregacja danych Funkcja agregujące - COUNT() Funkcje agregujące - MIN(), MAX() Funkcje agregujące - SUM(), AVG() Klauzula grupująca - GROUP BY Klauzula wyszukująca - HAVING

Zastosowanie dobrego projektu bazy danych prowadzi do konieczności korzystania z technik umożliwiających złożenie danych znajdujących się w kilku relacjach (tabelach) w jedną spójną całość.

Moduły (NazwaModułu, NrPr, NazwPr, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrPr NazwPr NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 234 Davies T 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 234 Davies T 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 234 Davies T 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 345 Evans R 34668 Smith J A1 egz Anomalie w bazach danych jedna tabela

Moduły (NazwaModułu, NrPr, NazwPr, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrPr NazwPr NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 234 Davies T 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 234 Davies T 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 234 Davies T 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 345 Evans R 34668 Smith J A1 egz Usuwamy studenta 34668 Efekt uboczny usunięcia Usuwamy równocześnie : Nazwę modułu, Pracownika

Moduły (NazwaModułu, NrPr, NazwPr, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrPr NazwPr NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 234 Davies T 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 324 Davies T 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 234 Davies T 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 345 Evans R 34668 Smith J A1 egz Zmieniamy wykładowcę projekt relacyjnych baz danych na Jones S Efekt uboczny modyfikacji Równocześnie należy zmienić : Wszystkie wystąpienia tego pracownika dla tego przedmiotu.

Moduły (NazwaModułu, NrPr, NazwPr, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrPr NazwPr NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 234 Davies T 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 234 Davies T 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 234 Davies T 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 345 Evans R 34668 Smith J A1 egz 38989 Smith K Wpisujemy nowego studenta - 38989 Efekt uboczny wstawienia Wstawiamy nowego studenta : Problem przypisania przedmiotu.

Moduły (NazwaModułu, NrPr, NazwPr, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrPr NazwPr NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 234 Davies T 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 234 Davies T 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 234 Davies T 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 234 Davies T 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 345 Evans R 34668 Smith J A1 egz Redundancja Nadmiarowa ilość informacji. Musimy powtórzyć n razy tę samą informację.

Podsumowanie 1. Redundancja nazwisko prowadzącego pojawia się dla każdego rekordu oceny studenta 2. Anomalie przy modyfikacji uaktualnione nazwisko w jednym wierszu pozostaje niezmienione w innych. 3. Anomalie przy wstawianiu trudno wstawić studenta bez przedmiotu, pojawiają się pola NULL. 4. Anomalie przy usuwaniu usuwając studenta usuwamy przedmiot.

Moduły (NazwaModułu, NrPr, NazwPr, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrPr NazwPr NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 234 Davies T 34698 Smith S B3 cwk1 B1 cwk2 234 Davies T 37798 Jones S B2 cwk1 234 Davies T 34888 Patel P B1 cwk1 B1 cwk2 Projekt. relacyjnych baz danych 234 Davies T 34698 Smith S B2 cwk1 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 345 Evans R 34668 Smith J A1 egz Relacja zawiera dla niektórych atrybutów wiele wartości.

Moduły (NazwaModułu, NrPr, NazwPr) NazwaModułu NrPr NazwPr Systemy relacyjnych baz danych 234 Davies T Projekt. relacyjnych baz danych 234 Davies T Dedukcyjne bazy danych 345 Evans R Zaliczenia (NazwaModułu, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 34668 Smith J A1 egz

NazwaModułu NrPr NazwPr Systemy relacyjnych baz danych 234 Davies T Projekt. relacyjnych baz danych 234 Davies T Dedukcyjne bazy danych 345 Evans R Moduły (NazwaModułu, NrPr, NazwPr) Nazwa modułu nie ma wpływu na nazwisko Zaliczenia (NazwaModułu, NrStud, NazwS, Ocena, TypOcen) NazwaModułu NrStud NazwS Ocena TypOcen Systemy relacyjnych baz danych 34698 Smith S B3 cwk1 Systemy relacyjnych baz danych 34698 Smith S B1 cwk2 Systemy relacyjnych baz danych 37798 Jones S B2 cwk1 Systemy relacyjnych baz danych 34888 Patel P B1 cwk1 Systemy relacyjnych baz danych 34888 Patel P B1 cwk2 Projekt. relacyjnych baz danych 34698 Smith S B2 cwk1 Projekt. relacyjnych baz danych 34888 Patel P B3 cwk1 Dedukcyjne bazy danych 34668 Smith J A1 egz

Moduły (NazwaModułu, NrPr, NazwPr) NazwaModułu NrPr NazwPr Systemy relacyjnych baz danych 234 Davies T Projekt. relacyjnych baz danych 234 Davies T Dedukcyjne bazy danych 345 Evans R NazwaModułu NrStud Ocena TypOcen Systemy relacyjnych baz danych 34698 B3 cwk1 Systemy relacyjnych baz danych 34698 B1 cwk2 Systemy relacyjnych baz danych 37798 B2 cwk1 Systemy relacyjnych baz danych 34888 B1 cwk1 Systemy relacyjnych baz danych 34888 B1 cwk2 Projekt. relacyjnych baz danych 34698 B2 cwk1 Projekt. relacyjnych baz danych 34888 B3 cwk1 Dedukcyjne bazy danych 34668 A1 egz Stud (NrStud, NazwS) NrStud NazwS 34698 Smith S 37798 Jones S 34888 Patel P 34668 Smith J

NazwaModułu NrPr NazwPr Systemy relacyjnych baz danych 234 Davies T Projekt. relacyjnych baz danych 234 Davies T Dedukcyjne bazy danych 345 Evans R NrPr determinuje nazwisko pracownika, zachodzi zatem zależność przechodnia. NazwaModułu NrStud Ocena TypOcen Systemy relacyjnych baz danych 34698 B3 cwk1 Systemy relacyjnych baz danych 34698 B1 cwk2 Systemy relacyjnych baz danych 37798 B2 cwk1 Systemy relacyjnych baz danych 34888 B1 cwk1 Systemy relacyjnych baz danych 34888 B1 cwk2 Projekt. relacyjnych baz danych 34698 B2 cwk1 Projekt. relacyjnych baz danych 34888 B3 cwk1 Dedukcyjne bazy danych 34668 A1 egz NrStud NazwS 34698 Smith S 37798 Jones S 34888 Patel P 34668 Smith J

Moduły (NazwaModułu, NrPr) Wykładowcy (NrPr, NazwPr) NazwaModułu NrPr NrPr NazwPr Systemy relacyjnych baz danych 234 234 Davies T Projekt. relacyjnych baz danych 234 345 Evans R Dedukcyjne bazy danych 345 Zaliczenia (NazwaModułu, NrStud, Ocena, TypOcen) NazwaModułu NrStud Ocena TypOcen Systemy relacyjnych baz danych 34698 B3 cwk1 Systemy relacyjnych baz danych 34698 B1 cwk2 Systemy relacyjnych baz danych 37798 B2 cwk1 Systemy relacyjnych baz danych 34888 B1 cwk1 Systemy relacyjnych baz danych 34888 B1 cwk2 Projekt. relacyjnych baz danych 34698 B2 cwk1 Projekt. relacyjnych baz danych 34888 B3 cwk1 Dedukcyjne bazy danych 34668 A1 egz Stud (NrStud, NazwS) NrStud NazwS 34698 Smith S 37798 Jones S 34888 Patel P 34668 Smith J

Klucz obcy Definicja: R2 jest relacją podstawową. Klucz obcy relacji R2 jest to podzbiór FK zbioru atrybutów R2, taki że: - istnieje relacja podstawowa R1 z kluczem kandydującym CK, - w każdej chwili każda wartość FK w aktualnej wartości relacji R2 jest taka sama, jak wartość CK w pewnej krotce aktualnej wartości relacji R1. Wartość klucza obcego stanowi referencję (odwołanie) do krotki zawierającej wartość odpowiadającego mu klucza kandydującego. Integralność referencyjna zapewnienie, aby baza nie zawierała niedopuszczalnych wartości klucza obcego. Więzy referencyjne zgodność klucza obcego z wartościami odpowiadającemu mu klucza kandydującego.

Klucz obcy NazwaModułu NrPr Systemy relacyjnych baz danych 234 Projekt. relacyjnych baz danych 234 Dedukcyjne bazy danych 345 Moduły (NazwaModułu, NrPr) Klucz główny tabeli Moduły NrPr NazwPr 234 Davies T 345 Evans R Klucz obcy w tabeli Moduły Wskazuje wykładowcę z tabeli Wykładowcy Wykładowcy (NrPr, NazwPr) Klucz główny tabeli Wykładowcy

Definiowanie kluczy obcych Przykład - klucz obcy Definiowanie klucza obcego dla jednego atrybutu. CREATE TABLE Film ( nazwa_filmu VARCHAR(40), studio_id NUMBER REFERENCES studia(studio_id) ) ; Definiowanie klucza obcego dla kilku atrybutów. CREATE TABLE Wyświetlane_Filmy ( nazwa_kina VARCHAR(40), data_wyświetlania DATE, tytuł_filmu VARCHAR(40), studio_id NUMBER, FOREIGN KEY (tytuł_filmu, studio_id) REFERENCES film (tytuł_filmu, studio_id) ) ;

Związek jeden do jeden A1 A2 A3 Tabela R1 Tabela R2 A1 B1 B2 B3 AAA AAA Klucz Właściwości: - niepowtarzalny Klucz obcy Właściwości: - niepowtarzalny

Związek jeden do jeden łączenie tabel Reprezentuje jedna tabela ( dwie ) osoba (id, nazwisko, imię) opis_osoby (id, PESEL, NIP, kolor_oczu,... ) powiązanie pomiędzy relacjami: osoba.id i opis_osoby.id

Związek jeden do jeden łączenie tabel

Związek jeden do wielu A1 A2 A3 Tabela R1 Tabela R2 A1 B1 B2 B3 AAA AAA AAA AAA Klucz Właściwości: - niepowtarzalny Klucz obcy Właściwości: - powtarzalny

Związek jeden do wielu łączenie tabel Reprezentują dwie tabele osoba (id, nazwisko, imię) opis_osoby (id, PESEL, NIP, kolor_oczu,... ) adres (ida, id, miasto, kod) powiązanie pomiędzy tabelami: osoba.id, opis_osoby.id i adres.id

Związek jeden do wielu łączenie tabel

Związek wiele do wiele Tabela R1 (np. wykład) A1 A2 A3 Tabela R2 (np. prowadzący) B1 B2 B3 B4 AA1 BB1 AA2 BB2 Klucz A1 AA1 B2 BB1 BB3 Właściwości: - niepowtarzalny AA1 AA2 AA2 AA2 BB3 BB1 BB2 BB3 Klucz Właściwości: - niepowtarzalny

Baza Kurs - opis Baza danych zawiera informację o uczestnikach kursów językowych, wykładowcach i czasie w którym kursy są realizowane. Baza zawiera sześć tabel : uczestnik ( id_uczestnik, nazwisko, imie), wykladowca ( id_wykladowca, nazwisko, imie), kurs_nazwa (id_nazwa, nazwa), kurs (id_kurs, id_grupa, id_nazwa, termin), uczest_kurs ( id_uczest, id_kurs, id_grupa ), wykl_kurs ( id_wykl, id_kurs, id_grupa ), powiązanych relacjami 1-n i n-m.

Baza Kurs diagram ERD

Baza Kurs zadanie 1 Przedstawić tabelę przedstawiającą wykładowcę, kurs i jego termin. Wykladowca Wykl-kurs Kurs Kurs-nazwa ID_wykl ID_wykl ID_kurs ID_nazwa Nazwisko ID_kurs ID_grupa Nazwa kurs Imie ID_grupa ID_nazwa Realizacja: Termin Należy połączyć tabele wykladowca i wykl-kurs wykorzystując atrybuty wykladowca.id_wykl i wykl-kurs.id_wykl Należy połączyć tabele wykl-kurs i kurs wykorzystując atrybuty wykl-kurs.id_kurs i wykl-kurs.id_grupa oraz kurs.id_kurs i kurs.id_grupa Należy połączyć tabele kurs i kurs-nazwa wykorzystując atrybuty kurs.id_nazwa i kurs-nazwa.id_nazwa

Baza Kurs zadanie 1 Przedstawić tabelę przedstawiającą wykładowcę, kurs i jego termin. Dane z tabeli wykladowca Dane z tabeli kurs-nazwa Dane z tabeli kurs

Baza Kurs zadanie 2 Przedstawić uczestników na wybranym kursie. Uczestnik Uczest-kurs Kurs Kurs-nazwa ID_uczestnik ID_uczest ID_kurs ID_nazwa Nazwisko ID_kurs ID_grupa Nazwa kurs Imie ID_grupa ID_nazwa Realizacja: Termin Należy połączyć tabele uczestnik i uczest-kurs wykorzystując atrybuty uczestnik.id_uczestnik i uczest-kurs.id_uczest Należy połączyć tabele uczest-kurs i kurs wykorzystując atrybuty uczest-kurs.id_kurs i uczest-kurs.id_grupa oraz kurs.id_kurs i kurs.id_grupa Należy połączyć tabele kurs i kurs-nazwa wykorzystując atrybuty kurs.id_nazwa i kurs-nazwa.id_nazwa

Baza Kurs zadanie 2 Przedstawić tabelę przedstawiającą wykładowcę, kurs i jego termin. Dane z tabeli kurs-nazwa Dane z tabeli kurs Dane z tabeli uczestnik

Ćwiczenia praktyczne 5 Język SQL łączenie tabel Związek jeden do jeden Związek jeden do wielu Związek wiele do wielu Polecenie SELECT - łączenie tabel

Łączenie tabel Powiązania krzyżowe Tworzą iloczyn kartezjański pomiędzy dwoma zbiorami danych. Powiązania wewnętrzne Tworzą podzbiór iloczynu kartezjańskiego pomiędzy dwoma zbiorami. Wymagają klauzuli warunkowej w celu określenia kryteriów jakie muszą być spełnione, aby rekordy były powiązane. Powiązanie zewnętrzne Podobnie do powiązań wewnętrznych tworzy podzbiór iloczynu kartezjańskiego. Różnica polega na tym, że zwraca co najmniej jeden egzemplarz każdego wiersza z określonego zbioru. Jest to albo zbiór pierwszy, albo drugi, względnie obydwa w zależności od rodzaju powiązania zewnętrznego. Brakujące wartości kolumn dla pustych części wiersza, które nie spełniają powiązania, zwracane są jako wartości NULL.

Łączenie tabel

Łączenie tabel Standardowo: SELECT lista_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ] SELECT * FROM tabela1, tabela2 --> iloczyn kartezjański SELECT * FROM tabela1, tabela2 WHERE tabela1.atr1 = tabela2.atr2 AND tabela1.atr12 = tabela2.atr22 ;

Łączenie tabel iloczyn kartezjański

Łączenie tabel związek 1:1 Relacja (związek) jeden - do - jeden Reprezentuje jedna tabela ( dwie ) osoba (id, nazwisko, imię) opis_osoby (id, PESEL, NIP, kolor_oczu,... ) powiązanie pomiędzy relacjami: osoba.id i opis_osoby.id SELECT id, nazwisko, imię, PESEL, NIP FROM osoba, opis_osoby WHERE osoba.id = opis_osoba.id AND nazwisko = Kowalski ;

Łączenie tabel związek 1:1

Łączenie tabel związek 1:N Relacja (związek) jeden - do - wielu Reprezentują dwie tabele osoba (id, nazwisko, imię) opis_osoby (id, PESEL, NIP, kolor_oczu,... ) adres (ida, id, miasto, kod) powiązanie pomiędzy tabelami: osoba.id, opis_osoby.id i adres.id SELECT nazwisko, imię, miasto FROM osoba, adres WHERE osoba.id = adres.id AND id = 1 ;

Łączenie tabel związek 1:N

Relacja wiele - do - wielu Łączenie tabel związek N:M Reprezentują dwie tabele plus tabela łącząca osoba (id, nazwisko, imię) opis_osoby (id, PESEL, NIP, kolor_oczu,... ) adres (ida, id, miasto, kod) kamienica (idk, miasto, kod, ulica, numer,nazwa) osoba_kamienica (id, idk) SELECT O.nazwisko, K.nazwa, K.miasto FROM osoba O, kamienica K, osoba_kamienica OK WHERE O.id = OK.id AND K.idk = OK.idk AND K.miasto = Krakow ;

Łączenie tabel związek N:M

Łączenie tabel Łączenie tabel wykorzystujące słowo kluczowe JOIN (standard SQL2). Złączenia tabel - wewnątrz polecenia FROM Składnia wewnętrzne zewnętrzne [INNER] JOIN LEFT [OUTER] JOIN RIGHT [OUTER] JOIN FULL [OUTER] JOIN SELECT list_kolumn FROM tabela1 JOIN tabela2 ON warunek1 WHERE warunek2

Łączenie tabel INNER JOIN

Łączenie tabel LEFT JOIN

Łączenie tabel RIGHT JOIN

Łączenie tabel FULL JOIN

Łączenie tabel

Baza danych opisująca kurs Relacje w bazie danych diagram ERD

Predykaty: UNION, INTERSECT, EXCEPT Słowa kluczowe UNION, INTERSECT i EXCEPT służą do łączenia wyników wielu zapytań. Wartości kolumn są porównywane i na podstawie tego porównania tworzony jest nowy zestaw wyników. Słowa kluczowe używamy pomiędzy dwoma zapytaniami SQL. Zestawy wyników są porównywane i na podstawie tego porównania wiersze są włączane lub pomijane do zestawu wyników. UNION Para zapytań połączonych słowem kluczowym UNION połączy wszystkie wiersze zawierające wspólne identyfikatory w jeden wspólny zestaw wyników. INTERSECT Para zapytań połączonych słowem INTERSECT spowoduje, że wiersze, których nie można znaleźć w obu zbiorach będą pominięte. EXCEPT Para zapytań połączonych słowem kluczowym EXCEPT spowoduje, że wiersze, które znaleziono w obu zbiorach będą pominięte. W wyniku znajdą się tylko te wiersze, które znajdują się po lewej stronie słowa kluczowego EXCEPT, a nie ma ich po prawej stronie.

Predykaty: UNION, INTERSECT, EXCEPT Struktura polecenia SELECT: SELECT opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje FROM nazwy tabel lub widoków WHERE warunek (wybieranie wierszy) GROUP BY nazwy kolumn HAVING warunek (grupowanie wybieranych wierszy) [ { UNION INTERSECT EXCEPT } [ ALL ] ] ORDER BY nazwy kolumn lub pozycje kolumn

Predykat: UNION Operator umożliwia łączenie wyników kilku zapytań w jednym zestawieniu. Wyniki pojawiają się jakby zostały wybrane z jednej tabeli, podczas gdy pochodzą z wielu tabel. Składnia: SELECT lista_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ] UNION [ ALL ] SELECT list_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ]

Predykat: INTERSECT Operator umożliwia utworzenie zapytania zwracającego tylko wiersze wspólne dla wybranych zapytań. Składnia: SELECT lista_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ] INTERSECT SELECT list_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ]

Predykat: EXCEPT Operator umożliwia utworzenie zapytania zwracającego tylko wiersze, które występują w zbiorze po lewej stronie operatora. Składnia: SELECT lista_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ] EXCEPT SELECT list_kolumn FROM tabela [, tabela,... ] [ WHERE warunek ]

Baza Kurs diagram ERD

Baza Kurs zadanie 1 Przedstawić tabelę przedstawiającą wykładowcę, kurs i jego termin. select w.nazwisko as "Nazwisko", w.imie as "Imie", ko.opis as "Nazwa kursu", k.termin as "Termin kursu" from wykladowca w join wykl_kurs wk on w.id_wykladowca = wk.id_wykl join kurs k on k.id_kurs=wk.id_kurs and k.id_grupa=wk.id_grupa join kurs_opis ko on ko.id_kurs=k.id_kurs order by w.nazwisko;

Baza Kurs zadanie 2 Przedstawić tabelę przedstawiającą wykładowcę, kurs i jego termin. select ko.opis as "Nazwa kursu", k.termin as "Termin kursu", k.id_grupa as "Grupa", u.nazwisko as "Nazwisko", u.imie as "Imie" from uczestnik u join uczest_kurs uk on u.id_uczestnik = uk.id_uczest join kurs k on uk.id_kurs = k.id_kurs and uk.id_grupa = k.id_grupa join kurs_opis ko on k.id_kurs_nazwa = ko.id_kurs order by ko.opis, k.termin, k.id_grupa, u.nazwisko;

Baza Biblioteka - ERD Relacja pomiędzy encją ksiazka i encją dzial jest typu 1-N i opisuje przynależność książek do działu : - dział zawiera wiele książek, - książka należy do jednego działu.

Baza Biblioteka - ERD Relacja pomiędzy encją ksiazka i encją egzemplarz jest typu 1-N i opisuje zależność pomiędzy opisem książki a jej egzemplarzem w bibliotece: - opis książki jest jeden w bibliotece, - istnieje wiele egzemplarzy książki w bibliotece.

Baza Biblioteka - ERD Relacja pomiędzy encją egzemplarz i encją czytelnik jest typu N-M i opisuje powiązanie pomiędzy czytelnikiem a egzemplarzem książki: - czytelnik ma kilka pożyczonych pozycji z biblioteki, - pozycja książkowa jest pożyczana przez różnych czytelników.

Baza Biblioteka - ERD

Ćwiczenia praktyczne 6 Język SQL łączenie tabel Łączenie tabel - iloczyn kartezjański Łączenie tabel - predykat INNER JOIN Łączenie tabel - predykat OUTER JOIN LEFT, RIGHT, FULL Łączenie tabel - predykat UNION Łączenie tabel - predykat INTERSECT

Dziękuję za uwagę.