Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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.

Podobne prezentacje


Prezentacja na temat: "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."— Zapis prezentacji:

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: 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 dBase FilePro (tylko do odczytu) FilePro (tylko do odczytu) Informix Informix InterBase InterBase FrontBase FrontBase mSQL mSQL Direct MS-SQL Direct MS-SQL MySQL MySQL ODBC ODBC PostgreSQL PostgreSQL

3 Co to są bazy danych? Baza danych to po prostu logicznie poukładane dane. Baza danych to po prostu logicznie poukładane dane. Bazą danych jest na przykład Bazą danych jest na przykład System plików na komputerze. System plików na komputerze. książka adresowa w programie pocztowym. 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. 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. 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: 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 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 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. 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. 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: Poniższy przykład prezentuje płaską bazę danych, gdzie kluczem podziału jest znak średnika: 1;Noc na ziemi;Jim Jarmush 1;Noc na ziemi;Jim Jarmush 2;Psy;Władysław Pasikowski 2;Psy;Władysław Pasikowski 3;Ptaki;Alfred Hitchcock 3;Ptaki;Alfred Hitchcock 4;Siedem;David Fincher 4;Siedem;David Fincher 5;Człowiek z Żelaza;Andrzej Wajda 5;Człowiek z Żelaza;Andrzej Wajda 6;Arizona Dream;Emir Kusturica 6;Arizona Dream;Emir Kusturica 7;Chata wuja Toma;Stan Lathan 7;Chata wuja Toma;Stan Lathan 8;Pulp Fiction;Quentin Tarantino 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. 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ść. 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 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 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. 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 ograniczenia dostę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. Nie ma praktycznie żadnego ograniczenia dostę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 ż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ć. 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: Relacyjna baza danych jest to zbiór dwuwymiarowych tabel. Z modelem relacyjnym powiązane są następujące pojęcia: tabela, tabela, kolumna, kolumna, wiersz, wiersz, pole. pole. Model relacyjny opiera się na pojęciach zaczerpniętych z algebry. Pojęcia te to: Model relacyjny opiera się na pojęciach zaczerpniętych z algebry. Pojęcia te to: relacja, relacja, operator działający na relacjach i dający w wyniku relacje. 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. Relacje przedstawiane są w postaci tabel, zaś wybieranie danych z tabel to wynik działania operatorów relacyjnych na tych tabelach.

13 Tabela ID_KAutor_nAutor_iTytułISBNOpis_AStan 1MickiewiczAdam Pan Tadeusz Jeden z….. W 2SienkiewiczHenryk Ogniem i Mieczem …..W 3SienkiewiczHenrykKrzyżacy124512…….N

14 Tabela - książki ID_KID_ATytułISBNOpis_KStan 11 Pan Tadeusz ……..W 22 Ogniem i Mieczem ………W 32Krzyżacy124512…….N 4 5

15 Tabela - Autor ID_AAutor_IAutor_NOpis_A 1AdamMickiewicz…….. 2HenrykSienkiewicz……… 3 4 5

16 Operatory relacyjne SELEKCJApobieranie danych z relacji, w wyniku otrzymujemy wszystkie wiersze, które spełniają zadany warunek PROJEKCJAoperacja pobrania wszystkich wierszy, ale tylko wskazanych kolumn z tych wierszy ILOCZYN KARTEZJAŃSKI wynik połączenia każdy z każdym wierszy z dwóch relacji ZŁĄCZENIEpołączenie dwóch relacji poprzez pewne kryterium łączące niektóre wiersze z obu relacji SUMA ZBIOROWAwszystkie wiersze z obu relacji CZĘŚĆ WSPÓLNAwiersze wspólne dla obu relacji RÓŻNICA ZBIOROWAwiersze, które występują w jednej, a nie występują w drugiej relacji

17 Własności relacyjnej bazy danych Relacyjna baza danych ma następujące własności: Relacyjna baza danych ma następujące własności: baza jest widziana przez użytkownika jako zbiór tabel, baza jest widziana przez użytkownika jako zbiór tabel, nazwy tabel w bazie muszą być unikalne, nazwy tabel w bazie muszą być unikalne, tabele składają się wierszy i kolumn, 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. 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, wiersze w tabeli muszą być różne, w tabeli nie ma kolumn o tej samej nazwie, w tabeli nie ma kolumn o tej samej nazwie, kolejność wierszy jest nieokreślona, kolejność wierszy jest nieokreślona, kolejność kolumn jest nieokreślona, kolejność kolumn jest nieokreślona, wartości pól powinny być elementarne np., pole Adres: Rzeszów, ul Asnyka 23 powinno być rozbite na trzy pola: wartości pól powinny być elementarne np., pole Adres: Rzeszów, ul Asnyka 23 powinno być rozbite na trzy pola: KOD, KOD, UL, UL, NR_DOMU NR_DOMU

19 SQL SQL – Structured Query Language SQL – Structured Query Language Język komunikacji użytkownika z oprogramowaniem zarządzającym relacyjnymi bazami danych Język komunikacji użytkownika z oprogramowaniem zarządzającym relacyjnymi bazami danych Ujęty w normie ANSI/ISO w roku 1986 Ujęty w normie ANSI/ISO w roku 1986 Aktualizacje: SQL-89, SQL-92 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. 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: Język SQL służy do następujących celów: specyfikowania zapytań, specyfikowania zapytań, operowania danymi wstawiania, modyfikowania i usuwania danych z bazy danych, operowania danymi wstawiania, modyfikowania i usuwania danych z bazy danych, definiowania danych dodawania do bazy nowych obiektów, (tabele, kolumny) definiowania danych dodawania do bazy nowych obiektów, (tabele, kolumny) sterowania danymi określania praw dostępu do danych. sterowania danymi określania praw dostępu do danych.

21 SQL Zapisywanie poleceń SQL Zapisywanie poleceń SQL Polecenia SQL mogą być rozmieszczone w kilku liniach. Koniec polecenia SQL zaznacza się średnikiem. Polecenia SQL mogą być rozmieszczone w kilku liniach. Koniec polecenia SQL zaznacza się średnikiem. Zaleca się umieszczanie klauzul (nowe polecenie) od nowej linii. Zaleca się umieszczanie klauzul (nowe polecenie) od nowej linii. Można używać tabulacji (w celu poprawienia czytelności zapisu). Można używać tabulacji (w celu poprawienia czytelności zapisu). Nie wolno dzielić słowa pomiędzy linie. 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) 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: Język SQL danej bazy, np. mySQL, zawiera: polecenia SQL ujęte w standardzie polecenia SQL ujęte w standardzie rozszerzenia standardu – polecenia specyficzne dla konkretnego systemu baz danych rozszerzenia standardu – polecenia specyficzne dla konkretnego systemu baz danych

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

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

25 Wprowadzanie komend SQL Sposób wprowadzania do bazy poleceń SQL: Sposób wprowadzania do bazy poleceń SQL: w programie działającym z linii poleceń (np. MySQL monitor) w programie działającym z linii poleceń (np. MySQL monitor) w programie z graficznym interfejsem użytkownika (np. MySQL Navigator) 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) 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) pośrednio, przy użyciu graficznego interfejsu użytkownika (np. Access)

26 Tworzenie bazy danych – MySQL Sposób utworzenia bazy danych w MySQL: Sposób utworzenia bazy danych w MySQL: uruchomienie programu: mysql uruchomienie programu: mysql utworzenie bazy: CREATE DATABASE nazwa; utworzenie bazy: CREATE DATABASE nazwa; przełączenie się do bazy: USE 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. 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 CREATE - utwórz SELECT – wybierz dane wg kryteriów SELECT – wybierz dane wg kryteriów INSERT – wstaw dane INSERT – wstaw dane DELETE – usuń dane DELETE – usuń dane UPDATE – uaktualnij dane UPDATE – uaktualnij dane

28 SQL – liczby i napisy Łańcuchy znaków (string): 'napis' lub "napis" Łańcuchy znaków (string): 'napis' lub "napis" użycie backslasha (\): 'napis \'03' użycie backslasha (\): 'napis \'03' Liczby całkowite: 1221; 0; -32 Liczby całkowite: 1221; 0; -32 Liczby zmiennoprzecinkowe: ; e+10 Liczby zmiennoprzecinkowe: ; e+10 Liczby szesnastkowe: np = 3E8 Liczby szesnastkowe: np = 3E8 Wartość pusta: NULL 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× × ×16 0 = = 1000.

29 Typy danych Typy danych MySQL – liczby całkowite: Typy danych MySQL – liczby całkowite: TINYINT (1 bajt) (liczby od lub unsigned) TINYINT (1 bajt) (liczby od lub unsigned) SMALLINT (2 bajty) (liczby od ) SMALLINT (2 bajty) (liczby od ) MEDIUMINT (3 bajty) ( ) MEDIUMINT (3 bajty) ( ) INT (4 bajty) ( ) INT (4 bajty) ( ) BIGINT (8 bajtów) ( ) BIGINT (8 bajtów) ( ) Dodatkowe atrybuty: Dodatkowe atrybuty: UNSIGNED – liczba bez znaku UNSIGNED – liczba bez znaku ZEROFILL – dopełnienie zerami ZEROFILL – dopełnienie zerami (M) – wyświetlenie M cyfr (M) – wyświetlenie M cyfr

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

31 Typy danych Typy danych MySQL – data i czas: Typy danych MySQL – data i czas: DATETIME – data + czas ( :00:12) DATETIME – data + czas ( :00:12) DATE – data ( ) DATE – data ( ) TIME – czas (15:00:12) TIME – czas (15:00:12) YEAR – rok (2003 lub 03) YEAR – rok (2003 lub 03) TIMESTAMP (n) – znacznik czasu (n – liczba znaków); data wstawiana do bazy danych w momencie wykonywania jakiejś operacji 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: Typy danych MySQL – łańcuchy tekstowe: CHAR (n) – stała długość n (max. 255) CHAR (n) – stała długość n (max. 255) VARCHAR (n) – zmienna długość, max. n (do 255) VARCHAR (n) – zmienna długość, max. n (do 255) TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT – dane tekstowe ASCII TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT – dane tekstowe ASCII Inne typy danych: Inne typy danych: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB – dane binarne TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB – dane binarne ENUM – typ wyliczeniowy (tylko jedna z wartości dopuszczonych) 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.) 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. Utworzenie tabeli wymaga podania nazw pól (kolumn) oraz ich typów. CREATE TABLE albumy2 ( idINT NOT NULL, wykonawcaVARCHAR(30), tytułVARCHAR(30), rokYEAR, liczba_utwSMALLINT, opisTEXT );

34 Wstawianie danych do tabeli Wstawianie danych z podaniem wszystkich kolumn tabeli (należy zachować kolejność!) Wstawianie danych z podaniem wszystkich kolumn tabeli (należy zachować kolejność!) Wstawianie danych do wybranych kolumn tabeli 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); INSERT INTO albumy (id, album, wykonawca) VALUES (2, The Wall, Pink Floyd);

35 Wyszukiwanie danych Wyszukiwanie danych w tabeli – instrukcja SELECT Wyszukiwanie danych w tabeli – instrukcja SELECT Ogólna postać instrukcji SELECT: Ogólna postać instrukcji SELECT: SELECT które_kolumny SELECT które_kolumny FROM z_której_tabeli FROM z_której_tabeli WHERE które_rekordy; WHERE które_rekordy; Wyrażenie logiczne po instrukcji WHERE zawiera kryteria, które musi spełnić rekord, aby znaleźć się w wynikach wyszukiwania. 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 Najprostsza postać instrukcji SELECT Wyszukiwanie: Wyszukiwanie: w tabeli albumy w tabeli albumy wszystkich pól (kolumn) – * wszystkich pól (kolumn) – * wszystkich rekordów (wierszy) – brak warunku WHERE wszystkich rekordów (wierszy) – brak warunku WHERE SELECT * FROM albumy;

37 Wyszukiwanie – wybór kolumn Wyszukiwanie danych – wyświetlenie wybranych kolumn Wyszukiwanie danych – wyświetlenie wybranych kolumn W ten sposób można uzyskać powtarzające się wyniki: W ten sposób można uzyskać powtarzające się wyniki: Eliminacja powtórzeń wyników: 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 Wyszukiwanie rekordów spełniających zadany warunek - instrukcja WHERE SELECT tytuł FROM albumy WHERE wykonawca = 'Pink Floyd'; SELECT wykonawca, rok FROM albumy WHERE tytuł = 'The Best Of' AND rok < 1970;

39 Operatory Operatory używane w instrukcji SELECT... WHERE: Operatory używane w instrukcji SELECT... WHERE: porównania: = = porównania: = = logiczne: NOT ! AND && OR || XOR logiczne: NOT ! AND && OR || XOR != oznacza różny – nie równy != oznacza różny – nie równy IS NULL, IS NOT NULL IS NULL, IS NOT NULL expr BETWEEN min AND max (NOT BETWEEN) expr BETWEEN min AND max (NOT BETWEEN) expr IN (lista) (NOT IN) (Np. IN(Warszawa, Lublin) expr IN (lista) (NOT IN) (Np. IN(Warszawa, Lublin) SELECT * FROM albumy WHERE 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: Symbole wieloznaczne używane w instrukcji WHERE: %zastępuje dowolny ciąg znaków %zastępuje dowolny ciąg znaków _zastępuje jeden znak _zastępuje jeden znak Operator symboli wieloznacznych: LIKE, NOT LIKE Operator symboli wieloznacznych: LIKE, NOT LIKE Wyrażenia regularne – operator REGEXP (MySQL) Wyrażenia regularne – operator REGEXP (MySQL) SELECT * FROM albumy WHERE wykonawca LIKE 'The %s'; SELECT * FROM albumy WHERE album NOT LIKE 'The Best in 197_';

41 Sortowanie wyników Sortowanie wyników wg zadanej kolumny: Sortowanie wyników wg zadanej kolumny: ORDER BY pole – w porządku rosnącym ORDER BY pole – w porządku rosnącym ORDER BY pole ASC – jw. ORDER BY pole ASC – jw. ORDER BY pole DESC – w porządku malejącym ORDER BY pole DESC – w porządku malejącym SELECT * FROM albumy ORDER BY rok DESC, wykonawca;

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

43 Grupowanie wyników Ograniczenie rekordów uzyskanych w wyniku grupowania - operator HAVING 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: 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 albumy GROUP BY wykonawca HAVING ilosc > 5;

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

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

46 Wyszukiwanie w wielu tabelach Uwzględnienie relacji między tabelami: 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ą: Łączy ze sobą rekordy obu tabel mające takie same dane w polach, które są połączone relacją: albumy albumy utwory utwory SELECT * FROM albumy, utwory WHERE albumy.IDA = utwory.IDA; IDAWykonawcaAlbumRokGatunek IDUUtwórCzasIDA

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

48 Wstawianie danych – inne metody Wstawianie do tabeli danych uzyskanych w wyniku zapytania: 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): 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, album FROM 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. Usunięcie rekordów spełniających zadane kryteria – instrukcja DELETE. Warunki takie same jak w SELECT. Usuwane są zawsze całe rekordy. Usuwane są zawsze całe rekordy. Przykład: Przykład: UWAGA! Te komendy czyszczą całą tabelę: UWAGA! Te komendy czyszczą całą tabelę: DELETE FROM albumy WHERE wykonawca = 'Pink Floyd'; DELETE FROM albumy; TRUNCATE TABLE albumy;

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

51 Operacje na bazach danych Tworzenie bazy danych: Tworzenie bazy danych: Usuwanie całej bazy: Usuwanie całej bazy: Wyświetlenie istniejących baz danych: Wyświetlenie istniejących baz danych: Przełączenie się na inną bazę danych: Przełączenie się na inną bazę danych: CREATE DATABASE baza; DROP DATABASE baza; SHOW DATABASES; USE baza;

52 Operacje na tabelach Tworzenie tabeli (przykład): Tworzenie tabeli (przykład): Usuwanie tabeli: Usuwanie tabeli: Wyświetlenie istniejących tabel w bazie danych: Wyświetlenie istniejących tabel w bazie danych: Wyświetlenie struktury tabeli: Wyświetlenie struktury tabeli: CREATE TABLE tabela (id INT, nazwa VARCHAR(30)); DROP TABLE tabela; SHOW TABLES; DESCRIBE tabela;

53 Operacje na tabelach Zmiana nazwy: Zmiana nazwy: Zmiana struktury tabeli – ALTER TABLE Zmiana struktury tabeli – ALTER TABLE Dodanie kolumny: Dodanie kolumny: Usuwanie kolumny: Usuwanie kolumny: RENAME TABLE tabela TO nowa_tabela; ALTER TABLE tabela ADD (opis TEXT); ALTER TABLE tabela DROP opis;

54 Operacje na tabelach Modyfikacja typu kolumny (ograniczenia typu!): Modyfikacja typu kolumny (ograniczenia typu!): Zmiana nazwy kolumny: Zmiana nazwy kolumny: Za pomocą ALTER TABLE możliwe jest również dodawanie i usuwanie atrybutów pól. Za pomocą ALTER TABLE możliwe jest również dodawanie i usuwanie atrybutów pól. ALTER TABLE tabela MODIFY opis VARCHAR(50); ALTER TABLE tabela CHANGE opis info VARCHAR(50);

55 Atrybuty pól tabeli Przy tworzeniu lub zmianie tabeli można podać opcjonalne atrybuty pól (kolumn) tabeli: Przy tworzeniu lub zmianie tabeli można podać opcjonalne atrybuty pól (kolumn) tabeli: CREATE TABLE (pole typ atrybuty,...); CREATE TABLE (pole typ atrybuty,...); Dostępne atrybuty: Dostępne atrybuty: NULL – można nie podawać wartości (domyślnie) NULL – można nie podawać wartości (domyślnie) NOT NULL – wartość musi być podana NOT NULL – wartość musi być podana DEFAULT wartość – gdy nie podamy wartości DEFAULT wartość – gdy nie podamy wartości AUTO_INCREMENT – automatycznie zwiększany licznik AUTO_INCREMENT – automatycznie zwiększany licznik COMMENT 'opis' – komentarz COMMENT 'opis' – komentarz PRIMARY KEY, KEY – indeksy główne PRIMARY KEY, KEY – indeksy główne

56 AUTO_INCREMENT i DEFAULT AUTO_INCREMENT – nie wpisujemy danych, baza wpisuje aktualny stan licznika i zwiększa go o 1. AUTO_INCREMENT – nie wpisujemy danych, baza wpisuje aktualny stan licznika i zwiększa go o 1. DEFAULT – jeżeli nie wprowadzimy danych, zostanie wpisana wartość domyślna DEFAULT – jeżeli nie wprowadzimy danych, zostanie wpisana wartość domyślna Wynik: (1, 'XYZ', 'brak opisu') Wynik: (1, 'XYZ', 'brak opisu') CREATE TABLE wykonawcy { idINT NOT NULL AUTO_INCREMENT, wykonawcaVARCHAR(30), opisTEXT DEFAULT 'brak opisu' }; INSERT INTO wykonawcy (wykonawca) VALUES ('XYZ');

57 TIMESTAMP Wartością domyślną dla kolumny o typie TIMESTAMP jest aktualny znacznik czasu (data i czas). Wartością domyślną dla kolumny o typie TIMESTAMP jest aktualny znacznik czasu (data i czas). Kolumna tego typu umożliwia zachowanie czasu wprowadzenia lub ostatniej modyfikacji rekordu. Kolumna tego typu umożliwia zachowanie czasu wprowadzenia lub ostatniej modyfikacji rekordu. Jeżeli zostanie podana wartość – jest ona wpisywana. Jeżeli zostanie podana wartość – jest ona wpisywana. Jeżeli nie zostanie podana wartość (NULL) – wpisywany jest znacznik czasu. Jeżeli nie zostanie podana wartość (NULL) – wpisywany jest znacznik czasu.

58 Sprawdzanie poprawności danych NOT NULL – w tej kolumnie muszą być wpisane dane NOT NULL – w tej kolumnie muszą być wpisane dane CHECK (wyrażenie) – dane muszą spełniać podany warunek CHECK (wyrażenie) – dane muszą spełniać podany warunek My SQL nie obsługuje polecenia (CHECK). My SQL nie obsługuje polecenia (CHECK). CREATE TABLE dane { nazwiskoVARCHAR(30) NOT NULL, rok_urINT, CHECK(rok_ur BETWEEN 1900 AND 2040) };

59 Indeksowanie tabel Na wybrane kolumny tabeli mogą być nakładane indeksy (klucze) w celu: Na wybrane kolumny tabeli mogą być nakładane indeksy (klucze) w celu: przyspieszenia wyszukiwania przyspieszenia wyszukiwania zdefiniowania relacji pomiędzy tabelami zdefiniowania relacji pomiędzy tabelami Typy indeksów w MySQL: Typy indeksów w MySQL: KEY, INDEX KEY, INDEX UNIQUE UNIQUE PRIMARY KEY PRIMARY KEY FULLTEXT FULLTEXT

60 Tworzenie indeksów Tworzenie indeksu podczas definiowania tabeli – komenda INDEX lub KEY (obie są równoważne): Tworzenie indeksu podczas definiowania tabeli – komenda INDEX lub KEY (obie są równoważne): KEY nazwa (kolumny) KEY nazwa (kolumny) Indeks może obejmować wiele kolumn Indeks może obejmować wiele kolumn CREATE TABLE dane { nazwiskoVARCHAR(30) NOT NULL, rok_urINT, KEY indeks (nazwisko) };

61 Tworzenie indeksów Tworzenie indeksu w już istniejącej tabeli: Tworzenie indeksu w już istniejącej tabeli: Indeks wielokolumnowy, indeksowanych 10 pierwszych znaków pola nazwisko: Indeks wielokolumnowy, indeksowanych 10 pierwszych znaków pola nazwisko: Usunięcie indeksu (nie usuwa danych!): Usunięcie indeksu (nie usuwa danych!): CREATE INDEX indeks ON dane(nazwisko); CREATE INDEX indeks ON dane (nazwisko(10), rok_ur); DROP INDEX indeks ON dane;

62 Wartości niepowtarzalne UNIQUE – żadne dwa rekordy w tabeli nie mogą mieć jednakowych danych w indeksowanej kolumnie. Jest to jednocześnie INDEX. UNIQUE – żadne dwa rekordy w tabeli nie mogą mieć jednakowych danych w indeksowanej kolumnie. Jest to jednocześnie INDEX. Jeżeli indeksowana kolumna ma atrybut NOT NULL, dana kolumna musi zawierać dane unikatowe i pola nie mogą być puste. Jeżeli indeksowana kolumna ma atrybut NOT NULL, dana kolumna musi zawierać dane unikatowe i pola nie mogą być puste. Jeżeli indeksowana kolumna ma atrybut NULL, dane w kolumnie muszą być unikatowe, ale mogą nie być wprowadzane (pole może pozostać puste). Jeżeli indeksowana kolumna ma atrybut NULL, dane w kolumnie muszą być unikatowe, ale mogą nie być wprowadzane (pole może pozostać puste).

63 Tworzenie indeksu UNIQUE Tworzenie indeksu podczas definiowania tabeli: Tworzenie indeksu podczas definiowania tabeli: Tworzenie indeksu w istniejącej tabeli: Tworzenie indeksu w istniejącej tabeli: CREATE TABLE dane { nazwiskoVARCHAR(30) NOT NULL, peselCHAR(11), UNIQUE indeks (pesel) }; CREATE UNIQUE INDEX indeks ON dane (pesel);

64 Indeks główny Indeks główny – PRIMARY KEY Indeks główny – PRIMARY KEY identyfikuje jednoznacznie każdy rekord w tabeli identyfikuje jednoznacznie każdy rekord w tabeli może istnieć tylko jeden w tabeli może istnieć tylko jeden w tabeli jest typu UNIQUE jest typu UNIQUE indeksowana kolumna otrzymuje automatycznie atrybut NOT NULL indeksowana kolumna otrzymuje automatycznie atrybut NOT NULL ma nazwę PRIMARY (nie można podać własnej) ma nazwę PRIMARY (nie można podać własnej) bierze domyślnie udział w relacjach z innymi tabelami bierze domyślnie udział w relacjach z innymi tabelami

65 Tworzenie indeksu głównego Tworzenie indeksu głównego podczas definiowania tabeli – w definicji kolumny: Tworzenie indeksu głównego podczas definiowania tabeli – w definicji kolumny: To samo w definicji tabel To samo w definicji tabel CREATE TABLE dane { nazwiskoVARCHAR(30) NOT NULL, peselCHAR(11) PRIMARY KEY, }; CREATE TABLE dane { nazwiskoVARCHAR(30) NOT NULL, peselCHAR(11), PRIMARY KEY (pesel) };

66 Tworzenie indeksu głównego Tworzenie indeksu głównego w już istniejącej tabeli: Tworzenie indeksu głównego w już istniejącej tabeli: Usuwanie indeksu głównego w tabeli (nie usuwa danych!): Usuwanie indeksu głównego w tabeli (nie usuwa danych!): ALTER TABLE dane ADD PRIMARY KEY (pesel); ALTER TABLE dane DROP PRIMARY KEY;

67 Wyszukiwanie w całym tekście MySQL posiada specjalny typ klucza FULLTEXT, umożliwiający wyszukiwanie informacji w polach tekstowych. Indeks ten nie wchodzi w skład standardu SQL. MySQL posiada specjalny typ klucza FULLTEXT, umożliwiający wyszukiwanie informacji w polach tekstowych. Indeks ten nie wchodzi w skład standardu SQL. Tworzenie indeksu FULLTEXT: Tworzenie indeksu FULLTEXT: CREATE TABLE albumy { tytulVARCHAR(30) PRIMARY KEY, wykonawcaVARCHAR(30), recenzjaTEXT, FULLTEXT indeks (tytul, recenzja) }; ALTER TABLE albumy ADD FULLTEXT ind (recenzja);

68 Wyszukiwanie w całym tekście Wyszukiwanie dosłowne: MATCH (kolumny) AGAINST (napis) Wyszukiwanie dosłowne: MATCH (kolumny) AGAINST (napis) Dla każdego zwróconego rekordu baza oblicza wskaźnik podobieństwa (score) – im większa liczba, tym lepsze dopasowanie szukanego ciągu. Dla każdego zwróconego rekordu baza oblicza wskaźnik podobieństwa (score) – im większa liczba, tym lepsze dopasowanie szukanego ciągu. Znalezione rekordy są sortowane w kolejności od najwyższego wyniku. Znalezione rekordy są sortowane w kolejności od najwyższego wyniku. SELECT * FROM albumy WHERE MATCH (tytul, recenzja) AGAINST ('best of');

69 Wyszukiwanie w całym tekście Wyświetlenie kolumny z wynikiem dopasowania wymaga dwukrotnego użycia tej samej komendy MATCH: Wyświetlenie kolumny z wynikiem dopasowania wymaga dwukrotnego użycia tej samej komendy MATCH: SELECT tytul, recenzja, MATCH (tytul, recenzja) AGAINST ('best of') AS score FROM albumy WHERE MATCH (tytul, recenzja) AGAINST ('best of');

70 Wyszukiwanie w trybie logicznym Wyszukiwanie w trybie logicznym – operator IN BOOLEAN MODE Wyszukiwanie w trybie logicznym – operator IN BOOLEAN MODE Operatory wyszukiwania: Operatory wyszukiwania: +słowo – słowo musi wystąpić +słowo – słowo musi wystąpić –słowo – słowo nie może wystąpić –słowo – słowo nie może wystąpić kilka słów" – musi wystąpić podana fraza kilka słów" – musi wystąpić podana fraza wyr* – słowo zaczynające się od podanych liter wyr* – słowo zaczynające się od podanych liter () – grupowanie operatorów () – grupowanie operatorów ~ – zaprzeczenie ~ – zaprzeczenie

71 Wyszukiwanie w trybie logicznym Przykłady: Przykłady: rock jazzsłowa rock LUB jazz rock jazzsłowa rock LUB jazz +rock +jazzsłowa rock ORAZ jazz +rock +jazzsłowa rock ORAZ jazz +rock jazzsłowo rock musi wystąpić, słowo jazz zwiększa score +rock jazzsłowo rock musi wystąpić, słowo jazz zwiększa score +rock -jazzsłowo rock musi wystąpić, słowo jazz nie może wystąpić +rock -jazzsłowo rock musi wystąpić, słowo jazz nie może wystąpić "rock music"musi wystąpić fraza rock music "rock music"musi wystąpić fraza rock music rock*pasują m.in. rock, rocks, rocking rock*pasują m.in. rock, rocks, rocking

72 Wyszukiwanie w trybie logicznym Przykład wyszukiwania w trybie logicznym: Przykład wyszukiwania w trybie logicznym: Algorytm wyszukiwania pomija słowa: Algorytm wyszukiwania pomija słowa: złożone z mniej niż 4 liter złożone z mniej niż 4 liter znajdujące się na liście "stopwords" (pospolite) znajdujące się na liście "stopwords" (pospolite) występujące w więcej niż połowie rekordów tabeli występujące w więcej niż połowie rekordów tabeli SELECT * FROM albumy WHERE MATCH (tytul, recenzja) AGAINST ('+rock +"debut album" -awful' IN BOOLEAN MODE); SELECT * FROM albumy WHERE MATCH (tytul, recenzja) AGAINST ('+rock +"debut album" -awful' IN BOOLEAN MODE);

73 Wyszukiwanie w całym tekście Indeksy FULLTEXT znacznie zwiększają możliwości wyszukiwania danych w bazie. Indeksy FULLTEXT znacznie zwiększają możliwości wyszukiwania danych w bazie. Jednocześnie spowalniają one jednak operacje na rekordach (wstawianie, zmiana) – konieczność uaktualniania indeksu. Jednocześnie spowalniają one jednak operacje na rekordach (wstawianie, zmiana) – konieczność uaktualniania indeksu. Wyszukiwanie w całym tekście w bazie MySQL jest w trakcie opracowywania i optymalizacji. Operatory logiczne działają od wersji Wyszukiwanie w całym tekście w bazie MySQL jest w trakcie opracowywania i optymalizacji. Operatory logiczne działają od wersji

74 Funkcje SQL Język SQL udostępnia szereg funkcji umożliwiających wykonywanie operacji na danych w zapytaniach. Język SQL udostępnia szereg funkcji umożliwiających wykonywanie operacji na danych w zapytaniach. Funkcje: Funkcje: matematyczne matematyczne tekstowe tekstowe daty i czasu daty i czasu Funkcje te mogą być wykorzystywane w instrukcji SELECT, w warunku wyboru kolumn lub w warunku wyboru wierszy. Funkcje te mogą być wykorzystywane w instrukcji SELECT, w warunku wyboru kolumn lub w warunku wyboru wierszy.

75 Funkcje SQL Przykład stosowania funkcji w instrukcji SELECT Przykład stosowania funkcji w instrukcji SELECT Funkcja UPPER() zamienia litery na wielkie. Funkcja UPPER() zamienia litery na wielkie. Użycie w warunku wyboru kolumn – zamienia litery na wielkie w zwracanych danych: Użycie w warunku wyboru kolumn – zamienia litery na wielkie w zwracanych danych: Użycie w warunku wyboru rekordu – zawartość pola po konwersji musi odpowiadać warunkowi: Użycie w warunku wyboru rekordu – zawartość pola po konwersji musi odpowiadać warunkowi: SELECT UPPER(wykonawca) FROM albumy; SELECT UPPER(wykonawca) FROM albumy; SELECT * FROM albumy WHERE UPPER(wykonawca)='U2'; SELECT * FROM albumy WHERE UPPER(wykonawca)='U2';

76 Funkcje matematyczne (1) ABS(x) – wartość bezwzględna ABS(x) – wartość bezwzględna SIGN(x) – znak liczby (-1, 0, 1) SIGN(x) – znak liczby (-1, 0, 1) MOD(m,n) – reszta z dzielenia M/N MOD(m,n) – reszta z dzielenia M/N FLOOR(x) – zaokrąglenie w dół FLOOR(x) – zaokrąglenie w dół CEIL(x) – zaokrąglenie w górę CEIL(x) – zaokrąglenie w górę ROUND(x) – zaokrąglenie do najbliższej l. całkowitej ROUND(x) – zaokrąglenie do najbliższej l. całkowitej m DIV n – część całkowita z dzielenia m/n m DIV n – część całkowita z dzielenia m/n EXP(x) – e x EXP(x) – e x LN(x), LOG2(x), LOG10(x), LOG(b,x) – logarytmy LN(x), LOG2(x), LOG10(x), LOG(b,x) – logarytmy POWER(x,y) = x y POWER(x,y) = x y

77 Funkcje matematyczne c.d. SQRT(x) – pierwiastek kwadratowy SQRT(x) – pierwiastek kwadratowy PI() – wartość PI() – wartość SIN(x), COS(x), TAN(x), COT(x) – funkcje trygonometr. SIN(x), COS(x), TAN(x), COT(x) – funkcje trygonometr. ASIN(x), ACOS(x), ATAN(x) – odwrotne funkcje tryg. ASIN(x), ACOS(x), ATAN(x) – odwrotne funkcje tryg. CRC32('wyr') – kod CRC wyrażenia wyr CRC32('wyr') – kod CRC wyrażenia wyr RAND() – liczba losowa od 0 do 1 RAND() – liczba losowa od 0 do 1 LEAST(x,y,...) – najmniejsza wartość z listy LEAST(x,y,...) – najmniejsza wartość z listy GREATEST(x,y,...) – największa wartość z listy GREATEST(x,y,...) – największa wartość z listy DEGREES(x), RADIANS(x) – konwersja stopnie/radiany DEGREES(x), RADIANS(x) – konwersja stopnie/radiany TRUNCATE(x,d) – skrócenie x do d miejsc po przecinku TRUNCATE(x,d) – skrócenie x do d miejsc po przecinku

78 Funkcje tekstowe ASCII(x) – kod ASCII znaku ASCII(x) – kod ASCII znaku ORD(x) – suma na podstawie kodów ASCII ORD(x) – suma na podstawie kodów ASCII CONV(x,m,n) – konwersja między systemami liczbowymi CONV(x,m,n) – konwersja między systemami liczbowymi BIN(x), OCT(x), HEX(x) – konwersja między systemami BIN(x), OCT(x), HEX(x) – konwersja między systemami CHAR(x) – ciąg złożony ze znaków o podanych kodach CHAR(x) – ciąg złożony ze znaków o podanych kodach CONCAT(s1,s2,...) – łączy podane napisy w jeden CONCAT(s1,s2,...) – łączy podane napisy w jeden CONCAT_WS(sep,s1,s2,...) – łączy napisy separatorem CONCAT_WS(sep,s1,s2,...) – łączy napisy separatorem LENGTH(s) – długość napisu LENGTH(s) – długość napisu LOCATE(s1,s2,p) – pozycja napisu s1 w s2 (szuk. od p) LOCATE(s1,s2,p) – pozycja napisu s1 w s2 (szuk. od p) INSTR(s1,s2) – pozycja napisu s2 w s1 INSTR(s1,s2) – pozycja napisu s2 w s1

79 Funkcje tekstowe (2) LPAD(s1,n,s2) – poprzedza s1 ciągiem s2 do długości n LPAD(s1,n,s2) – poprzedza s1 ciągiem s2 do długości n RPAD(s1,n,s2) – dopisuje do s1 ciąg s2 do długości n RPAD(s1,n,s2) – dopisuje do s1 ciąg s2 do długości n LEFT(s,n) – n pierwszych znaków z napisu s LEFT(s,n) – n pierwszych znaków z napisu s RIGHT(s,n) – n ostatnich znaków z napisu s RIGHT(s,n) – n ostatnich znaków z napisu s SUBSTRING(s,m,n) – n znaków z napisu s od poz. m SUBSTRING(s,m,n) – n znaków z napisu s od poz. m SUBSTRING_INDEX(s,sep,n) – część napisu s przed n-tym wystąpieniem separatora sep SUBSTRING_INDEX(s,sep,n) – część napisu s przed n-tym wystąpieniem separatora sep LTRIM(s) – usuwa początkowe spacje LTRIM(s) – usuwa początkowe spacje RTRIM(s) – usuwa końcowe spacje RTRIM(s) – usuwa końcowe spacje TRIM(s) – usuwa początkowe i końcowe spacje TRIM(s) – usuwa początkowe i końcowe spacje SPACE(n) – napis złożony z n spacji SPACE(n) – napis złożony z n spacji

80 Funkcje tekstowe (3) REPLACE(s1,s2,s3) – zamień s2 na s3 w napisie s1 REPLACE(s1,s2,s3) – zamień s2 na s3 w napisie s1 REPEAT(s,n) – napis z n powtórzeń s REPEAT(s,n) – napis z n powtórzeń s REVERSE(s) – odwraca napis s REVERSE(s) – odwraca napis s INSERT(s1,m,n,s2) – wstawia n znaków s2 do s1 na poz. m INSERT(s1,m,n,s2) – wstawia n znaków s2 do s1 na poz. m ELT(n,s1,s2,...) – zwraca n-ty napis ze zbioru ELT(n,s1,s2,...) – zwraca n-ty napis ze zbioru FIELD(s,s1,s2,...) – zwraca indeks napisu s w zbiorze FIELD(s,s1,s2,...) – zwraca indeks napisu s w zbiorze LOWER(s) – zmienia litery na małe LOWER(s) – zmienia litery na małe UPPER(s) – zmienia litery na wielkie UPPER(s) – zmienia litery na wielkie LOAD_FILE(plik) – odczytuje zawartość pliku LOAD_FILE(plik) – odczytuje zawartość pliku QUOTE(s) – poprzedza znaki specjalne znakiem '\' QUOTE(s) – poprzedza znaki specjalne znakiem '\' STRCMP(s1,s2) – porównanie dwóch napisów STRCMP(s1,s2) – porównanie dwóch napisów

81 Funkcje daty i czasu (1) DATE(s) – pobiera datę z wyrażenia s DATE(s) – pobiera datę z wyrażenia s TIME(s) - pobiera czas z wyrażenia s TIME(s) - pobiera czas z wyrażenia s TIMESTAMP(s) – pobiera datę i czas z wyrażenia s TIMESTAMP(s) – pobiera datę i czas z wyrażenia s DAYOFWEEK(data) – podaje dzień tygodnia DAYOFWEEK(data) – podaje dzień tygodnia DAYOFMONTH(data) – podaje dzień miesiąca DAYOFMONTH(data) – podaje dzień miesiąca DAYOFYEAR(data) – podaje dzień w roku DAYOFYEAR(data) – podaje dzień w roku MONTH(data) – podaje numer miesiąca MONTH(data) – podaje numer miesiąca DAYNAME(data) – podaje nazwę dnia DAYNAME(data) – podaje nazwę dnia MONTHNAME(data) – podaje nazwę miesiąca MONTHNAME(data) – podaje nazwę miesiąca WEEK(data) – podaje numer tygodnia (od 0) WEEK(data) – podaje numer tygodnia (od 0) WEEKOFYEAR(data) – podaje numer tygodnia (od 1) WEEKOFYEAR(data) – podaje numer tygodnia (od 1)

82 Funkcje daty i czasu (2) YEAR(data) – podaje rok YEAR(data) – podaje rok YEARWEEK(data) – podaje rok i numer tygodnia YEARWEEK(data) – podaje rok i numer tygodnia HOUR(data) – podaje godzinę HOUR(data) – podaje godzinę MINUTE(data) – podaje minutę MINUTE(data) – podaje minutę SECOND(data) – podaje sekundę SECOND(data) – podaje sekundę MICROSECOND(data) – podaje ułamki sekundy MICROSECOND(data) – podaje ułamki sekundy PERIOD_ADD(p,m) – dodaje m miesięcy do daty p PERIOD_ADD(p,m) – dodaje m miesięcy do daty p PERIOD_DIFF(p1,p2) – różnica dwóch dat PERIOD_DIFF(p1,p2) – różnica dwóch dat DATE_ADD(data, INTERVAL wyr typ) – dodaje do daty podany czas DATE_ADD(data, INTERVAL wyr typ) – dodaje do daty podany czas DATE_SUB(data, INTERVAL wyr typ) – odejmowanie daty DATE_SUB(data, INTERVAL wyr typ) – odejmowanie daty

83 Funkcje daty i czasu (3) ADDDATE(data,n) – dodaje n dni do daty ADDDATE(data,n) – dodaje n dni do daty SUBDATE(data,n) – odejmuje n dni od daty SUBDATE(data,n) – odejmuje n dni od daty ADDTIME(s1,s2) – dodawanie czasu ADDTIME(s1,s2) – dodawanie czasu SUBTIME(s1,s2) – odejmowanie czasu SUBTIME(s1,s2) – odejmowanie czasu EXTRACT(typ FROM data) – pobranie części daty EXTRACT(typ FROM data) – pobranie części daty TO_DAYS(data) – zamienia datę na numer dnia TO_DAYS(data) – zamienia datę na numer dnia FROM_DAYS(n) – zamienia numer dnia na datę FROM_DAYS(n) – zamienia numer dnia na datę DATE_FORMAT(data,format) – formatowanie daty DATE_FORMAT(data,format) – formatowanie daty TIME_FORMAT(czas,format) – formatowanie czasu TIME_FORMAT(czas,format) – formatowanie czasu

84 Funkcje daty i czasu (4) MAKEDATE(rok,dzień) – podaje datę MAKEDATE(rok,dzień) – podaje datę MAKETIME(godz,min,sek) – podaje czas MAKETIME(godz,min,sek) – podaje czas CURDATE() – bieżąca data CURDATE() – bieżąca data CURTIME() – bieżący czas CURTIME() – bieżący czas NOW() – bieżąca data i czas NOW() – bieżąca data i czas UNIX_TIMESTAMP() – bieżąca data i czas w formacie UNIX UNIX_TIMESTAMP() – bieżąca data i czas w formacie UNIX SEC_TO_TIME(sek) – konwersja sekund na czas SEC_TO_TIME(sek) – konwersja sekund na czas TIME_TO_SEC(czas) – konwersja czasu na sekundy TIME_TO_SEC(czas) – konwersja czasu na sekundy

85 Przykład operacji na datach Dodawanie i odejmowanie Dodawanie i odejmowanie DATE_ADD(' :59:59', INTERVAL 1 DAY); DATE_ADD(' :59:59', INTERVAL 1 DAY); DATE_ADD(' :59:59', INTERVAL '1:1' MINUTE_SECOND); DATE_ADD(' :59:59', INTERVAL '1:1' MINUTE_SECOND); DATE_SUB(' ', INTERVAL 31 DAY); DATE_SUB(' ', INTERVAL 31 DAY); Pobranie części daty Pobranie części daty EXTRACT(YEAR FROM " "); EXTRACT(YEAR FROM " "); Formatowanie daty Formatowanie daty DATE_FORMAT(' :23:00', '%W %M %Y'); DATE_FORMAT(' :23:00', '%W %M %Y');

86 Inne funkcje (1) DATABASE() – nazwa bieżącej bazy danych DATABASE() – nazwa bieżącej bazy danych USER() – nazwa bieżącego użytkownika USER() – nazwa bieżącego użytkownika PASSWORD(s) – koduje napis s jako hasło PASSWORD(s) – koduje napis s jako hasło ENCRYPT(s) – koduje napis s ENCRYPT(s) – koduje napis s ENCODE(s,pass) – koduje napis s przy użyciu hasła pass ENCODE(s,pass) – koduje napis s przy użyciu hasła pass DECODE(s,pass) – dekoduje napis s przy użyciu hasła pass DECODE(s,pass) – dekoduje napis s przy użyciu hasła pass COMPRESS(s) – kompresja napisu s COMPRESS(s) – kompresja napisu s UNCOMPRESS(s) – dekompresja napisu s UNCOMPRESS(s) – dekompresja napisu s LAST_INSERT_ID() – ostatnio użytawartość AUTO_INCREMENT LAST_INSERT_ID() – ostatnio użytawartość AUTO_INCREMENT

87 Inne funkcje (2) FORMAT(n,d) – formatuje liczbę n do d miejsc dziesiętnych FORMAT(n,d) – formatuje liczbę n do d miejsc dziesiętnych VERSION() – wersja bazy danych MySQL VERSION() – wersja bazy danych MySQL CONNECTION_ID() – identyfikator połączenia CONNECTION_ID() – identyfikator połączenia BENCHMARK(n,wyr) – oblicza czas wykonania wyr (n razy) BENCHMARK(n,wyr) – oblicza czas wykonania wyr (n razy) FOUND_ROWS() – liczba rekordów z ostatniego SELECT FOUND_ROWS() – liczba rekordów z ostatniego SELECT

88 Transakcje Domyślnie wszystkie instrukcje są wykonywane od razu po ich wprowadzeniu – zmiana danych w bazie. Domyślnie wszystkie instrukcje są wykonywane od razu po ich wprowadzeniu – zmiana danych w bazie. W pewnych sytuacjach nie chcemy aby wykonywane operacje modyfikowały fizyczny zbiór danych. W pewnych sytuacjach nie chcemy aby wykonywane operacje modyfikowały fizyczny zbiór danych. Tryb transakcji – wprowadzane operacje zostaną wykonane dopiero po podaniu odpowiedniej komendy. Tryb transakcji – wprowadzane operacje zostaną wykonane dopiero po podaniu odpowiedniej komendy. MySQL obsługuje kilka typów tabel, nie wszystkie umożliwiają przeprowadzanie transakcji MySQL obsługuje kilka typów tabel, nie wszystkie umożliwiają przeprowadzanie transakcji

89 Transakcje START TRANSACTION – rozpoczęcie transakcji START TRANSACTION – rozpoczęcie transakcji Kolejne operacje są zapamiętywane, ale nie są wykonywane. COMMIT – wykonanie operacji z całej transakcji COMMIT – wykonanie operacji z całej transakcji ROLLBACK – cofnięcie do początku transakcji ROLLBACK – cofnięcie do początku transakcji Niektóre komendy automatycznie wykonują COMMIT, np. CREATE INDEX, DROP INDEX, DROP TABLE, DROP DATABASE, ALTER TABLE, RENAME TABLE, TRUNCATE Niektóre komendy automatycznie wykonują COMMIT, np. CREATE INDEX, DROP INDEX, DROP TABLE, DROP DATABASE, ALTER TABLE, RENAME TABLE, TRUNCATE

90 Transakcje Możliwe jest ustawienie w trakcie transakcji punktów zapisu za pomocą komendy Możliwe jest ustawienie w trakcie transakcji punktów zapisu za pomocą komendy SAVEPOINT nazwa Wykonanie komendy Wykonanie komendy ROLLBACK TO SAVEPOINT nazwa powoduje cofnięcie do punktu zapisu o podanej nazwie COMMIT nadal wykonuje całą transakcję. COMMIT nadal wykonuje całą transakcję.

91 Blokowanie tabel W pewnych sytuacjach potrzebne jest czasowe zablokowanie tabeli, aby inny użytkownik nie zmodyfikował danych. W pewnych sytuacjach potrzebne jest czasowe zablokowanie tabeli, aby inny użytkownik nie zmodyfikował danych. Blokowanie: Blokowanie: LOCK TABLES tabela1 typ, tabela2 typ,... ; Typ blokady: READ – blokada do odczytu READ – blokada do odczytu WRITE – blokada do zapisu WRITE – blokada do zapisu Odblokowanie tabel: Odblokowanie tabel: UNLOCK TABLES;

92 Typy tabel w MySQL MySQL obsługuje różne standardy zapisywania tabel. Typy nie udostępniające mechanizmu transakcji: Typy nie udostępniające mechanizmu transakcji: MyISAM (domyślny), ISAM (stary), HEAP, MERGE MyISAM (domyślny), ISAM (stary), HEAP, MERGE Typy udostępniające mechanizm transakcji i blokowania: Typy udostępniające mechanizm transakcji i blokowania: InnoDB, BDB InnoDB, BDB Indeks pełnego tekstu (FULLTEXT) działa tylko w tabelach MyISAM. Indeks pełnego tekstu (FULLTEXT) działa tylko w tabelach MyISAM.

93 Typy tabel w MySQL CREATE TABLE tworzy domyślnie tabelę MyISAM. CREATE TABLE tworzy domyślnie tabelę MyISAM. Aby utworzyć tabelę innego typu, należy podać żądany typ na końcu instrukcji: Aby utworzyć tabelę innego typu, należy podać żądany typ na końcu instrukcji: Zmiana typu tabeli (w praktyce utworzenie nowej tabeli, przepisanie danych i usunięcie starej tabeli): Zmiana typu tabeli (w praktyce utworzenie nowej tabeli, przepisanie danych i usunięcie starej tabeli): CREATE TABLE nazwa (definicja) TYPE=InnoDB; ALTER TABLE nazwa TYPE=InnoDB;

94 Autoryzacja dostępu do bazy System zarządzania bazą danych obsługuje tzw. system przywilejów (privilege system): System zarządzania bazą danych obsługuje tzw. system przywilejów (privilege system): autoryzacja użytkownika łączącego się z bazą z określonego komputera (login, hasło), autoryzacja użytkownika łączącego się z bazą z określonego komputera (login, hasło), określenie praw do wykonywania poszczególnych operacji na bazie danych (przywileje) określenie praw do wykonywania poszczególnych operacji na bazie danych (przywileje) Przywileje są ustalane na podstawie: Przywileje są ustalane na podstawie: nazwy użytkownika nazwy użytkownika nazwy sieciowej komputera klienta nazwy sieciowej komputera klienta operacji, którą chce wykonać użytkownik operacji, którą chce wykonać użytkownik

95 Autoryzacja dostępu do bazy Sprawdzanie przywilejów odbywa się na dwóch poziomach Sprawdzanie przywilejów odbywa się na dwóch poziomach Poziom 1 – połączenie z bazą Poziom 1 – połączenie z bazą Sprawdzanie czy użytkownik o podanej nazwie ma prawo połączyć się z bazą z danego komputera Sprawdzanie czy użytkownik o podanej nazwie ma prawo połączyć się z bazą z danego komputera Poziom 2 – wykonanie operacji Poziom 2 – wykonanie operacji Sprawdzanie czy użytkownik ma prawo wykonać żądaną operację na danych w określonej tabeli. Sprawdzanie czy użytkownik ma prawo wykonać żądaną operację na danych w określonej tabeli.

96 Użytkownicy i hasła Użytkownik łącząc się z bazą podaje swój identyfikator (login) oraz hasło (jeżeli jest ustawione). Użytkownik łącząc się z bazą podaje swój identyfikator (login) oraz hasło (jeżeli jest ustawione). Identyfikatory i hasła bazy MySQL są niezależne od identyfikatorów i haseł systemu operacyjnego. Identyfikatory i hasła bazy MySQL są niezależne od identyfikatorów i haseł systemu operacyjnego. Połączenie z bazą z linii poleceń systemu: Połączenie z bazą z linii poleceń systemu: Jeżeli nie podany zostanie identyfikator użytkownika, (-u) przyjmowany jest identyfikator (login) systemowy bieżącego użytkownika. Jeżeli nie podany zostanie identyfikator użytkownika, (-u) przyjmowany jest identyfikator (login) systemowy bieżącego użytkownika. Opcja -p wymaga podania hasła Opcja -p wymaga podania hasła mysql -h serwer -u użytkownik -p baza_danych

97 Nadawanie praw dostępu Nadanie praw wykonywania określonych operacji na danych w bazie: Nadanie praw wykonywania określonych operacji na danych w bazie: GRANT przywilej (kolumny_tabeli) ON baza_danych.tabela TO IDENTIFIED BY 'hasło'; Odbieranie praw dostępu: Odbieranie praw dostępu: REVOKE przywilej (kolumny_tabeli) ON baza_danych.tabela FROM

98 Rodzaje przywilejów ALL – prawo do wykonywania wszystkich operacji ALL – prawo do wykonywania wszystkich operacji ALTER – zmiana def. tabeli (ALTER TABLE) ALTER – zmiana def. tabeli (ALTER TABLE) CREATE – tworzenie tabel (CREATE TABLE) CREATE – tworzenie tabel (CREATE TABLE) DELETE – kasowanie danych z tabeli (DELETE) DELETE – kasowanie danych z tabeli (DELETE) DROP – usuwanie tabel (DROP TABLE) DROP – usuwanie tabel (DROP TABLE) FILE – ładowanie danych z/do plików FILE – ładowanie danych z/do plików INDEX – tworzenie i usuwanie indeksów INDEX – tworzenie i usuwanie indeksów INSERT – wstawianie danych (INSERT) INSERT – wstawianie danych (INSERT) SELECT – pobieranie danych (SELECT) SELECT – pobieranie danych (SELECT) UPDATE – uaktualnianie danych (UPDATE) UPDATE – uaktualnianie danych (UPDATE) USAGE – bez żadnych praw USAGE – bez żadnych praw

99 Poziomy przywilejów Przywileje dostępu do danych (ON) mogą dotyczyć: Przywileje dostępu do danych (ON) mogą dotyczyć: wszystkich baz danych na serwerze (poziom globalny): GRANT... ON *.* wszystkich baz danych na serwerze (poziom globalny): GRANT... ON *.* wszystkich tabel w określonej bazie: GRANT... ON baza_danych.* wszystkich tabel w określonej bazie: GRANT... ON baza_danych.* określonej tabeli: GRANT... ON baza_danych.tabela określonej tabeli: GRANT... ON baza_danych.tabela pojedynczych kolumn w określonej tabeli pojedynczych kolumn w określonej tabeli

100 Przywileje dla użytkowników Przywileje dla użytkowników (TO) Przywileje dla użytkowników (TO) użytkownik user z dowolnego komputera: użytkownik user z dowolnego komputera: użytkownik user z komputera w domenie: użytkownik user z komputera w domenie: użytkownik z określonego komputera: użytkownik z określonego komputera:

101 Ustawianie hasła Domyślnie utworzony użytkownik nie posiada hasła, o ile nie użyta zostanie opcja IDENTIFIED BY. Domyślnie utworzony użytkownik nie posiada hasła, o ile nie użyta zostanie opcja IDENTIFIED BY. Ustalenie hasła przy nadawaniu praw: Ustalenie hasła przy nadawaniu praw: Inna instrukcja do nadania hasła: Inna instrukcja do nadania hasła: GRANT ALL ON *.* TO user IDENTIFIED BY 'hasło'; SET PASSWORD FOR user = PASSWORD('hasło');

102 Prawa dostępu – przykłady Nadanie wszystkich praw do bazy forum dla użytkownika www łączącego się z serwera Nadanie wszystkich praw do bazy forum dla użytkownika www łączącego się z serwera Nadanie wybranych praw do tabeli dane użytkownikowi robert łączącemu się z podanej domeny Nadanie wybranych praw do tabeli dane użytkownikowi robert łączącemu się z podanej domeny Uwaga – ta instrukcja jest niebezpieczna! Uwaga – ta instrukcja jest niebezpieczna! GRANT ALL ON forum.* TO www; GRANT SELECT,INSERT,UPDATE ON forum.dane TO IDENTIFIED BY robert_haslo'; GRANT ALL ON *.* TO

103 Administrator bazy danych Użytkownik root ma prawo dostępu do całej bazy – jest administratorem bazy. Użytkownik root ma prawo dostępu do całej bazy – jest administratorem bazy. Po zainstalowaniu MySQL każdy może zalogować się jako root bez hasła. Zatem należy ustawić hasło z linii poleceń: Po zainstalowaniu MySQL każdy może zalogować się jako root bez hasła. Zatem należy ustawić hasło z linii poleceń: Po połączeniu się z bazą systemową należy ustawić hasło: Po połączeniu się z bazą systemową należy ustawić hasło: Można również użyć programu mysqladmin: Można również użyć programu mysqladmin: mysql -u root mysql; SET PASSWORD FOR root = PASSWORD('tajnehaslo'); mysqladmin -u root password tajnehaslo;

104 Dodawanie użytkowników Dodanie użytkownika z jednoczesnym nadaniem praw dostępu do danych: Dodanie użytkownika z jednoczesnym nadaniem praw dostępu do danych: Dodanie użytkownika bez nadania praw: Dodanie użytkownika bez nadania praw: Dodanie na końcu opcji WITH GRANT OPTION pozwala użytkownikowi na przekazywanie praw innym użytkownikom. Dodanie na końcu opcji WITH GRANT OPTION pozwala użytkownikowi na przekazywanie praw innym użytkownikom. GRANT ALL ON baza.* TO user IDENTIFIED BY 'haslo1'; GRANT USAGE ON baza.* TO user IDENTIFIED BY 'haslo2';


Pobierz ppt "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."

Podobne prezentacje


Reklamy Google