Wykład 8. SQL praca z tabelami 5

Podobne dokumenty
Wykład 5. SQL praca z tabelami 2

Autor: Joanna Karwowska

Wykład 6. SQL praca z tabelami 3

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

Wykład 05 Bazy danych

Bazy danych - Materiały do laboratoriów VIII

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

Paweł Rajba

Język SQL, zajęcia nr 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Język SQL, zajęcia nr 2

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

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

SQL (ang. Structured Query Language)

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

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych 10. SQL Widoki

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

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

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

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

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

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

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Widok Connections po utworzeniu połączenia. Obszar roboczy

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

DECLARE VARIABLE zmienna1 typ danych; BEGIN

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych 9. SQL Klucze obce Transakcje

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

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Aspekty aktywne baz danych

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

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

Wykład 4. SQL praca z tabelami 1

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

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

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Zarządzanie obiektami bazy danych Oracle11g

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych 7. SQL podstawy

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Przykładowa baza danych BIBLIOTEKA

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

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

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

SQL :: Data Definition Language

Projektowanie systemów baz danych

Bazy danych. Polecenia SQL

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

BAZA DANYCH SIECI HOTELI

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

SIECI KOMPUTEROWE I BAZY DANYCH

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

Bazy danych SQL Server 2005

Relacyjne bazy danych. Podstawy SQL

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

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Oracle PL/SQL. Paweł Rajba.

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

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

Bazy danych Język SQL część 1 Wykład dla studentów matem

Internetowe bazy danych

Bazy danych. Dr inż. Paweł Kasprowski

SQL praca z tabelami 4. Wykład 7

Bazy danych Ćwiczenia projektowe

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

Oracle11g: Wprowadzenie do SQL

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

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

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

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

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

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Struktura drzewa w MySQL. Michał Tyszczenko

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

Transkrypt:

Wykład 8 SQL praca z tabelami 5

Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu SELECT, INSERT, UPDATE i DELETE, gdzie są wprowadzane do klauzul WHERE lub FROM. Dwa typy podzapytań: - proste - skorelowane W przykładach można wykorzystać bazę złożoną z tabel klienci, towary i zamowienia o strukturach: klienci id imie nazwisko towary id nazwa grupa cena zamowienia id klient_id towar_id data wartosc

Podzapytanie w klauzuli FROM SELECT kolumny_zapytania FROM (SELECT kolumny_podzapytania FROM tablice WHERE warunki_podzapytania ) AS nazwa WHERE warunki_zapytania; zapytanie główne pod-zapytanie zapytanie główne c.d. gdzie argument nazwa jest nazwą tablicy wynikowej zwróconej przez podzapytanie. np. SELECT imie, nazwisko, wartosc, data FROM (SELECT imie, nazwisko, wartosc, data FROM klienci, zamowienia WHERE klienci.id = zamowienia.klient_id) AS klienci_zamowienia WHERE wartosc > 15 ORDER BY wartosc; Efektem jest tablica o kolumnach imie, nazwisko, wartosc i data, dla wierszy, w których wartosc zamówienia jest większa niż 15.

Podzapytanie proste w klauzuli WHERE. Podzapytanie proste to takie podzapytanie, które jest wykonywane raz, a jego wynik jest następnie wykorzystywany w zapytaniu głównym np. SELECT towar_id FROM zamówienia WHERE wartosc = (SELECT MIN(wartosc) FROM zamowienia); zapytanie główne pod-zapytanie gdzie najpierw wykonywane jest podzapytanie,a potem pytanie główne. Wynikiem jest tabela z kolumna towar_id i jednym wierszem o min wartości zamówienia. Podobnie: SELECT towar_id, nazwa FROM zamowienia, towary WHERE wartosc = (SELECT MIN(wartosc) FROM zamowienia) zapytanie głowne pod-zapytanie AND towary.id = zamowienia.towar_id; dodatkowo wyświetla kolumne z nazwą towaru o min wartości zamówienia.

Podzapytanie zwracające wiele wartości w klauzuli WHERE. Przykład: SELECT zamowienia.id, imie, nazwisko, nazwa, data, wartosc FROM zamówienia, towary, klienci WHERE wartosc IN (SELECT MAX(wartosc) FROM zamowienia GROUP BY towar_id) AND towary.id = zamowienia.towar_id AND klienci.id = zamowienia.klient_id ORDER BY wartosc; gdzie otrzymamy kolumny zamowienia.id, imie, nazwisko, nazwa, data, wartosc dla najwyższych zamówień dla kardego typu towaru (towar_id) posortowanych względem wartości zamówienia.

Podzapytania skorelowane. Podzapytania skorelowane są wykonywane dla każdej wartości analizowanej przez zapytanie główne. Dają odpowiedź na bardziej skomplikowane pytania. Przykład: SELECT id, nazwa, cena, grupa FROM towary WHERE cena > (SELECT AVG(cena) FROM towary AS towary2 WHERE towary.grupa=towary2.grupa ) ORDER BY cena; dla każdego towaru analizowanego w zapytaniu głównym w zapytaniu skorelowanym zostanie wyliczona średnia cena grupy towarów, do której towar należy (tablica towary została w pod-zapytaniu przemianowana na towary2).

Podzapytania w instrukcjach aktualizujacych dane. Podzapytania mogą być wykorzystywane w przypadku instrukcji aktualizujących dane, takich jak INSERT, UPDATE czy DELETE. Przykład wypełniania nowej tablicy utworzonej poleceniem: CREATE TABLE zam_tymczas ( imie VARCHAR(20), nazwisko VARCHAR(30), wartosc DECIMAL(7,2) ); wartościami z wcześniejszych tabel klienci i zamowienia według schematu INSERT INTO tablica (kolumny) ( SELECT kolumny_podzapytania FROM tablice_podzapytania WHERE warunki_podzapytania );

Podzapytania w instrukcjach aktualizujacych dane (INSERT INTO). Przykład: INSERT INTO zam_tymczas (imie, nazwisko, wartosc) (SELECT imie, nazwisko, wartosc FROM klienci, zamowienia WHERE klienci.id = zamowienia.klient_id ); wstawi do tabeli wartość zamówienia dla każdego klienta i zamówienia Przykład: INSERT INTO zam_tymczas (imie, nazwisko, wartosc) ( SELECT imie, nazwisko, SUM(wartosc) AS wartosc FROM klienci, zamowienia WHERE klienci.id = zamowienia.klient_id GROUP BY klient_id, imie, nazwisko ); wstawi min. wartość sumaryczna zamówień dla każdego klienta.

Podzapytania w instrukcjach aktualizujacych dane (DELETE). Można przykładowo usunąć z tabeli zam_tymczas takie zamówienia których wartość jest mniejsza niż średnia wartość zamówień w tabeli zamowienia DELETE FROM zam_tymczas WHERE wartosc < ( SELECT AVG(wartosc) FROM zamowienia );

Transakcje Transakcja to zbiór operacji na bazie danych, które stanowią logiczną całość i albo mogą być wykonywane wszystkie, albo żadna z nich. Najczęściej spotykaną transakcją jest przelew. W przykładach można użyć tabeli konta przechowującej informację o stanie kont o strukturze: konta id id_osoby saldo gdzie id - klucz główny, id_osoby klucz obcy (id właściciela konta), saldo stan konta Utworzonej przez: CREATE TABLE konta ( id INTEGER PRIMARY_KEY, id_osoby INTEGER NOT NULL, saldo DECIMAL(7,2) NOT NULL );

Transakcje i wypełnionej przykładowymi danymi: INSERT INTO konta VALUES (1, 1, 120.00); INSERT INTO konta VALUES (2, 2, 30.00); Przelew o wysokości 40 zł można wykonać przez dwie operacje: UPDATE konta SET saldo = saldo 40 WHERE id = 1; UPDATE konta SET saldo = saldo + 40 WHERE id = 2; Przelew nie powinien dojść do skutku jeśli między jedną instrukcją UPDATE a drugą nastąpi jakakolwiek awaria. Transakcja składa się z trzech etapów: - rozpoczęcie transakcji (START TRANSACTION) - wykonanie instrukcji składających się na transakcję - zatwierdzenie transakcji (COMMIT)

Transakcje Przykład: START TRANSACTION; UPDATE konta SET saldo = saldo 40 WHERE id = 1; UPDATE konta SET saldo = saldo + 40 WHERE id = 2; COMMIT; Wycofanie (odwołanie) transakcji następuję za pomocą polecenia ROLLBACK (zamiast COMMIT): START TRANSACTION; instrukcje wchodzące w skład transakcji ROLLBACK; Należy pamiętać, że transakcja zachodzi dopiero w momencie wykonania polecenia COMMIT.

Więzy integralności Mając w bazie dwie tabele (np. pracownicy i stanowiska) powiązane za pomocą klucza obcego (np. stanowisko_id) np. o strukturach: pracownicy id imie nazwisko placa stanowisko_id pesel stanowiska id nazwa łatwo popełnić pomyłkę powodującą brak identyfikatora występującego w powiązaniu (np. brak odpowiedniego id w tabeli stanowiska)- brak spójności danych w bazie. Możemy spowodować aby serwer sam sprawdzał spójność o ile odpowiednio zdefiniujemy więzy integralności. Więzy integralności wprowadzamy przez jawne zdefiniowanie klucza obcego przy tworzeniu tablicy przez konstrukcję: [CONSTRAINT nazwa] FOREIGN KEY (kolumna1, kolumna2,, kolumnan) REFERENCES nazwa_tabeli (kolumna1, kolumna2,, kolumnan) gdzie nazwa to nazwa ograniczenia, nazwa_tabeli to tabela z której pochodzi klucz obcy, zaś kolumny po REFERECES mówią z których kolumn pochodzi klucz obcy.

Więzy integralności Przykład: CREATE TABLE pracownicy ( id INTEGER PRIMARY KEY, imie VARCHAR(20) NOT NULL, nazwisko VARCHAR(30) NOT NULL, placa DECIMAL(7,2) NOT NULL, stanowisko_id INTEGER, pesel CHAR(11), CONSTRAINT stanowiska_fk FOREIGN KEY (stanowisko_id) REFERENCES stanowiska(id) );

Więzy integralności Więzy integralności można dodawać do i usuwać z istniejących tabel zgodnie z przepisem: ALTER TABLE nazwa_tabeli ADD/DROP [CONTRAINT nazwa] FOREIGN KEY (kolumna1, kolumna2,, kolumnan) REFERECES nazwa_tabeli (kolumna1, kolumna2,, kolumnan) Przykład: ALTER TABLE pracownicy ADD CONSTRAINT stanowiska_fk FOREIGN KEY (stanowisko_id) REFERENCES stanowiska(id); ALTER TABLE pracownicy DROP CONSTRAINT stanowiska_fk; lub ALTER TABLE pracownicy DROP FOREIGN KEY stanowiska_fk;