Bazy danych. Dr inż. Paweł Kasprowski



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

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

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

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

Język SQL, zajęcia nr 1

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

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

Projektowanie systemów baz danych

Systemy GIS Tworzenie zapytań w bazach danych

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

Wykład 05 Bazy danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Paweł Rajba

Przestrzenne bazy danych Podstawy języka SQL

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Bazy danych 7. SQL podstawy

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

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

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

Bazy danych i usługi sieciowe

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

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

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

Podstawowe informacje o bazach danych. Technologie Informacyjne

Wprowadzenie do języka SQL

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

Relacyjne bazy danych. Podstawy SQL

Język SQL podstawy zapytań

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

Wykład 5. SQL praca z tabelami 2

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

SQL Structured Query Language

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Tworzenie baz danych i tabel

Relacyjne bazy danych. Podstawy SQL

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

Wykład :45 BD-1 W_3

Bazy danych 5. Samozłaczenie SQL podstawy

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

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

Bazy danych. Dr inż. Paweł Kasprowski

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

SQL Structured Query Language

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Bazy Danych i Usługi Sieciowe

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

BAZY DANYCH. Wykład 1: Wprowadzenie do baz danych. Marcin Czajkowski. Przygotowanie wykładu: Małgorzata Krętowska

Aspekty aktywne baz danych

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

Autor: Joanna Karwowska

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

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

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych i usługi sieciowe

Widok Connections po utworzeniu połączenia. Obszar roboczy

Jerzy Nawrocki, Wprowadzenie do informatyki

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

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Bazy danych. Polecenia SQL

Wykład 8. SQL praca z tabelami 5

Bazy danych 4. SQL- podstawy

1 Wstęp do modelu relacyjnego

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

Model relacyjny. Wykład II

Bazy danych - Materiały do laboratoriów VIII

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wstęp do relacyjnych baz danych. Jan Bartoszek

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Wykład 4. SQL praca z tabelami 1

Bazy danych 4. SQL podstawy. P. F. Góra

Język SQL. Rozdział 2. Proste zapytania

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

Wykład 2. Relacyjny model danych

SQL Structured Query Language

Podyplomowe Studium Programowania i Baz Danych

Bazy danych Ćwiczenia projektowe

Dr Michał Tanaś(

WPROWADZENIE DO JĘZYKA SQL

Wykład 6. SQL praca z tabelami 3

Komunikacja z bazą danych psql

Semestr Wykład Ćwiczenie Laboratorium Projekt Seminarium Łącznie. V Forma zaliczenia Liczba punktów ECTS

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

SIECI KOMPUTEROWE I BAZY DANYCH

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

Oracle11g: Wprowadzenie do SQL

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

RBD Relacyjne Bazy Danych

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

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Transkrypt:

Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność dostępu do danych Projektowanie schematu bazy danych (ERD) Literatura Sposób przechowywania danych Jeffrey D. Ullman, J. Widom Podstawowy wykład z systemów baz danych WNT 2001 Ramez Elmasri, Shamkant B. Navathe Wprowadzenie do systemów baz danych Helion 2004 Marcin Szeliga ABC języka SQL Helion 2002 Plik zawiera rekordy (dane pracowników) Rekord składa się z pól (pracownik Kowalski) Pole zawiera pojedynczą wartość (nazwisko, imie, data urodzenia) Pola mogą być różnych typów: tekstowe numeryczne daty i czasu Nomenklatura Przykład Plik > tablica Rekord > wiersz Pole > kolumna nazwisko imie adres dataur pensja

Dodanie nazwy zespołu Przykład nazwisko imie adres dataur pensja nazwa nazwisko imie adres dataur pensja nazwa Problemy: redundancja danych co jeśli chcemy przechować więcej informacji o zespołach? Rozwiązanie drugi rekord Jak zrealizować połączenie nazwisko imie adres dataur pensja Jeden zakład łączy się z wieloma pracownikami Połączenie jeden do wielu Zespoły nazwa budynek telefon kierownik Z P P P Z P P P Rozszerzenie przykładu pracują nad projektami Tworzy to hierarchiczny model danych Połączenie pracownik-projektprojekt Problem: nad projektem pracować może wielu pracowników Połączenie wiele do wielu Z Z D D P P P P P P P P P P P P P P P P P P P P

Dwa zapytania Model sieciowy Nad którym projektem pracują pracownicy zespołu OPROGRAMOWANIE którego zespołu pracują nad projektem EDYTOR TEKSTU Problem: niesymetryczność zapytań połączenia wiele do jeden są powolne Więcej połączeń Większe skomplikowanie! D D P P P P P P P P P P Model relacyjny Przykład 1971 E.F. Codd laboratoria IBM Wszystko jest danymi typami prostymi Nie ma specjalnych połączeń Wiersze tabel (relacji) nie są numerowane Połączenia wynikają z podobnych wartości atrybutów w różnych tabelach nazwisko imie adres dataur pensja idz Zespoły idz nazwa budynek telefon kierownik Przykład Rozszerzenie przykładu nazwisko imie adres dataur pensja idz Zespoły idz nazwa budynek telefon kierownik Tablica Zespoły Tablica Pracownicy Pracownicy realizują projekty: Tablica Projekty r nazwa datarozp datakon kierownik

Rodzaje związków Modelowanie związków N-M jeden do jeden Pracownicy Komputery jeden do wielu (1-N) Zespoły Pracownicy wiele do wielu (N-M) Pracownicy - Projekty Pracownicy nazw dataur Udział r Projekty r nazwa kierownik Dodatkowa tablica łącząca Pełna baza danych Dwa zapytania model relacyjny Zespoły idz nazwa kierownik Pracownicy nazw dataur idz Wypłaty r kwota data Projekty r nazwa kierownik Nad którym projektem pracują pracownicy zespołu OPROGRAMOWANIE którego zespołu pracują nad projektem EDYTOR TEKSTU Tym razem: symetryczność zapytań Relacyjny model danych Nomenklatura Iloczyn kartezjański A B = : {( ab) a A b B} Relacja to podzbiór iloczynu kartezjańskiego δ ( AB) = {( ab) : a A b B aδb} Trzy różne podejścia relacyjne logiczne fizyczne relation tablica plik tuple wiersz rekord atrybut kolumna pole Każde jest równie dobre

Algebra relacji Klucz relacji Terminologia A 1, A 2 atrybuty R, S schemat relacji, np. {A,B,C} r(r) relacja o schemacie R t x [A 1 ] wartość artybutu A 1 w krotce t x Zbiór atrybutów, których wartość jest unikalna dla każdej krotki Jest to podzbiór R K R taki, że dla każdej pary krotek z r t i t j r wartości klucza są różne t [ K ] t [ K ] i j Trzy podstawowe operacje Selekcja Selekcja wybór wierszy Projekcja wybór kolumn Złączenie naturalne łączenie relacji Matematycznie: σ ( r) = { t : t r w( t) TRUE} w = Podzbiór krotek relecji dla których spełniony jest warunek Projekcja Złączenie naturalne Matematycznie: π X ( r) = { u : u = t[ X ] t r} gdzie X jest podzbiorem R Wybór niektórych atrybutów ze wszystkich krotek relacji Dla dwóch relacji r(r) i s(s) ( R) s( S ) = r >< { u: t r w s t[ R S] = wr [ S] u [ R] = t u[ S] = w} Połącz dwie relacje według wspólnych dla nich atrybutów

Przykłady zapytań (1) Przykłady zapytań (2) Znajdź pracowników z pojedynczymi dochodami większymi niż 150 Znajdź pracowników z dochodami z projektu EDYTOR TEKSTU Π nazwisko (σ kwota>150 (pracownicy Χ wypłaty)) Π nazwisko (σ nazwa=edytor tekstu (pracownicy X wypłaty X projekty)) Przykłady zapytań (3) Język SQL Znajdź projekty w których brał udział pracownik Kowalski Π nazwa (σ nazwisko=kowalski (pracownicy X wypłaty X projekty)) 1972 - Codd, model relacyjny 1974 - baza SYSTEM/R i język SEQUEL 1979 - Relational Software Inc. tworzy system Oracle 1986 - Ingres RDBMS język QUEL 1989 - standard ANSI SQL (SQL-89) 1992 - ANSI SQL-92 podstawowy standard stał się także standardem ISO 1999 - ANSI SQL-99 (6 części) Język SQL Tworzenie tabeli Język deklaratywny składa się poleceń Elementy języka: DDL Data Definition Language CREATE, ALTER, DROP DML Data Manipulation Language INSERT, UPDATE, DELETE DQL Data Query Language SELECT DCL Data Control Language GRANT, REVOKE, DENY CREATE TABLE <nazwa> (<kolumna> <typ> [<ograniczenia>] [,...]) Typy kolumn: - tekstowe - numeryczne - datowe Pomimo istnienia standardu istnieją różnice w dostępnych typach dla różnych serwerów

Najważniejsze typy danych Typy tekstowe CHAR(n) VARCHAR(n) Typy numeryczne INT, SMALLINT, BIGINT DECIMAL(m, n) FLOAT, DOUBLE Typy datowe DATE, DATETIME, TIME, INTERVAL Inne typy BIT, BYTE, BOOLEAN SERIAL, AUTOINCREMENT BLOB, TEXT Rodzaje ograniczeń [ NOT ] NULL DEFAULT <wartość> UNIQUE CHECK (warunek) PRIMARY KEY FOREIGN KEY Tworzenie tabeli Modyfikacja tabeli CREATE TABLE prac ( int primary key, nazw varchar(20) not null, dataur date, pensja decimal(7,2) default 2000 ); ALTER TABLE <nazwa> <opis_zmiany> Przykłady: ALTER TABLE prac ADD COLUMN idz INT ALTER TABLE prac MODIFY COLUMN nazw varchar(50) Składnia może się różnić dla różnych serwerów! Usunięcie tabeli Praca z danymi DROP TABLE <nazwa_tabeli> Usuwa tabelę ze wszystkimi danymi INSERT wstawienie wiersza/wierszy INSERT INTO <tabela>[(<kolumny>)] VALUES (<wartości>) UPDATE modyfikacja wiersza/wierszy UPDATE <tabela> SET <kolumna>=<wartość>[, <kolumna>=<wartość>...] WHERE <warunek> DELETE usunięcie wiersza/wierszy DELETE FROM <tabela> WHERE <warunek>

Wstawianie wierszy Modyfikacja wierszy CREATE TABLE prac ( int unique, nazw varchar(20) not null, dataur date, pensja decimal(7,2) default 2000 ); INSERT INTO prac VALUES(1,'Kowalski','1-1-1980',3000); INSERT INTO prac(,nazw) VALUES(1,'Nowak'); -- Błąd: nie jest unikalny! INSERT INTO prac(,nazw) VALUES(2,'Nowak'); -- OK: pola dataur=null, pensja=2000 INSERT INTO prac(,pensja) VALUES(3,5000); -- Błąd: nazw nie może być null! INSERT INTO prac(,nazw) <polecenie SELECT> UPDATE prac SET nazw='nowak' WHERE nazw='kowalski' -- Uwaga! Zmieni nazwiska WSZYSTKICH Kowalskich! UPDATE prac SET nazw='nowak' WHERE =8 UPDATE prac SET nazw='nowak, dataur='1-1-1975' WHERE pensja > 2000 Warunek WHERE nie jest obowiązkowy można zmodyfikować wszystkie wiersze. Można także używać wyrażeń: UPDATE prac SET pensja=pensja+100 -- globalna podwyżka! bardzo użyteczne Usuwanie wierszy Wyszukiwanie danych Usuń najlepiej zarabiających: DELETE FROM prac WHERE pensja>3000 Usuń najstarszych: DELETE FROM prac WHERE dataur<'1950' Usuń starych dobrze zarabiających: DELETE FROM prac WHERE dataur<'1950' AND pensja>3000 Warunek WHERE nie jest obowiązkowy DELETE FROM prac -- usuwa wszystkie rekordy z tablicy prac Najczęściej wykonywana operacja (wyrocznia!) Polecenie: SELECT Możliwości sporej rozbudowy tego polecenia Podstawowa składnia: SELECT <kolumny> FROM <tablice> WHERE <warunki> Przykłady SELECT Warunki Podaj nazwiska i pensje pracowników zakładu nr 5 SELECT nazw,pensja FROM prac WHERE idz=5 -- wynik: tablica w dwóch kolumnach Podaj nazwisko pracownika nr 8 SELECT nazw FROM prac WHERE =8 -- wynik: jeden wiersz, jedna kolumna Zamiast listy kolumn można podać *, WHERE jest nieobowiązkowe: SELECT * FROM prac -- wynik: zawartość całej tablicy prac Porównania: =,<>,<,>,>=,<= [NOT] BETWEEN a AND b [NOT] IN (<lista wartości>) [NOT] LIKE 'tekst' % - dowolny ciąg znaków _ - dowolny znak Warunki logiczne: AND, OR AND ma wyższy priorytet! Wyrażenia algebraiczne (pensja*2>1000)

Przykłady warunków Złączenia w select select * from prac where between 2 and 5 select * from prac where nazw in ('Wolski','Niemczyk') select * from prac where nazw like 'Kro%' select * from prac where nazw like 'Kowalsk_' select * from prac where pensja/1000>2 select * from prac where nazw='wolski' OR nazwisko='niemczyk' select * from prac where nazw like 'A%' and pensja=1000 or pensja=3000 Podaj nazwiska pracowników zespołu 'Oprogramowanie' Filtr na nazwę Zespoły idz nazwa kierownik Złączenie Pracownicy nazw dataur idz wypisanie nazwisk Złączenia w select Złączenia w select Podaj nazwiska pracowników zespołu 'Oprogramowanie' select nazw from prac join zesp on prac.idz = zesp.idz where nazwa= 'Oprogramowanie' Podaj nazwiska pracowników zespołu 'Oprogramowanie' warunek połączenia select nazw from prac p join zesp z on p.idz = z.idz where nazwa= 'Oprogramowanie' Jeśli nie ma warunku połączenia iloczyn kartezjański (każdy wiersz z każdym) Dziękuję za uwagę Do zobaczenia... materiały dostępne pod adresem: www.kasprowski.pl