1 / 101

Wstęp do Baz Danych

Wstęp do Baz Danych. Rodzaje baz danych. Obecnie na rynku istnieje wiele baz danych produkowanych w oparciu o różne technologie i często zupełnie różnie konstruowanych. Z najbardziej popularnych można wymienić następujące: dBase FilePro (tylko do odczytu) Informix InterBase FrontBase

xenos
Download Presentation

Wstęp do Baz Danych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wstęp do Baz Danych

  2. Rodzaje baz danych • Obecnie na rynku istnieje wiele baz danych produkowanych w oparciu o różne technologie i często zupełnie różnie konstruowanych. Z najbardziej popularnych można wymienić następujące: • dBase • FilePro (tylko do odczytu) • Informix • InterBase • FrontBase • mSQL • Direct MS-SQL • MySQL • ODBC • PostgreSQL

  3. Co to są bazy danych? • Baza danych to po prostu logicznie poukładane dane. • Bazą danych jest na przykład • System plików na komputerze. • książka adresowa w programie pocztowym. • Bazy danych używane są w bankach i większych przedsiębiorstwach do przechowywania informacji o kontach czy też danych personalnych. • Ze względu na rozwój komputeryzacji dość profesjonalne i niekoniecznie małe, bazy danych są obecne również u przeciętnego użytkownika komputera. Przechowywanie danych w bazach odbywa się w określony, logiczny sposób. Dzięki temu zaspokojony jest jeden z podstawowych celów tworzenia bazy danych, a mianowicie logiczny i szybki dostęp do danych.

  4. Modele systemów baz danych • W latach sześćdziesiątych i siedemdziesiątych XX wieku ujrzało światło dzienne wiele pomysłów na rozwiązanie problemu powtarzających się danych. W wyniku różnych eksperymentów powstało kilka modeli systemów baz danych. Większość z nich zrodziła się w firmie IBM. Jednak sam problem magazynowania danych i szybkiego do niego dostępu istniał już znacznie wcześniej, jednak rozwiązywany był przy pomocy bardzo prymitywnych pomysłów. Podstawowe modele systemów baz danych można podzielić następująco: • modele proste, gdzie dane są zorganizowane np. w postaci systemu plików. • modele klasyczne: hierarchiczny, sieciowy i relacyjny. Ten ostatni jest obecnie najbardziej popularną podstawą obecnych systemów baz danych. • modele semantyczne czyli znaczeniowe. Klasyczne modele danych nie dostarczają łatwego sposobu odczytania informacji o semantyce danych, stąd podejmuje się próby stworzenia innych modeli, uzupełniających ten brak. Przykładem częściowej realizacji tego programu są obiektowe modele danych.

  5. Model prosty • Model prosty odpowiada strukturze katalogów w systemie operacyjnym. Dlatego też, taki system plików można uważać za prostą bazę danych. • Poniższy przykład prezentuje płaską bazę danych, gdzie kluczem podziału jest znak średnika: • 1;Noc na ziemi;Jim Jarmush • 2;Psy;Władysław Pasikowski • 3;Ptaki;Alfred Hitchcock • 4;Siedem;David Fincher • 5;Człowiek z Żelaza;Andrzej Wajda • 6;Arizona Dream;Emir Kusturica • 7;Chata wuja Toma;Stan Lathan • 8;Pulp Fiction;Quentin Tarantino

  6. Płaskie bazy danych mają bardzo wiele wad: • Jeśli separatorem pól danych są znaki specjalne, to oznacza to, że w zawartości pól nie może wystąpić taka sekwencja znaków, która normalnie rozdziela pola rekordów. Wybrnąć z tego można tylko w jeden sposób: należy zdefiniować naprawdę unikalny ciąg znaków, który rozdziela pola rekordów. Jednak taka definicja w dalszej perspektywie jest mało prawdopodobna, gdyż i tak może się zdarzyć, że w przyszłości ktoś wprowadzi do takiej bazy dane, które normalnie dzielą dane na pola.

  7. Wady baz płaskich • Jeśli kluczem do podziału pól danych jest ściśle zdefiniowana długość pól danych, to istnieje dość ograniczony zasięg do definicji danych, gdyż pole o ograniczonej długości może pomieścić tylko dane o ograniczonej długości. Takie ograniczenie może w przyszłości spowodować obcinanie danych do określonej w programie długości danych, w przypadku, kiedy do bazy zostaną wprowadzone dane o długości większej niż przewidziane wcześniej przy projektowaniu bazy danych. Jedynym rozwiązaniem jest tutaj zdefiniowanie wcześniej odpowiednio długiego pola, tak, aby w przyszłości nie było możliwe nigdy przekroczenie wymaganej długości. Jednak takie postępowanie powoduje, że dane, które normalnie zajmują bardzo niewiele miejsca (gdyż są to krótkie ciągi tekstowe) w takiej bazie danych, w której na zapas zdefiniowano dla danych więcej miejsca, mogą zajmować kilkakrotnie więcej miejsca niż by musiały zajmować ze względu na swoją długość.

  8. Wady baz płaskich • Dane w bazach płaskich mogą być wyłącznie ciągiem znaków. Co prawda dla niektórych języków programowania nie stwarza to żadnego problemu (patrz język Perl czy PHP), jednak dla jęzków niższego poziomu oznacza to częste wywoływanie funkcji konwertujących napisy do liczb, czy dat i odwrotnie

  9. Wady baz płaskich • Ponieważ dane są zapisywane w postaci tekstowej, zatem zajmują dość sporo miejsca. Nie ma tutaj żadnej kompresji ani szybkiego dostępu do danych już skompresowanych • Dane w bazach są zorganizowane sekwencyjnie. Oznacza to konieczność dostępu sekwencyjnego, czyli bardzo powolnego i zasobożernego. Każde nowe rekordy są natomiast dopisywane na koniec danych.

  10. Wady baz płaskich • Nie ma praktycznie żadnego ograniczeniadostępu do danych takiej bazy danych. Każda tablica jest po prostu jednym plikiem tekstowym. Ograniczać dostęp można więc tylko z poziomu systemu operacyjnego, co przy niektórych zabezpieczeniach systemów operacyjnych budzi poważne wątpliwości dotyczące bezpieczeństwa danych.

  11. Wady baz płaskich • Nie ma żadnego ograniczenia w kolejności dostępu do takiej bazy danych. Można sobie wyobrazić, że jeśli do takiej bazy danych dostęp miałaby więcej niż jedna osoba, wtedy istnieje duże prawdopodobieństwo niekonsystencji danych, gdyż podczas gdy jedna osoba chciałaby czytać pewne dane, inna może chcieć je w tym momencie usunąć. Jest to dość niebezpieczna sytuacja; nie ma określonych priorytetów i tzw. zamykania na jakiś czas dostępu do danych. • Nie ma zdefiniowanych relacji między danymi, zatem dane mogą się niepotrzebnie wielokrotnie powtarzać.

  12. Relacyjne Bazy Danych • Relacyjna baza danych jest to zbiór dwuwymiarowych tabel. Z modelem relacyjnym powiązane są następujące pojęcia: • tabela, • kolumna, • wiersz, • pole. • Model relacyjny opiera się na pojęciach zaczerpniętych z algebry. Pojęcia te to: • relacja, • operator działający na relacjach i dający w wyniku relacje. • Relacje przedstawiane są w postaci tabel, zaś wybieranie danych z tabel to wynik działania operatorów relacyjnych na tych tabelach.

  13. Tabela

  14. Tabela - książki

  15. Tabela - Autor

  16. Operatory relacyjne

  17. Własności relacyjnej bazy danych • Relacyjna baza danych ma następujące własności: • baza jest widziana przez użytkownika jako zbiór tabel, • nazwy tabel w bazie muszą być unikalne, • tabele składają się wierszy i kolumn, • językiem służącym do operowania na bazie danych jest język nieproceduralny oparty na algebrze relacji. Obecnie standardem jest SQL lub jego modyfikacje Np. MySQL.

  18. Własności tabel w relacyjnej bazie danych • wiersze w tabeli muszą być różne, • w tabeli nie ma kolumn o tej samej nazwie, • kolejność wierszy jest nieokreślona, • kolejność kolumn jest nieokreślona, • wartości pól powinny być elementarne np., pole Adres: 35-111 Rzeszów, ul Asnyka 23 powinno być rozbite na trzy pola: • KOD, • UL, • NR_DOMU

  19. SQL • SQL – Structured Query Language • Język komunikacji użytkownika z oprogramowaniem zarządzającym relacyjnymi bazami danych • Ujęty w normie ANSI/ISO w roku 1986 • Aktualizacje: SQL-89, SQL-92

  20. SQL • SQL jest oparty na wyrażeniach języka angielskiego. Jest językiem deklaratywnym —podajemy tylko, co należy wykonać, ale nie specyfikujemy w jaki sposób. • Język SQL służy do następujących celów: • specyfikowania zapytań, • operowania danymi — wstawiania, modyfikowania i usuwania danych z bazy danych, • definiowania danych — dodawania do bazy nowych obiektów, (tabele, kolumny) • sterowania danymi — określania praw dostępu do danych.

  21. SQL • Zapisywanie poleceń SQL • Polecenia SQL mogą być rozmieszczone w kilku liniach. Koniec polecenia SQL zaznacza się średnikiem. • Zaleca się umieszczanie klauzul (nowe polecenie) od nowej linii. • Można używać tabulacji (w celu poprawienia czytelności zapisu). • Nie wolno dzielić słowa pomiędzy linie. • Obojętne, czy używamy małych czy wielkich liter, chyba że sprawdzamy zawartość bazy danych (operatory porównania)

  22. SQL - odmiany • Język SQL danej bazy, np. mySQL, zawiera: • polecenia SQL ujęte w standardzie • rozszerzenia standardu – polecenia specyficzne dla konkretnego systemu baz danych

  23. Rodzaje poleceń SQL • Polecenia SQL dotyczą: • tworzenia i usuwania baz danych, tabel, kluczy • wprowadzania, uaktualniania i usuwania danych • wyszukiwania danych • ustawiania praw dostępu do danych • administracji bazą danych • zarządzania transakcjami

  24. Instalowanie bazy danych • Najwygodniej zainstalować jeden z dostępnych pakietów zawierających • Serwer www np. Apache • Język skryptowy PHP • Bazę danych Mysql • Kryterium to spełnia np. pakiet „wampserver”

  25. Wprowadzanie komend SQL • Sposób wprowadzania do bazy poleceń SQL: • w programie działającym z linii poleceń(np. MySQL monitor) • w programie z graficznym interfejsem użytkownika (np. MySQL Navigator) • w skryptach i programach komunikujących się z bazą danych (np. skrypty PHP - np. phpmyadmin) • pośrednio, przy użyciu graficznego interfejsu użytkownika (np. Access)

  26. Tworzenie bazy danych – MySQL • Sposób utworzenia bazy danych w MySQL: • uruchomienie programu: mysql • utworzenie bazy:CREATE DATABASE nazwa; • przełączenie się do bazy:USE nazwa; • teraz można utworzyć tabele – utworzenie tabeli wymaga podania nazw pól (kolumn) oraz ich typów.

  27. Najważniejsze polecenia SQL Zestaw najważniejszych poleceń SQL to • CREATE - utwórz • SELECT – wybierz dane wg kryteriów • INSERT – wstaw dane • DELETE – usuń dane • UPDATE – uaktualnij dane

  28. SQL – liczby i napisy • Łańcuchy znaków (string): 'napis' lub "napis" • użycie backslasha (\): 'napis \'03' • Liczby całkowite: 1221; 0; -32 • Liczby zmiennoprzecinkowe: 294.42; -32032.6809e+10 • Liczby szesnastkowe: np. 1000 = 3E8 • Wartość pusta:NULL Każda liczba jest mnożnikiem kolejnej potęgi liczby stanowiącej podstawę systemu, np. 1000, w hex przybiera postać 3E8, gdyż: 3×162 + 14×161 + 8×160 = 768 + 224 + 8 = 1000.

  29. Typy danych • Typy danych MySQL – liczby całkowite: • TINYINT (1 bajt) (liczby od -128 .. 127 lub 0..256 „unsigned”) • SMALLINT (2 bajty) (liczby od -32768 .. 32767) • MEDIUMINT (3 bajty) (-8388608 .. 8388607) • INT (4 bajty) (-2147483648 .. 2147483647) • BIGINT (8 bajtów) (-9223372036854775808 .. 9223372036854775807) • Dodatkowe atrybuty: • UNSIGNED – liczba bez znaku • ZEROFILL – dopełnienie zerami • (M) – wyświetlenie M cyfr

  30. Typy danych • Typy danych MySQL – liczby zmiennoprzecinkowe: • FLOAT (n) – pojedyncza precyzja, n liczb • DOUBLE (M,D) – podwójna precyzja • DECIMAL (M,D) – liczba zapisywana jako tekst • Dodatkowe atrybuty: • UNSIGNED – liczba bez znaku • ZEROFILL – dopełnienie zerami • (M) – wyświetlenie M cyfr • (M,D) – wyświetlenie M cyfr, D cyfr po przecinku

  31. Typy danych • Typy danych MySQL – data i czas: • DATETIME – data + czas (2003-10-15 15:00:12) • DATE – data (2003-10-15) • TIME – czas (15:00:12) • YEAR – rok (2003 lub 03) • TIMESTAMP (n) – znacznik czasu (n – liczba znaków); data wstawiana do bazy danych w momencie wykonywania jakiejś operacji

  32. Typy danych • Typy danych MySQL – łańcuchy tekstowe: • CHAR (n) – stała długość n (max. 255) • VARCHAR (n) – zmienna długość, max. n (do 255) • TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT– dane tekstowe ASCII • Inne typy danych: • TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB– dane binarne • ENUM – typ wyliczeniowy (tylko jedna z wartości dopuszczonych) • SET – zbiór wartości (w kolumnie może znajdować się podzbiór wartości dopuszczonych tzn. kilka wartości.)

  33. Tworzenie tabel • Utworzenie tabeli wymaga podania nazw pól (kolumn) oraz ich typów. CREATE TABLE albumy2 ( id INT NOT NULL, wykonawca VARCHAR(30), tytuł VARCHAR(30), rok YEAR, liczba_utw SMALLINT, opis TEXT);

  34. Wstawianie danych do tabeli • Wstawianie danych z podaniem wszystkich kolumn tabeli (należy zachować kolejność!) • Wstawianie danych do wybranych kolumn tabeli INSERT INTO albumy VALUES (1, ‘Pink Floyd’, ‘The Division Bell’, 1994, 11, ‘Ostatni studyjny album’); • INSERT INTO albumy (id, album, wykonawca)VALUES (2, ‘The Wall’, ‘Pink Floyd’);

  35. Wyszukiwanie danych • Wyszukiwanie danych w tabeli – instrukcja SELECT • Ogólna postać instrukcji SELECT: • SELECT które_kolumny • FROM z_której_tabeli • WHERE które_rekordy; • Wyrażenie logiczne po instrukcji WHERE zawiera kryteria, które musi spełnić rekord, aby znaleźć się w wynikach wyszukiwania.

  36. Wyszukiwanie danych • Najprostsza postać instrukcji SELECT • Wyszukiwanie: • w tabeli albumy • wszystkich pól (kolumn) – „*” • wszystkich rekordów (wierszy) – brak warunku WHERE SELECT * FROM albumy;

  37. Wyszukiwanie – wybór kolumn • Wyszukiwanie danych – wyświetlenie wybranych kolumn • W ten sposób można uzyskać powtarzające się wyniki: • Eliminacja powtórzeń wyników: SELECT rok, tytuł, wykonawca FROM albumy; SELECT wykonawca FROM albumy; SELECT DISTINCT wykonawca FROM albumy;

  38. Wyszukiwanie – wybór wierszy • Wyszukiwanie rekordów spełniających zadany warunek - instrukcja WHERE SELECT tytuł FROM albumyWHERE wykonawca = 'Pink Floyd'; SELECT wykonawca, rok FROM albumyWHERE tytuł = 'The Best Of' AND rok < 1970;

  39. Operatory • Operatory używane w instrukcji SELECT ... WHERE: • porównania: = < > <= >= • logiczne: NOT ! AND && OR || XOR • != oznacza różny – nie równy • IS NULL, IS NOT NULL • exprBETWEENminANDmax (NOT BETWEEN) • exprIN (lista) (NOT IN) (Np. IN(‘Warszawa’, ‘Lublin’) SELECT * FROM albumyWHERE wykonawca IN ('Pink Floyd', ‘Dire Straits')AND (rok < 1975 OR rok BETWEEN 1979 AND 1983);

  40. Symbole wieloznaczne • Symbole wieloznaczne używane w instrukcji WHERE: • % zastępuje dowolny ciąg znaków • _ zastępuje jeden znak • Operator symboli wieloznacznych: LIKE, NOT LIKE • Wyrażenia regularne – operator REGEXP (MySQL) SELECT * FROM albumyWHERE wykonawca LIKE 'The %s'; SELECT * FROM albumyWHERE album NOT LIKE 'The Best in 197_';

  41. Sortowanie wyników • Sortowanie wyników wg zadanej kolumny: • ORDER BYpole – w porządku rosnącym • ORDER BYpoleASC – jw. • ORDER BYpoleDESC – w porządku malejącym SELECT * FROM albumyORDER BY rok DESC, wykonawca;

  42. Grupowanie wyników • Tworzenie zestawień przez grupowanie wyników: • użycie funkcji, np. COUNT, SUM, MAX, MIN, AVG • nazwanie kolumny z wynikami (opcjonalnie) – AS • zgrupowanie wyników – GROUP BY • Przykład – obliczenie ilości albumów wszystkich wykonawców: SELECT wykonawca, COUNT(*) FROM albumyGROUP BY wykonawca; SELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawca ORDER BY ilosc DESC;

  43. Grupowanie wyników • Ograniczenie rekordów uzyskanych w wyniku grupowania - operator HAVING • Przykład – obliczenie ilości albumów wszystkich wykonawców, wyświetlenie tylko tych, którzy mają więcej niż 5 albumów: SELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawcaHAVING ilosc > 5;

  44. Ograniczenie liczby wyników • Ograniczenie liczby zwracanych wyników – LIMIT • LIMIT n – n pierwszych wyników • LIMIT m,n – n wyników, pomijając m pierwszych • Przykład: 10 wykonawców o największej liczbie albumów: • 20 następnych wyników (11-30): SELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawca LIMIT 10; SELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawca LIMIT 10,20;

  45. Wyszukiwanie w wielu tabelach • Pobieranie danych z więcej niż jednej tabeli • Przykład bazy danych – dwie tabele: • albumy • utwory • Wybranie wszystkich możliwych kombinacji rekordów z obu tabel (iloczyn kartezjański): SELECT * FROM albumy, utwory;

  46. Wyszukiwanie w wielu tabelach • Uwzględnienie relacji między tabelami: • Łączy ze sobą rekordy obu tabel mające takie same dane w polach, które są połączone relacją: • albumy • utwory SELECT * FROM albumy, utworyWHERE albumy.IDA = utwory.IDA;

  47. Wyszukiwanie w wielu tabelach • Wybór kolumn: • Aliasy nazw tabel: SELECT albumy.wykonawca, albumy.album, utwory.utwor, utwory.czas FROM albumy, utworyWHERE albumy.IDA = utwory.IDA; SELECT a.wykonawca, a.album, u.utwor, u.czas FROM albumy a, utwory uWHERE a.IDA = u.IDA;

  48. Wstawianie danych – inne metody • Wstawianie do tabeli danych uzyskanych w wyniku zapytania: • Wstawianie danych z pliku na komputerze klienta (pola rozdzielone tabulatorami, rekordy – znakiem nowej linii) - komenda mySQL (nie standard): INSERT INTO nowa (autor, dzielo)SELECT DISTINCT wykonawca, albumFROM albumy; LOAD DATA LOCAL INFILE ‘dane.txt’INTO nowa_tabela;

  49. Usuwanie rekordów • Usunięcie rekordów spełniających zadane kryteria– instrukcja DELETE. Warunki takie same jak w SELECT. • Usuwane są zawsze całe rekordy. • Przykład: • UWAGA! Te komendy czyszczą całą tabelę: DELETE FROM albumyWHERE wykonawca = 'Pink Floyd'; DELETE FROM albumy; TRUNCATE TABLE albumy;

  50. Uaktualnianie rekordów • Zmiana danych rekordów już istniejących w tabeli – komenda UPDATE. • Nowe wartości określane są komendą SET. • Przykład: • Ta komenda uaktualni WSZYSTKIE rekordy: UPDATE albumySET wykonawca = 'Pink Floyd' WHERE wykonawca = 'Fink Ployd'; UPDATE albumy SET wykonawca = 'Pink Floyd';

More Related