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



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

Wykład 5. SQL praca z tabelami 2

Systemy GIS Tworzenie zapytań w bazach danych

Język SQL, zajęcia nr 1

Relacyjne bazy danych. Podstawy SQL

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

Przestrzenne bazy danych Podstawy języka SQL

Wykład 05 Bazy danych

Paweł Rajba

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

SQL (ang. Structured Query Language)

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

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Relacyjne bazy danych. Podstawy SQL

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

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

Bazy danych. Dr inż. Paweł Kasprowski

Autor: Joanna Karwowska

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

Bazy danych - Materiały do laboratoriów VIII

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych 7. SQL podstawy

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

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

Wykład 2. SQL 1 Structured Query Lenguage

Aspekty aktywne baz danych

LAB 3 (część 1 Projektu)

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

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

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

Język SQL, zajęcia nr 2

SQL :: Data Definition Language

Widok Connections po utworzeniu połączenia. Obszar roboczy

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

ACESS- zadania z wykorzystaniem poleceń SQL

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

Przykładowa baza danych BIBLIOTEKA

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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

Matematyka stosowana. Bazy danych. Zbigniew Jurkiewicz

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

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

Język SQL podstawy zapytań

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

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

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

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. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Autor: Joanna Karwowska

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

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

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

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

Wykład 4. SQL praca z tabelami 1

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Autor: Joanna Karwowska

Model relacyjny. Wykład II

Oracle11g: Wprowadzenie do SQL

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

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

Wykład :45 BD-1 W_3

Wykład 6. SQL praca z tabelami 3

Język SQL. Rozdział 2. Proste zapytania

Grupowanie i funkcje agregujące

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

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

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

Przydatne sztuczki - sql. Na przykładzie postgres a.

Bloki anonimowe w PL/SQL

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

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

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

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

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

Technologie baz danych

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Podstawowe zapytania SELECT (na jednej tabeli)

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

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

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych 10. SQL Widoki

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

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

Projektowanie systemów baz danych

Transkrypt:

Bazy danych Język SQL część 1 Wykład dla studentów matematyki 15 marca 2015

SQL Język wysokiego poziomu do komunikacji z bazami danych (ściślej: z systemami zarzadzania bazami danych) Podajemy co ma być zrobione, a nie jak to zrobić. DBMS sam określa najlepszy sposób wykonania polecenia. optymalizacja zapytań.

Przykłady W przykładach używać będziemy zoologicznej bazy danych o następujacym schemacie Gatunki(nazwa,kontynent,groźny,chroniony) Zwierzaki(imię,gatunek,wiek,waga) Potrawa(nazwa,koszt) Jada(gatunek,potrawa,ile) Podkreślone atrybuty oznaczaja klucze.

Zapytania: polecenie SELECT Uproszczona postać SELECT jakie atrybuty FROM z jakich tabel WHERE jakie warunki muszą spełniać wybrane wiersze

Proste zapytanie Jak nazywaja się lwy? SELECT imie FROM Zwierzaki WHERE gatunek = lew ;

Wynik zapytania imie Kocio Puszek...

Realizacja zapytania 1 Weź tabelę podana we frazie FROM. 2 Wybierz wiersze używajac warunku z frazy WHERE (selekcja). 3 Wybierz tylko kolumny wskazane fraza SELECT (rzutowanie).

Semantyka operacyjna 1 Wprowadzamy zmienna krotkowa (np. nazywajac a się tak, jak tabela), przebiegajac a po kolejnych wierszach (krotkach) tabeli. 2 Sprawdzamy czy bieżaca krotka spełnia warunek z frazy WHERE. 3 Jeśli tak, obliczamy wyrażenia we frazie SELECT używajac tej krotki i dopisujemy do wyniku.

Fraza SELECT Wyróżniony symbol * oznacza wszystkie atrybuty relacji. Przykład: SELECT * FROM Zwierzaki WHERE gatunek = lew ;

Wynik imie gatunek wiek waga Kocio lew 4 120 Puszek lew 7 87............

Wyrażenia złożone w WHERE Operatory arytmetyczne: +, -, *, /. Operatory porównywania: =, <>, <, >, <=, >=. Spójniki logiczne: AND, OR, NOT. Przykład: SELECT imie FROM Zwierzaki WHERE gatunek = lew AND wiek > 4;

Wartości puste: NULL Krotki w relacji moga w niektórych kolumnach mieć wyróżniona wartość NULL. Znaczenie tej wartości zależy od sytuacji, może to być na przykład: Wartość nieznana: istnieje jakaś konkretna wartość, ale jej nie znamy albo jeszcze nie została ustalona (np. ocena z egzaminu). Nie ma zastosowania: w tabeli z danymi osobowymi wartość w kolumnie nazwisko panieńskie dla mężczyzn.

Porównania z NULL Logika dla warunków w SQL jest trójwartościowa: true, false, unknown. Jakiekolwiek porównanie z wartościa NULL daje wynik unknown. Do porównywania wartości pustych należy używać operatorów IS NULL i IS NOT NULL.

Inne warunki Niektóre inne warunki elementarne SQL (operatory można poprzedzać w nich symbolem NOT aby odwrócić warunek) x IN (x 1,..., x n ) Przynależność do zbioru, podanego jawnie przez wyliczenie lub jako zapytanie zagnieżdżone. x BETWEEN a AND b Przynależność do przedziału. x LIKE wzorzec Dopasowanie do wzorca, we wzorcu % oznacza dowolny ciag znaków, zaś _ dowolny pojedynczy znak. napis SIMILAR TO wzorzec Rozszerzone dopasowanie do wzorców, używa się wyrażeń regularnych. x IS NULL Wartości puste

Inne wyrażenia W klauzuli SELECT można używać wyrażenia CASE WHEN warunek THEN wartość... ELSE wartość END na przykład do kategoryzacji wartości SELECT imie, nazwisko, CASE WHEN wiek IS NULL THEN nie wiadomo WHEN wiek >= 18 THEN dorosły ELSE nieletni END FROM... Do wartości NULL przyda się wyrażenie COALESCE(v1, v2). Jego wartościa jest v1, o ile nie jest NULL, w przeciwnym razie v2.

Tworzenie tabel CREATE TABLE nazwa( kolumna typ więzy-spójności,... ); DROP TABLE nazwa;

Tworzenie tabeli Gatunki CREATE TABLE Gatunki ( nazwa VARCHAR(30) PRIMARY KEY, kontynent VARCHAR(25), grozny BOOLEAN, chroniony BOOLEAN );

Tworzenie tabeli Zwierzaki CREATE TABLE Zwierzaki ( imie VARCHAR(20) PRIMARY KEY, gatunek VARCHAR(30) REFERENCES Gatunki, wiek INTEGER CHECK (wiek > 0), waga NUMERIC(5) );

Tabele robocze Sa widoczne tylko w sesji, w której zostały utworzone, i znikaja automatycznie po jej zakończeniu. CREATE TEMPORARY TABLE nazwa (... ); Można je też tworzyć inaczej: SELECT... INTO TEMPORARY TABLE nazwa FROM......;

Typy danych Najbardziej przydatne to CHAR(n) VARCHAR(n), VARCHAR2(n) NUMERIC(n), NUMERIC(n, m) INTEGER, INT DATE BOOLEAN.

Konwersja Do konwersji między typami służy konstrukcja CAST, np. CAST(wczoraj AS TEXT) zamienia wartość typu DATE w kolumnie wczoraj na tekst.

Więzy spójności NOT NULL Wartość nie może być pusta PRIMARY KEY Klucz główny unikalny identyfikator dla wierszy REFERENCES nazwa-tabeli Klucz obcy (odwołanie do innej tabeli, zwykle do jej klucza głównego) CHECK warunek Warunek na wartości w wierszu, na przykład UNIQUE CHECK (nazwa = lower(nazwa)) oznacza, że nazwa nie może zawierać dużych liter. Wymusza unikalność wartości w kolumnie

Więzy spójności W deklaracjach odwołań do innych tabel można specyfikować zachowanie w przypadku usuwania lub modyfikacji wartości klucza obcego:... ON DELETE SET NULL,... ON UPDATE CASCADE

Cykliczne zależności referencyjne Problem kury i jajka. Poniższe polecenia zawsze powoduja bład CREATE TABLE Kura ( imie CHAR(8) PRIMARY KEY, jajko INTEGER REFERENCES Jajko ); CREATE TABLE Jajko ( numer INTEGER PRIMARY KEY, kura CHAR(8) REFERENCES Kura ); Podczas tworzenia tabeli Kura system napotyka frazę odnoszac a się do tabeli Jajko. Tabela ta jeszcze nie istnieje! Zmiana kolejności poleceń nic nie pomoże.

Polecenia modyfikacji schematu W takich sytuacjach trzeba użyć poleceń modyfikacji schematu. Najpierw tworzymy tabele nie określajac więzów kluczy obcych: CREATE TABLE Kura ( imie CHAR(8) PRIMARY KEY, jajko INTEGER ); CREATE TABLE Jajko ( numer INTEGER PRIMARY KEY, kura CHAR(8) );

Dodawanie więzów Nowe więzy dodajemy do tabeli poleceniem: ALTER TABLE tabela ADD CONSTRAINT nazwa ograniczenie; W naszym przypadku potrzebne będa dwa polecenia: ALTER TABLE Kura ADD CONSTRAINT Kura_Jajko FOREIGN KEY (jajko) REFERENCES Jajko(numer) INITIALLY DEFERRED DEFERRABLE; ALTER TABLE Jajko ADD CONSTRAINT Jajko_Kura FOREIGN KEY (kura) REFERENCES Kura(imie) INITIALLY DEFERRED DEFERRABLE;

Opóźnione sprawdzanie więzów Fraza INITIALLY DEFERRED DEFERRABLE żada od SQL odroczenia sprawdzania więzów do chwili zatwierdzenia transakcji, np. aby wstawić ( Czubatka, 1) do tabeli Kura i (1, Czubatka ) do tabeli Jajko użyjemy: INSERT INTO Kura VALUES ( Czubatka, 1); INSERT INTO Jajko VALUES (1, Czubatka ); COMMIT; Bez opóźnionego sprawdzania więzów nie można byłoby wstawić żadnego wiersza do tabel Kura ani Jajko, ponieważ już pierwszy INSERT naruszałby więzy (chyba że dopuścimy wartości puste NULL).

Usuwanie więzów Nazwane więzy można usuwać poleceniem: ALTER TABLE tabela DROP CONSTRAINT nazwa; Należy pamiętać, aby przed usunięciem tabel zawsze przedtem usunać ręcznie więzy cykliczne, w przeciwnym razie SQL nie pozwoli na usunięcie tabel. W niektóre systemy akceptuja modyfikator CASCADE w poleceniu DROP, który powoduje próbę automatycznego usunięcia takich cykli. ALTER TABLE Jajko DROP CONSTRAINT Jajko_Kura; ALTER TABLE Kura DROP CONSTRAINT Kura_Jajko; DROP TABLE Jajko; DROP TABLE Kura;

Eliminacja powtórzeń Modyfikator DISTINCT służy do usuwania powtórzeń z wyników zapytań SELECT DISTINCT kontynent FROM Gatunki; Jednakże operacje UNION, INTERSECT i EXCEPT automatycznie eliminuja powtórzenia, o ile nie zastosowano modyfikatora ALL (SELECT gatunek FROM Zwierzaki WHERE waga > 100) UNION ALL (SELECT gatunek FROM Zwierzaki WHERE wiek > 10);

Funkcje agregujace Służa do obliczania wartości parametrów statystycznych, dotyczacych całej tabeli (lub wybranych grup wierszy), a nie pojedynczych wierszy SELECT AVG(waga) FROM Zwierzaki WHERE gatunek = Niedźwiedź ; Standardowe funkcje to AVG, COUNT, MAX, MIN i SUM. Wartości puste sa oczywiście pomijane (poza COUNT(*)!).

Funkcja COUNT Funkcja COUNT liczy wiersze i często ma argument zastępczy: SELECT COUNT(*) FROM Zwierzaki WHERE gatunek = Niedźwiedź ; Jeśli zamiast * jej argumentem jest nazwa kolumny, to nie sa liczone wiersze, zawierajace tej kolumnie wartości puste. Natomiast poprzedzenie takiego argumentu dodatkowo modyfikatorem DISTINCT spowoduje obliczenie, ile różnych wartości występuje w tej kolumnie SELECT COUNT(DISTINCT gatunek) FROM Zwierzaki;

Grupowanie Dzielenie wierszy na grupy fraza GROUP BY ułatwia równoczesne obliczanie parametrów statystycznych dla wybranych podzbiorów wierszy SELECT gatunek, AVG(waga) FROM Zwierzaki GROUP BY gatunek; Zauważmy, że eliminację powtórzeń można przeprowadzić również grupowaniem: SELECT kontynent FROM Gatunki GROUP BY kontynent;

Grupowanie Warunkiem z frazy WHERE można ograniczyć grupowanie tylko do wybranych wierszy SELECT gatunek, AVG(waga) FROM Zwierzaki, Gatunki WHERE Zwierzaki.gatunek = Gatunki.gatunek AND kontynent = Afryka GROUP BY gatunek; Można jednak także formułować warunki dla całych grup, używajac frazy HAVING SELECT gatunek, AVG(waga) FROM Zwierzaki, Gatunki WHERE Zwierzaki.gatunek = Gatunki.gatunek GROUP BY gatunek HAVING COUNT(*) > 2;

Grupowanie Chcac znaleźć najwyższa średnia po grupach, nie możemy po prostu napisać MAX(AVG(wyrażenie)) [Oracle akceptuje taka konstrukcję, ale nie jest to zgodne ze standardem SQL]. Można jednak napisać proste zapytanie zagnieżdżone: SELECT MAX(srednia_z_ocen) FROM (SELECT AVG(ocena) AS srednia_z_ocen FROM Oceny GROUP BY indeks) Srednie;

Wstawianie wierszy Nowe wiersze do tabeli wstawiamy poleceniem INSERT INSERT INTO tabela VALUES (wartość,...); na przykład INSERT INTO Gatunki VALUES ( krowa, Europa,FALSE,FALSE); Wartości można podawać w innej kolejności niż w definicji tabeli, wtedy jednak trzeba po nazwie tabeli podać w nawiasach listę nazw kolumn. Wartości dla kolumn dopuszczajacych NULL można pominać. INSERT INTO Gatunki(nazwa,chroniony,kontynent) VALUES ( krowa,false, Europa );

Wstawianie wierszy Daty zapisujemy wyrażeniem DATE 2008-03-11 a czas wyrażeniem TIME 15:00:07 zaś łaczny zapis (data + czas) ma postać TIMESTAMP 2008-03-11 15:00:10

Modyfikacja wierszy Zawartość niektórych kolumn musi czasem ulegać zmianom. Takich zmian dokonuje się poleceniem UPDATE UPDATE tabela SET kolumna = wartość,... WHERE warunek; Zmiana dotyczy wszystkich wierszy, dla których jest spełniony warunek. Jeśli warunek został pominięty, zmiana dotyczy wszystkich wierszy w tabeli. Czasem zmiana słuzy do uzupełnienia lub korekty informacji UPDATE Gatunki SET grozny = FALSE WHERE nazwa = krowa ; Często jedenak zmiana jest wymuszona przez zmiany w otaczajacym świecie UPDATE Zwierzaki SET wiek = wiek + 1;

Usuwanie wierszy Usuwanie wierszy to najprostsza operacja DELETE FROM tabela WHERE warunek; Usuwane sa wszystkie wiersze, dla których jest spełniony warunek. Jeśli warunek został pominięty, usuwane sa wszystkie wiersze w tabeli. DELETE FROM Gatunki WHERE nazwa = krowa ;