Wstęp do Baz Danych

101
Wstęp do Baz Danych Wstęp do Baz Danych

description

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 - PowerPoint PPT Presentation

Transcript of Wstęp do Baz Danych

Page 1: Wstęp do Baz Danych

Wstęp do Baz DanychWstęp do Baz Danych

Page 2: Wstęp do Baz Danych

Rodzaje baz danychRodzaje baz danych

Obecnie na rynku istnieje wiele baz danych produkowanych Obecnie na rynku istnieje wiele baz danych produkowanych w oparciu o różne technologie i często zupełnie różnie w oparciu o różne technologie i często zupełnie różnie konstruowanych. Z najbardziej popularnych można wymienić konstruowanych. Z najbardziej popularnych można wymienić następujące: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

PostgreSQLPostgreSQL

Page 3: Wstęp do Baz Danych

Co to są bazy danych?Co to są bazy danych?

Baza danych to po prostu Baza danych to po prostu logicznie poukładane danelogicznie 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 Bazy danych używane są w bankach i większych przedsiębiorstwach do

przechowywania informacji o kontach czy też danych personalnych. przechowywania informacji o kontach czy też danych personalnych.

Ze względu na rozwój komputeryzacji dość profesjonalne i Ze względu na rozwój komputeryzacji dość profesjonalne i niekoniecznie małe, bazy danych są obecne również u przeciętnego niekoniecznie małe, bazy danych są obecne również u przeciętnego użytkownika komputera. Przechowywanie danych w bazach użytkownika komputera. Przechowywanie danych w bazach odbywa się w określony, logiczny sposób. Dzięki temu zaspokojony odbywa się w określony, logiczny sposób. Dzięki temu zaspokojony jest jeden z podstawowych celów tworzenia bazy danych, a jest jeden z podstawowych celów tworzenia bazy danych, a mianowicie mianowicie logiczny i szybki dostęp do danychlogiczny i szybki dostęp do danych. .

Page 4: Wstęp do Baz Danych

Modele systemów baz danychModele systemów baz danych W latach sześćdziesiątych i siedemdziesiątych XX wieku ujrzało światło 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ę dzienne wiele pomysłów na rozwiązanie problemu powtarzających się danych. W wyniku różnych eksperymentów powstało kilka modeli systemów 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 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ż problem magazynowania danych i szybkiego do niego dostępu istniał już znacznie wcześniej, jednak rozwiązywany był przy pomocy bardzo znacznie wcześniej, jednak rozwiązywany był przy pomocy bardzo prymitywnych pomysłów. Podstawowe modele systemów baz danych prymitywnych pomysłów. Podstawowe modele systemów baz danych można podzielić następująco: można podzielić następująco: modele prostemodele proste, gdzie dane są zorganizowane np. w postaci systemu plików. , gdzie dane są zorganizowane np. w postaci systemu plików. modele klasyczne:modele klasyczne: hierarchiczny, sieciowy i relacyjny. Ten ostatni jest obecnie hierarchiczny, sieciowy i relacyjny. Ten ostatni jest obecnie

najbardziej popularną podstawą obecnych systemów baz danych. najbardziej popularną podstawą obecnych systemów baz danych. modele semantycznemodele semantyczne czyli znaczeniowe. Klasyczne modele danych nie czyli znaczeniowe. Klasyczne modele danych nie

dostarczają łatwego sposobu odczytania informacji o semantyce danych, stąd dostarczają łatwego sposobu odczytania informacji o semantyce danych, stąd podejmuje się próby stworzenia innych modeli, uzupełniających ten brak. podejmuje się próby stworzenia innych modeli, uzupełniających ten brak. Przykładem częściowej realizacji tego programu są obiektowe modele danych. Przykładem częściowej realizacji tego programu są obiektowe modele danych.

Page 5: Wstęp do Baz Danych

Model prostyModel prosty

Model prosty odpowiada strukturze katalogów w Model prosty odpowiada strukturze katalogów w systemie operacyjnym. Dlatego też, taki system plików systemie operacyjnym. Dlatego też, taki system plików można uważać za prostą bazę danych. można uważać za prostą bazę danych.

Poniższy przykład prezentuje płaską bazę danych, gdzie Poniższy przykład prezentuje płaską bazę danych, gdzie kluczem podziału jest znak średnika: kluczem podziału jest znak średnika: 1;Noc na ziemi;Jim Jarmush1;Noc na ziemi;Jim Jarmush 2;Psy;Władysław Pasikowski2;Psy;Władysław Pasikowski 3;Ptaki;Alfred Hitchcock3;Ptaki;Alfred Hitchcock 4;Siedem;David Fincher4;Siedem;David Fincher 5;Człowiek z Żelaza;Andrzej Wajda5;Człowiek z Żelaza;Andrzej Wajda 6;Arizona Dream;Emir Kusturica6;Arizona Dream;Emir Kusturica 7;Chata wuja Toma;Stan Lathan7;Chata wuja Toma;Stan Lathan 8;Pulp Fiction;Quentin Tarantino8;Pulp Fiction;Quentin Tarantino

Page 6: Wstęp do Baz Danych

Płaskie bazy danych mają bardzo Płaskie bazy danych mają bardzo wiele wad:wiele wad:

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

Page 7: Wstęp do Baz Danych

Wady baz płaskichWady baz płaskich Jeśli kluczem do podziału pól danych jest ściśle zdefiniowana Jeśli kluczem do podziału pól danych jest ściśle zdefiniowana

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

Page 8: Wstęp do Baz Danych

Wady baz płaskichWady baz płaskich

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

Page 9: Wstęp do Baz Danych

Wady baz płaskichWady baz płaskich

Ponieważ dane są zapisywane w postaci Ponieważ dane są zapisywane w postaci tekstowej, zatem zajmują dość tekstowej, zatem zajmują dość sporo miejscasporo miejsca. . Nie Nie ma tutaj żadnej kompresjima tutaj żadnej kompresji ani ani szybkiego szybkiego dostępudostępu do danych już skompresowanych do danych już skompresowanych

Dane w bazach Dane w bazach są zorganizowane są zorganizowane sekwencyjniesekwencyjnie. Oznacza to konieczność dostępu . Oznacza to konieczność dostępu sekwencyjnego, czyli bardzo powolnego i sekwencyjnego, czyli bardzo powolnego i zasobożernego. Każde nowe rekordy są zasobożernego. Każde nowe rekordy są natomiast dopisywane na koniec danych.natomiast dopisywane na koniec danych.

Page 10: Wstęp do Baz Danych

Wady baz płaskichWady baz płaskich

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

Page 11: Wstęp do Baz Danych

Wady baz płaskichWady baz płaskich

Nie ma żadnego ograniczenia w kolejności dostępuNie ma żadnego ograniczenia w kolejności dostępu do do takiej bazy danych. Można sobie wyobrazić, że jeśli do takiej bazy danych. Można sobie wyobrazić, że jeśli do takiej bazy danych dostęp miałaby więcej niż jedna takiej bazy danych dostęp miałaby więcej niż jedna osoba, wtedy istnieje duże prawdopodobieństwo osoba, wtedy istnieje duże prawdopodobieństwo niekonsystencji danych, gdyż podczas gdy jedna osoba niekonsystencji danych, gdyż podczas gdy jedna osoba chciałaby czytać pewne dane, inna może chcieć je w tym chciałaby czytać pewne dane, inna może chcieć je w tym momencie usunąć. Jest to dość niebezpieczna sytuacja; momencie usunąć. Jest to dość niebezpieczna sytuacja; nie ma określonych priorytetównie ma określonych priorytetów i tzw. zamykania na jakiś i tzw. zamykania na jakiś czas dostępu do danych.czas dostępu do danych.

Nie ma zdefiniowanych relacji między danymiNie ma zdefiniowanych relacji między danymi, zatem , zatem dane mogą się niepotrzebnie wielokrotnie powtarzać. dane mogą się niepotrzebnie wielokrotnie powtarzać.

Page 12: Wstęp do Baz Danych

Relacyjne Bazy DanychRelacyjne Bazy Danych Relacyjna baza danych jest to zbiór dwuwymiarowych Relacyjna baza danych jest to zbiór dwuwymiarowych

tabel. Z modelem relacyjnym powiązane są następujące tabel. Z modelem relacyjnym powiązane są następujące pojęcia:pojęcia: tabela,tabela, kolumna,kolumna, wiersz,wiersz, pole.pole.

Model relacyjny opiera się na pojęciach zaczerpniętych z Model relacyjny opiera się na pojęciach zaczerpniętych z algebry. Pojęcia te to: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ś Relacje przedstawiane są w postaci tabel, zaś wybieranie danych z tabel to wynik działania operatorów wybieranie danych z tabel to wynik działania operatorów relacyjnych na tych tabelach.relacyjnych na tych tabelach.

Page 13: Wstęp do Baz Danych

TabelaTabela

ID_KID_K Autor_nAutor_n Autor_iAutor_i TytułTytuł ISBNISBN Opis_AOpis_A StanStan

11 MickiewiczMickiewicz AdamAdam Pan Pan TadeuszTadeusz

123465123465 Jeden Jeden z…..z…..

WW

22 SienkiewiczSienkiewicz HenrykHenryk Ogniem i Ogniem i MieczemMieczem

124512124512 …….... WW

33 SienkiewiczSienkiewicz HenrykHenryk KrzyżacyKrzyżacy 124512124512 ………….. NN

Page 14: Wstęp do Baz Danych

Tabela - książkiTabela - książki

ID_KID_K ID_AID_A TytułTytuł ISBNISBN Opis_KOpis_K StanStan

11 11 Pan TadeuszPan Tadeusz 123465123465 ………….... WW

22 22 Ogniem i MieczemOgniem i Mieczem 124512124512 ……………… WW

33 22 KrzyżacyKrzyżacy 124512124512 ………….. NN

44

55

Page 15: Wstęp do Baz Danych

Tabela - AutorTabela - Autor

ID_AID_A Autor_IAutor_I Autor_NAutor_N Opis_AOpis_A

11 AdamAdam MickiewiczMickiewicz …………....

22 HenrykHenryk SienkiewiczSienkiewicz ………………

33

44

55

Page 16: Wstęp do Baz Danych

Operatory relacyjneOperatory relacyjne

SELEKCJA pobieranie danych z relacji, w wyniku otrzymujemy wszystkie wiersze, które spełniają zadany warunek

PROJEKCJA operacja 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ŁĄCZENIE połączenie dwóch relacji poprzez pewne kryterium łączące niektóre wiersze z obu relacji

SUMA ZBIOROWA wszystkie wiersze z obu relacji

CZĘŚĆ WSPÓLNA wiersze wspólne dla obu relacji

RÓŻNICA ZBIOROWA wiersze, które występują w jednej, a nie występują w drugiej relacji

Page 17: Wstęp do Baz Danych

Własności relacyjnej bazy danychWłasności relacyjnej bazy danych

Relacyjna baza danych ma następujące Relacyjna baza danych ma następujące własności: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 językiem służącym do operowania na bazie danych

jest język nieproceduralny oparty na algebrze relacji. jest język nieproceduralny oparty na algebrze relacji. Obecnie standardem jest SQL lub jego modyfikacje Obecnie standardem jest SQL lub jego modyfikacje Np. MySQL.Np. MySQL.

Page 18: Wstęp do Baz Danych

Własności tabel w relacyjnej bazie Własności tabel w relacyjnej bazie danychdanych

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 wartości pól powinny być elementarne np., pole

Adres: 35-111 Rzeszów, ul Asnyka 23 powinno Adres: 35-111 Rzeszów, ul Asnyka 23 powinno być rozbite na trzy pola:być rozbite na trzy pola: KOD, KOD, UL, UL, NR_DOMUNR_DOMU

Page 19: Wstęp do Baz Danych

SQLSQL

SQL – Structured Query LanguageSQL – Structured Query Language

Język komunikacji użytkownika z oprogramowaniem Język komunikacji użytkownika z oprogramowaniem zarządzającym relacyjnymi bazami danychzarządzającym relacyjnymi bazami danych

Ujęty w normie ANSI/ISO w roku 1986Ujęty w normie ANSI/ISO w roku 1986 Aktualizacje: SQL-89, SQL-92Aktualizacje: SQL-89, SQL-92

Page 20: Wstęp do Baz Danych

SQLSQL

SQL jest oparty na wyrażeniach języka angielskiego. SQL jest oparty na wyrażeniach języka angielskiego. Jest językiem deklaratywnym —podajemy tylko, co Jest językiem deklaratywnym —podajemy tylko, co należy wykonać, ale nie specyfikujemy w jaki sposób.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 operowania danymi — wstawiania, modyfikowania i usuwania

danych z bazy danych,danych z bazy danych, definiowania danych — dodawania do bazy nowych obiektów, definiowania danych — dodawania do bazy nowych obiektów,

(tabele, kolumny)(tabele, kolumny) sterowania danymi — określania praw dostępu do danych.sterowania danymi — określania praw dostępu do danych.

Page 21: Wstęp do Baz Danych

SQLSQL

Zapisywanie poleceń SQLZapisywanie poleceń SQL Polecenia SQL mogą być rozmieszczone w kilku Polecenia SQL mogą być rozmieszczone w kilku

liniach. Koniec polecenia SQL zaznacza się liniach. Koniec polecenia SQL zaznacza się średnikiem.średnikiem.

Zaleca się umieszczanie klauzul (nowe polecenie) od Zaleca się umieszczanie klauzul (nowe polecenie) od nowej linii.nowej linii.

Można używać tabulacji (w celu poprawienia Można używać tabulacji (w celu poprawienia czytelności zapisu).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, Obojętne, czy używamy małych czy wielkich liter,

chyba że sprawdzamy zawartość bazy danych chyba że sprawdzamy zawartość bazy danych (operatory porównania)(operatory porównania)

Page 22: Wstęp do Baz Danych

SQL - odmianySQL - odmiany

Język SQL danej bazy, np. mySQL, zawiera:Język SQL danej bazy, np. mySQL, zawiera: polecenia SQL ujęte w standardziepolecenia SQL ujęte w standardzie rozszerzenia standardu – polecenia specyficzne dla rozszerzenia standardu – polecenia specyficzne dla

konkretnego systemu baz danychkonkretnego systemu baz danych

Page 23: Wstęp do Baz Danych

Rodzaje poleceń SQLRodzaje poleceń SQL

Polecenia SQL dotyczą:Polecenia SQL dotyczą: tworzenia i usuwania baz danych, tabel, kluczytworzenia i usuwania baz danych, tabel, kluczy wprowadzania, uaktualniania i usuwania danychwprowadzania, uaktualniania i usuwania danych wyszukiwania danychwyszukiwania danych ustawiania praw dostępu do danychustawiania praw dostępu do danych administracji bazą danychadministracji bazą danych zarządzania transakcjamizarządzania transakcjami

Page 24: Wstęp do Baz Danych

Instalowanie bazy danychInstalowanie bazy danych

Najwygodniej zainstalować jeden z dostępnych Najwygodniej zainstalować jeden z dostępnych pakietów zawierającychpakietów zawierających Serwer www np. ApacheSerwer www np. Apache Język skryptowy PHPJęzyk skryptowy PHP Bazę danych MysqlBazę danych Mysql

Kryterium to spełnia np. pakiet „wampserver”Kryterium to spełnia np. pakiet „wampserver”

Page 25: Wstęp do Baz Danych

Wprowadzanie komend SQLWprowadzanie komend SQL

Sposób wprowadzania do bazy poleceń SQL:Sposób wprowadzania do bazy poleceń SQL: w programie działającym z linii poleceńw programie działającym z linii poleceń

(np. MySQL monitor)(np. MySQL monitor) w programie z graficznym interfejsem użytkownika w programie z graficznym interfejsem użytkownika

(np. MySQL Navigator)(np. MySQL Navigator) w skryptach i programach komunikujących się z bazą w skryptach i programach komunikujących się z bazą

danych (np. skrypty PHP - np. phpmyadmin)danych (np. skrypty PHP - np. phpmyadmin) pośrednio, przy użyciu graficznego interfejsu pośrednio, przy użyciu graficznego interfejsu

użytkownika (np. Access)użytkownika (np. Access)

Page 26: Wstęp do Baz Danych

Tworzenie bazy danych – Tworzenie bazy danych – MySQLMySQL

Sposób utworzenia bazy danych w MySQL:Sposób utworzenia bazy danych w MySQL: uruchomienie programu: uruchomienie programu: mysqlmysql utworzenie bazy:utworzenie bazy:

CREATE DATABASE nazwa;CREATE DATABASE nazwa; przełączenie się do bazy:przełączenie się do bazy:

USE nazwa;USE nazwa; teraz można utworzyć tabele – utworzenie tabeli wymaga teraz można utworzyć tabele – utworzenie tabeli wymaga

podania nazw pól (kolumn) oraz ich typów.podania nazw pól (kolumn) oraz ich typów.

Page 27: Wstęp do Baz Danych

Najważniejsze polecenia SQLNajważniejsze polecenia SQL

Zestaw najważniejszych poleceń SQL toZestaw najważniejszych poleceń SQL to

CREATE CREATE - utwórz- utwórz

SELECTSELECT – wybierz dane wg kryteriów – wybierz dane wg kryteriów

INSERTINSERT – wstaw dane – wstaw dane

DELETEDELETE – usuń dane – usuń dane

UPDATEUPDATE – uaktualnij dane – uaktualnij dane

Page 28: Wstęp do Baz Danych

SQL – liczby i napisySQL – liczby i napisy

Łańcuchy znaków (string): Łańcuchy znaków (string): ''napisnapis'' lub lub ""napisnapis"" użycie backslasha (\): użycie backslasha (\): ''napis \napis \''0303''

Liczby całkowite: Liczby całkowite: 1221; 0; -321221; 0; -32 Liczby zmiennoprzecinkowe: Liczby zmiennoprzecinkowe: 294.42; 294.42;

-32032.6809e+10-32032.6809e+10 Liczby szesnastkowe: np. 1000 = 3E8Liczby szesnastkowe: np. 1000 = 3E8

Wartość pusta:Wartość pusta:NULLNULL

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.

Page 29: Wstęp do Baz Danych

Typy danychTypy danych

Typy danych MySQL – Typy danych MySQL – liczby całkowiteliczby całkowite:: TINYINTTINYINT (1 bajt) (liczby od -128 .. 127 lub 0..256 „unsigned”) (1 bajt) (liczby od -128 .. 127 lub 0..256 „unsigned”) SMALLINTSMALLINT (2 bajty) (liczby od -32768 .. 32767) (2 bajty) (liczby od -32768 .. 32767) MEDIUMINTMEDIUMINT (3 bajty) (-8388608 .. 8388607) (3 bajty) (-8388608 .. 8388607) INTINT (4 bajty) (-2147483648 .. 2147483647) (4 bajty) (-2147483648 .. 2147483647) BIGINTBIGINT (8 bajtów) (-9223372036854775808 .. 9223372036854775807) (8 bajtów) (-9223372036854775808 .. 9223372036854775807)

Dodatkowe atrybuty:Dodatkowe atrybuty: UNSIGNEDUNSIGNED – liczba bez znaku – liczba bez znaku ZEROFILLZEROFILL – dopełnienie zerami – dopełnienie zerami ((MM)) – wyświetlenie – wyświetlenie MM cyfr cyfr

Page 30: Wstęp do Baz Danych

Typy danychTypy danych

Typy danych MySQL – Typy danych MySQL – liczby liczby zmiennoprzecinkowezmiennoprzecinkowe::

FLOAT (FLOAT (nn)) – pojedyncza precyzja, – pojedyncza precyzja, nn liczb liczb DOUBLE (DOUBLE (MM,,DD)) – podwójna precyzja – podwójna precyzja DECIMAL (DECIMAL (MM,,DD)) – liczba zapisywana jako tekst – liczba zapisywana jako tekst

Dodatkowe atrybuty:Dodatkowe atrybuty: UNSIGNEDUNSIGNED – liczba bez znaku – liczba bez znaku ZEROFILLZEROFILL – dopełnienie zerami – dopełnienie zerami ((MM)) – wyświetlenie – wyświetlenie MM cyfr cyfr ((M,DM,D)) – wyświetlenie – wyświetlenie MM cyfr, cyfr, DD cyfr po przecinku cyfr po przecinku

Page 31: Wstęp do Baz Danych

Typy danychTypy danych

Typy danych MySQL – Typy danych MySQL – data i czasdata i czas:: DATETIMEDATETIME – data + czas (2003-10-15 15:00:12) – data + czas (2003-10-15 15:00:12) DATEDATE – data (2003-10-15) – data (2003-10-15) TIMETIME – czas (15:00:12) – czas (15:00:12) YEARYEAR – rok (2003 lub 03) – rok (2003 lub 03) TIMESTAMP (TIMESTAMP (nn)) – znacznik czasu (n – liczba znaków); data – znacznik czasu (n – liczba znaków); data

wstawiana do bazy danych w momencie wykonywania jakiejś wstawiana do bazy danych w momencie wykonywania jakiejś operacjioperacji

Page 32: Wstęp do Baz Danych

Typy danychTypy danych

Typy danych MySQL – Typy danych MySQL – łańcuchy tekstowełańcuchy tekstowe:: CHAR (CHAR (nn)) – stała długość – stała długość nn (max. 255) (max. 255) VARCHAR (VARCHAR (nn)) – zmienna długość, max. – zmienna długość, max. nn (do 255) (do 255) TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXTTINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT

– dane tekstowe ASCII– dane tekstowe ASCII

Inne typy danych:Inne typy danych: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOBTINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB

– dane binarne– dane binarne ENUMENUM – typ wyliczeniowy (tylko jedna z wartości dopuszczonych) – typ wyliczeniowy (tylko jedna z wartości dopuszczonych) SETSET – zbiór wartości (w kolumnie może znajdować się podzbiór – zbiór wartości (w kolumnie może znajdować się podzbiór

wartości dopuszczonych tzn. kilka wartości.)wartości dopuszczonych tzn. kilka wartości.)

Page 33: Wstęp do Baz Danych

Tworzenie tabelTworzenie tabel

Utworzenie tabeli wymaga podania nazw pól (kolumn) Utworzenie tabeli wymaga podania nazw pól (kolumn) oraz ich typów.oraz ich typów.

CREATE TABLE albumy2 (CREATE TABLE albumy2 (idid INT NOT NULL,INT NOT NULL,wykonawcawykonawca VARCHAR(30),VARCHAR(30),tytułtytuł VARCHAR(30),VARCHAR(30),rokrok YEAR,YEAR,liczba_utwliczba_utw SMALLINT,SMALLINT,opisopis TEXTTEXT

););

Page 34: Wstęp do Baz Danych

Wstawianie danych do tabeliWstawianie danych do tabeli

Wstawianie danych z podaniem wszystkich Wstawianie danych z podaniem wszystkich kolumn tabeli (należy zachować kolejność!)kolumn tabeli (należy zachować kolejność!)

Wstawianie danych do wybranych kolumn tabeliWstawianie danych do wybranych kolumn tabeli

INSERT INTO albumy INSERT INTO albumy VALUES (1, ‘Pink Floyd’, ‘The Division Bell’, VALUES (1, ‘Pink Floyd’, ‘The Division Bell’, 1994, 11, ‘Ostatni studyjny album’);1994, 11, ‘Ostatni studyjny album’);

INSERT INTO albumy (id, album, wykonawca)INSERT INTO albumy (id, album, wykonawca)VALUES (2, ‘The Wall’, ‘Pink Floyd’);VALUES (2, ‘The Wall’, ‘Pink Floyd’);

Page 35: Wstęp do Baz Danych

Wyszukiwanie danychWyszukiwanie danych

Wyszukiwanie danych w tabeli – instrukcja Wyszukiwanie danych w tabeli – instrukcja SELECTSELECT Ogólna postać instrukcji SELECT:Ogólna postać instrukcji SELECT:

SELECT które_kolumnySELECT które_kolumny FROM z_której_tabeliFROM z_której_tabeli WHERE które_rekordy;WHERE które_rekordy;

Wyrażenie logiczne po instrukcji WHERE Wyrażenie logiczne po instrukcji WHERE zawiera kryteria, które musi spełnić rekord, aby zawiera kryteria, które musi spełnić rekord, aby znaleźć się w wynikach wyszukiwania.znaleźć się w wynikach wyszukiwania.

Page 36: Wstęp do Baz Danych

Wyszukiwanie danychWyszukiwanie danych

Najprostsza postać instrukcji Najprostsza postać instrukcji SELECTSELECT

Wyszukiwanie:Wyszukiwanie: w tabeli w tabeli albumyalbumy wszystkich pól (kolumn) – „*”wszystkich pól (kolumn) – „*” wszystkich rekordów (wierszy) – brak warunku wszystkich rekordów (wierszy) – brak warunku

WHEREWHERE

SELECT * FROM albumy;SELECT * FROM albumy;

Page 37: Wstęp do Baz Danych

Wyszukiwanie – wybór kolumnWyszukiwanie – wybór kolumn

Wyszukiwanie danych – wyświetlenie wybranych kolumnWyszukiwanie 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 rok, tytuł, wykonawca FROM albumy;

SELECT wykonawca FROM albumy;SELECT wykonawca FROM albumy;

SELECT DISTINCT wykonawca FROM albumy;SELECT DISTINCT wykonawca FROM albumy;

Page 38: Wstęp do Baz Danych

Wyszukiwanie – wybór wierszyWyszukiwanie – wybór wierszy

WyszukiwanieWyszukiwanie rekordów spełniających zadany rekordów spełniających zadany warunek - instrukcja warunek - instrukcja WHEREWHERE

SELECT tytuł FROM albumySELECT tytuł FROM albumyWHERE wykonawca = 'Pink Floyd';WHERE wykonawca = 'Pink Floyd';

SELECT wykonawca, rok FROM albumySELECT wykonawca, rok FROM albumyWHERE tytuł = 'The Best Of' AND rok < WHERE tytuł = 'The Best Of' AND rok < 1970;1970;

Page 39: Wstęp do Baz Danych

OperatoryOperatory

Operatory używane w instrukcji Operatory używane w instrukcji SELECT ... SELECT ... WHEREWHERE:: porównania: porównania: = < > <= >= = < > <= >= logiczne: logiczne: NOT ! AND && OR || XOR NOT ! AND && OR || XOR

!= != oznacza różny – nie równyoznacza różny – nie równy

IS NULL, IS NOT NULLIS NULL, IS NOT NULL exprexpr BETWEENBETWEEN minmin ANDAND max max ((NOT BETWEENNOT BETWEEN)) exprexpr ININ ( (listalista) ) ((NOT INNOT IN) (Np. ) (Np. ININ(‘Warszawa’, (‘Warszawa’,

‘Lublin’)‘Lublin’)

SELECT * FROM albumySELECT * FROM albumyWHERE wykonawca IN ('Pink Floyd', ‘Dire Straits')WHERE wykonawca IN ('Pink Floyd', ‘Dire Straits')AND (rok < 1975 OR rok BETWEEN 1979 AND 1983);AND (rok < 1975 OR rok BETWEEN 1979 AND 1983);

Page 40: Wstęp do Baz Danych

Symbole wieloznaczneSymbole wieloznaczne

Symbole wieloznaczne używane w instrukcji Symbole wieloznaczne używane w instrukcji WHEREWHERE:: %% zastępuje dowolny ciąg znakówzastępuje dowolny ciąg znaków __ zastępuje jeden znakzastępuje jeden znak

Operator symboli wieloznacznych: Operator symboli wieloznacznych: LIKELIKE, , NOT LIKENOT LIKE Wyrażenia regularne – operator Wyrażenia regularne – operator REGEXPREGEXP (MySQL) (MySQL)

SELECT * FROM albumySELECT * FROM albumyWHERE wykonawca LIKE 'The %s';WHERE wykonawca LIKE 'The %s';

SELECT * FROM albumySELECT * FROM albumyWHERE album NOT LIKE 'The Best in 197_';WHERE album NOT LIKE 'The Best in 197_';

Page 41: Wstęp do Baz Danych

Sortowanie wynikówSortowanie wyników

Sortowanie wyników wg zadanej kolumny:Sortowanie wyników wg zadanej kolumny: ORDER BYORDER BY polepole – w porządku rosnącym – w porządku rosnącym ORDER BYORDER BY polepole ASCASC – jw. – jw. ORDER BYORDER BY polepole DESCDESC – w porządku malejącym – w porządku malejącym

SELECT * FROM albumySELECT * FROM albumyORDER BY rok DESC, wykonawca;ORDER BY rok DESC, wykonawca;

Page 42: Wstęp do Baz Danych

Grupowanie wynikówGrupowanie wyników

Tworzenie zestawień przez grupowanie wyników:Tworzenie zestawień przez grupowanie wyników: użycie funkcji, np. użycie funkcji, np. COUNTCOUNT, , SUMSUM, , MAXMAX, , MINMIN, , AVGAVG nazwanie kolumny z wynikami (opcjonalnie) – nazwanie kolumny z wynikami (opcjonalnie) – ASAS zgrupowanie wyników – zgrupowanie wyników – GROUP BYGROUP BY

Przykład – obliczenie ilości albumów wszystkich Przykład – obliczenie ilości albumów wszystkich wykonawców:wykonawców:

SELECT wykonawca, COUNT(*) FROM albumySELECT wykonawca, COUNT(*) FROM albumyGROUP BY wykonawca;GROUP BY wykonawca;

SELECT wykonawca, COUNT(*) AS ilosc FROM albumySELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawca ORDER BY ilosc DESC;GROUP BY wykonawca ORDER BY ilosc DESC;

Page 43: Wstęp do Baz Danych

Grupowanie wynikówGrupowanie wyników

Ograniczenie rekordów uzyskanych w wyniku Ograniczenie rekordów uzyskanych w wyniku grupowania - operator grupowania - operator HAVINGHAVING

Przykład – obliczenie ilości albumów wszystkich Przykład – obliczenie ilości albumów wszystkich wykonawców, wyświetlenie tylko tych, którzy wykonawców, wyświetlenie tylko tych, którzy mają więcej niż 5 albumów:mają więcej niż 5 albumów:

SELECT wykonawca, COUNT(*) AS ilosc FROM albumySELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawcaGROUP BY wykonawcaHAVING ilosc > 5;HAVING ilosc > 5;

Page 44: Wstęp do Baz Danych

Ograniczenie liczby wynikówOgraniczenie liczby wyników

Ograniczenie liczby zwracanych wyników – Ograniczenie liczby zwracanych wyników – LIMITLIMIT

LIMIT n – n pierwszych wynikówLIMIT n – n pierwszych wyników LIMIT m,n – n wyników, pomijając m pierwszychLIMIT m,n – n wyników, pomijając m pierwszych Przykład: 10 wykonawców o największej liczbie Przykład: 10 wykonawców o największej liczbie

albumów:albumów:

20 następnych wyników (11-30):20 następnych wyników (11-30):

SELECT wykonawca, COUNT(*) AS ilosc FROM albumySELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawca LIMIT 10;GROUP BY wykonawca LIMIT 10;

SELECT wykonawca, COUNT(*) AS ilosc FROM albumySELECT wykonawca, COUNT(*) AS ilosc FROM albumyGROUP BY wykonawca LIMIT 10,20;GROUP BY wykonawca LIMIT 10,20;

Page 45: Wstęp do Baz Danych

Wyszukiwanie w wielu tabelachWyszukiwanie w wielu tabelach

Pobieranie danych z więcej niż jednej tabeliPobieranie danych z więcej niż jednej tabeli

Przykład bazy danych – dwie tabele:Przykład bazy danych – dwie tabele: albumyalbumy utworyutwory

Wybranie wszystkich możliwych kombinacji Wybranie wszystkich możliwych kombinacji rekordów z obu tabel (iloczyn kartezjański):rekordów z obu tabel (iloczyn kartezjański):

IDAIDA WykonawcaWykonawca AlbumAlbum RokRok GatunekGatunek

IDUIDU UtwórUtwór CzasCzas IDAIDA

SELECT * FROM albumy, utwory;SELECT * FROM albumy, utwory;

Page 46: Wstęp do Baz Danych

Wyszukiwanie w wielu tabelachWyszukiwanie 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 Łączy ze sobą rekordy obu tabel mające takie same dane w polach, które są połączone relacją:dane w polach, które są połączone relacją:

albumyalbumy

utworyutwory

SELECT * FROM albumy, utworySELECT * FROM albumy, utworyWHERE albumy.IDA = utwory.IDA;WHERE albumy.IDA = utwory.IDA;

IDAIDA WykonawcaWykonawca AlbumAlbum RokRok GatunekGatunek

IDUIDU UtwórUtwór CzasCzas IDAIDA

Page 47: Wstęp do Baz Danych

Wyszukiwanie w wielu tabelachWyszukiwanie w wielu tabelach

Wybór kolumn:Wybór kolumn:

Aliasy nazw tabel:Aliasy nazw tabel:

SELECT albumy.wykonawca, albumy.album, SELECT albumy.wykonawca, albumy.album, utwory.utwor, utwory.czas utwory.utwor, utwory.czas FROM albumy, utworyFROM albumy, utworyWHERE albumy.IDA = utwory.IDA;WHERE albumy.IDA = utwory.IDA;

SELECT a.wykonawca, a.album, u.utwor, u.czas SELECT a.wykonawca, a.album, u.utwor, u.czas FROM albumy a, utwory uFROM albumy a, utwory uWHERE a.IDA = u.IDA;WHERE a.IDA = u.IDA;

Page 48: Wstęp do Baz Danych

Wstawianie danych – inne Wstawianie danych – inne metodymetody

Wstawianie do tabeli danych uzyskanych w wyniku Wstawianie do tabeli danych uzyskanych w wyniku zapytania:zapytania:

Wstawianie danych z pliku na komputerze klienta (pola Wstawianie danych z pliku na komputerze klienta (pola rozdzielone tabulatorami, rekordy – znakiem nowej linii) - rozdzielone tabulatorami, rekordy – znakiem nowej linii) - komenda mySQL (nie standard):komenda mySQL (nie standard):

INSERT INTO nowa (autor, dzielo)INSERT INTO nowa (autor, dzielo)SELECT DISTINCT wykonawca, albumSELECT DISTINCT wykonawca, albumFROM albumy;FROM albumy;

LOAD DATA LOCAL INFILE ‘dane.txt’LOAD DATA LOCAL INFILE ‘dane.txt’INTO nowa_tabela;INTO nowa_tabela;

Page 49: Wstęp do Baz Danych

Usuwanie rekordówUsuwanie rekordów

Usunięcie rekordów Usunięcie rekordów spełniającychspełniających zadane kryteria zadane kryteria– instrukcja – instrukcja DELETEDELETE. Warunki takie same jak w . Warunki takie same jak w SELECTSELECT..

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 albumyDELETE FROM albumyWHERE wykonawca = 'Pink Floyd';WHERE wykonawca = 'Pink Floyd';

DELETE FROM albumy;DELETE FROM albumy;

TRUNCATE TABLE albumy;TRUNCATE TABLE albumy;

Page 50: Wstęp do Baz Danych

Uaktualnianie rekordówUaktualnianie rekordów

Zmiana danych rekordów już istniejących w tabeli – Zmiana danych rekordów już istniejących w tabeli – komenda komenda UPDATEUPDATE..

Nowe wartości określane są komendą Nowe wartości określane są komendą SETSET.. Przykład:Przykład:

Ta komenda uaktualni WSZYSTKIE rekordy:Ta komenda uaktualni WSZYSTKIE rekordy:

UPDATE albumyUPDATE albumySET wykonawca = 'Pink Floyd' SET wykonawca = 'Pink Floyd' WHERE wykonawca = 'Fink Ployd';WHERE wykonawca = 'Fink Ployd';

UPDATE albumy SET wykonawca = 'Pink Floyd';UPDATE albumy SET wykonawca = 'Pink Floyd';

Page 51: Wstęp do Baz Danych

Operacje na bazach danychOperacje 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;CREATE DATABASE baza;

DROP DATABASE baza;DROP DATABASE baza;

SHOW DATABASES;SHOW DATABASES;

USE baza;USE baza;

Page 52: Wstęp do Baz Danych

Operacje na tabelachOperacje 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));CREATE TABLE tabela (id INT, nazwa VARCHAR(30));

DROP TABLE tabela;DROP TABLE tabela;

SHOW TABLES;SHOW TABLES;

DESCRIBE tabela;DESCRIBE tabela;

Page 53: Wstęp do Baz Danych

Operacje na tabelachOperacje na tabelach

Zmiana nazwy:Zmiana nazwy:

Zmiana struktury tabeli – Zmiana struktury tabeli – ALTER TABLEALTER TABLE Dodanie kolumny:Dodanie kolumny:

Usuwanie kolumny:Usuwanie kolumny:

RENAME TABLE tabela TO nowa_tabela;RENAME TABLE tabela TO nowa_tabela;

ALTER TABLE tabela ADD (opis TEXT);ALTER TABLE tabela ADD (opis TEXT);

ALTER TABLE tabela DROP opis;ALTER TABLE tabela DROP opis;

Page 54: Wstęp do Baz Danych

Operacje na tabelachOperacje na tabelach

Modyfikacja typu kolumny (ograniczenia typu!):Modyfikacja typu kolumny (ograniczenia typu!):

Zmiana nazwy kolumny:Zmiana nazwy kolumny:

Za pomocą Za pomocą ALTER TABLEALTER TABLE możliwe jest również możliwe jest również dodawanie i usuwanie atrybutów pól.dodawanie i usuwanie atrybutów pól.

ALTER TABLE tabela MODIFY opis VARCHAR(50);ALTER TABLE tabela MODIFY opis VARCHAR(50);

ALTER TABLE tabela CHANGE opis info VARCHAR(50);ALTER TABLE tabela CHANGE opis info VARCHAR(50);

Page 55: Wstęp do Baz Danych

Atrybuty pól tabeliAtrybuty pól tabeli

Przy tworzeniu lub zmianie tabeli można podać Przy tworzeniu lub zmianie tabeli można podać opcjonalne atrybuty pól (kolumn) tabeli:opcjonalne atrybuty pól (kolumn) tabeli:

CREATE TABLE (CREATE TABLE (pole typ atrybuty, pole typ atrybuty, ...);...);

Dostępne atrybuty:Dostępne atrybuty: NULLNULL – można nie podawać wartości (domyślnie) – można nie podawać wartości (domyślnie) NOT NULLNOT NULL – wartość musi być podana – wartość musi być podana DEFAULT DEFAULT wartośćwartość – gdy nie podamy wartości – gdy nie podamy wartości AUTO_INCREMENTAUTO_INCREMENT – automatycznie zwiększany licznik – automatycznie zwiększany licznik COMMENT 'COMMENT 'opisopis'' – komentarz – komentarz PRIMARY KEY, KEYPRIMARY KEY, KEY – indeksy główne– indeksy główne

Page 56: Wstęp do Baz Danych

AUTO_INCREMENT i AUTO_INCREMENT i DEFAULTDEFAULT

AUTO_INCREMENTAUTO_INCREMENT – nie wpisujemy danych, baza wpisuje – nie wpisujemy danych, baza wpisuje aktualny stan licznika i zwiększa go o 1.aktualny stan licznika i zwiększa go o 1.

DEFAULTDEFAULT – jeżeli nie wprowadzimy danych, zostanie wpisana – jeżeli nie wprowadzimy danych, zostanie wpisana wartość domyślnawartość domyślna

Wynik: (1, 'XYZ', 'brak opisu')Wynik: (1, 'XYZ', 'brak opisu')

CREATE TABLE wykonawcy {CREATE TABLE wykonawcy {idid INT NOT NULL AUTO_INCREMENT,INT NOT NULL AUTO_INCREMENT,wykonawcawykonawca VARCHAR(30),VARCHAR(30),opisopis TEXT DEFAULT 'brak opisu'TEXT DEFAULT 'brak opisu'

};};

INSERT INTO wykonawcy (wykonawca) VALUES ('XYZ');INSERT INTO wykonawcy (wykonawca) VALUES ('XYZ');

Page 57: Wstęp do Baz Danych

TIMESTAMPTIMESTAMP

Wartością domyślną dla kolumny o typie Wartością domyślną dla kolumny o typie TIMESTAMPTIMESTAMP jest aktualny znacznik czasu (data jest aktualny znacznik czasu (data i czas). i czas).

Kolumna tego typu umożliwia zachowanie czasu Kolumna tego typu umożliwia zachowanie czasu wprowadzenia lub ostatniej modyfikacji rekordu.wprowadzenia lub ostatniej modyfikacji rekordu.

Jeżeli zostanie podana wartość – jest ona Jeżeli zostanie podana wartość – jest ona wpisywana.wpisywana.

Jeżeli nie zostanie podana wartość (NULL) – Jeżeli nie zostanie podana wartość (NULL) – wpisywany jest znacznik czasu.wpisywany jest znacznik czasu.

Page 58: Wstęp do Baz Danych

Sprawdzanie poprawności Sprawdzanie poprawności danychdanych

NOT NULLNOT NULL – w tej kolumnie muszą być wpisane dane – w tej kolumnie muszą być wpisane dane

CHECK (CHECK (wyrażeniewyrażenie)) – dane muszą spełniać podany – dane muszą spełniać podany warunekwarunek

My SQL nie obsługuje polecenia (My SQL nie obsługuje polecenia (CHECKCHECK).).

CREATE TABLE dane {CREATE TABLE dane {nazwiskonazwisko VARCHAR(30) NOT NULL,VARCHAR(30) NOT NULL,rok_urrok_ur INT,INT,

CHECK(rok_ur BETWEEN 1900 AND 2040)CHECK(rok_ur BETWEEN 1900 AND 2040)};};

Page 59: Wstęp do Baz Danych

Indeksowanie tabelIndeksowanie tabel

Na wybrane kolumny tabeli mogą być nakładane Na wybrane kolumny tabeli mogą być nakładane indeksy (klucze) w celu:indeksy (klucze) w celu: przyspieszenia wyszukiwaniaprzyspieszenia wyszukiwania zdefiniowania relacji pomiędzy tabelamizdefiniowania relacji pomiędzy tabelami

Typy indeksów w MySQL:Typy indeksów w MySQL: KEY, INDEXKEY, INDEX UNIQUEUNIQUE PRIMARY KEYPRIMARY KEY FULLTEXTFULLTEXT

Page 60: Wstęp do Baz Danych

Tworzenie indeksówTworzenie indeksów

Tworzenie indeksu podczas definiowania tabeli – komenda Tworzenie indeksu podczas definiowania tabeli – komenda INDEXINDEX lub lub KEYKEY (obie są równoważne): (obie są równoważne):

KEY KEY nazwanazwa ( (kolumnykolumny))

Indeks może obejmować wiele kolumnIndeks może obejmować wiele kolumn

CREATE TABLE dane {CREATE TABLE dane {nazwiskonazwisko VARCHAR(30) NOT NULL,VARCHAR(30) NOT NULL,rok_urrok_ur INT,INT,

KEY indeks (nazwisko)KEY indeks (nazwisko)};};

Page 61: Wstęp do Baz Danych

Tworzenie indeksówTworzenie indeksów

Tworzenie indeksu w już istniejącej tabeli:Tworzenie indeksu w już istniejącej tabeli:

Indeks wielokolumnowy, indeksowanych 10 pierwszych Indeks wielokolumnowy, indeksowanych 10 pierwszych znaków pola znaków pola nazwiskonazwisko::

Usunięcie indeksu (nie usuwa danych!):Usunięcie indeksu (nie usuwa danych!):

CREATE INDEX indeks ON dane(nazwisko);CREATE INDEX indeks ON dane(nazwisko);

CREATE INDEX indeks CREATE INDEX indeks ON dane (nazwisko(10), rok_ur);ON dane (nazwisko(10), rok_ur);

DROP INDEX indeks ON dane;DROP INDEX indeks ON dane;

Page 62: Wstęp do Baz Danych

Wartości niepowtarzalneWartości niepowtarzalne

UNIQUEUNIQUE – żadne dwa rekordy w tabeli nie mogą mieć – żadne dwa rekordy w tabeli nie mogą mieć jednakowych danych w indeksowanej kolumnie. Jest to jednakowych danych w indeksowanej kolumnie. Jest to jednocześnie INDEX.jednocześnie INDEX.

Jeżeli indeksowana kolumna ma atrybut NOT NULL, Jeżeli indeksowana kolumna ma atrybut NOT NULL, dana kolumna musi zawierać dane unikatowe i pola nie dana kolumna musi zawierać dane unikatowe i pola nie mogą być puste.mogą być puste.

Jeżeli indeksowana kolumna ma atrybut NULL, dane w Jeżeli indeksowana kolumna ma atrybut NULL, dane w kolumnie muszą być unikatowe, ale mogą nie być kolumnie muszą być unikatowe, ale mogą nie być wprowadzane (pole może pozostać puste).wprowadzane (pole może pozostać puste).

Page 63: Wstęp do Baz Danych

Tworzenie indeksu UNIQUETworzenie 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 {CREATE TABLE dane {nazwiskonazwisko VARCHAR(30) NOT NULL,VARCHAR(30) NOT NULL,peselpesel CHAR(11),CHAR(11),UNIQUE indeks (pesel)UNIQUE indeks (pesel)

};};

CREATE UNIQUE INDEX indeks ON dane (pesel);CREATE UNIQUE INDEX indeks ON dane (pesel);

Page 64: Wstęp do Baz Danych

Indeks głównyIndeks główny

Indeks główny – Indeks główny – PRIMARY KEYPRIMARY KEY identyfikuje jednoznacznie każdy rekord w tabeliidentyfikuje jednoznacznie każdy rekord w tabeli może istnieć tylko jeden w tabelimoże istnieć tylko jeden w tabeli jest typu UNIQUEjest typu UNIQUE indeksowana kolumna otrzymuje automatycznie indeksowana kolumna otrzymuje automatycznie

atrybut NOT NULLatrybut 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 tabelamibierze domyślnie udział w relacjach z innymi tabelami

Page 65: Wstęp do Baz Danych

Tworzenie indeksu głównegoTworzenie indeksu głównego

Tworzenie indeksu głównego podczas definiowania Tworzenie indeksu głównego podczas definiowania tabeli – w definicji kolumny:tabeli – w definicji kolumny:

To samo w definicji tabelTo samo w definicji tabel

CREATE TABLE dane {CREATE TABLE dane {nazwiskonazwisko VARCHAR(30) NOT NULL,VARCHAR(30) NOT NULL,peselpesel CHAR(11) PRIMARY KEY,CHAR(11) PRIMARY KEY,

};};

CREATE TABLE dane {CREATE TABLE dane {nazwiskonazwisko VARCHAR(30) NOT NULL,VARCHAR(30) NOT NULL,peselpesel CHAR(11),CHAR(11),PRIMARY KEY (pesel)PRIMARY KEY (pesel)

};};

Page 66: Wstęp do Baz Danych

Tworzenie indeksu głównegoTworzenie 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 Usuwanie indeksu głównego w tabeli (nie usuwa danych!):danych!):

ALTER TABLE dane ADD PRIMARY KEY (pesel);ALTER TABLE dane ADD PRIMARY KEY (pesel);

ALTER TABLE dane DROP PRIMARY KEY;ALTER TABLE dane DROP PRIMARY KEY;

Page 67: Wstęp do Baz Danych

Wyszukiwanie w całym tekścieWyszukiwanie w całym tekście

MySQL posiada specjalny typ klucza MySQL posiada specjalny typ klucza FULLTEXTFULLTEXT, umożliwiający , umożliwiający wyszukiwanie informacji w wyszukiwanie informacji w polach tekstowychpolach tekstowych. Indeks ten nie . Indeks ten nie wchodzi w skład standardu SQL.wchodzi w skład standardu SQL.

Tworzenie indeksu FULLTEXT:Tworzenie indeksu FULLTEXT:

CREATE TABLE albumy {CREATE TABLE albumy {tytultytul VARCHAR(30) PRIMARY KEY,VARCHAR(30) PRIMARY KEY,wykonawcawykonawca VARCHAR(30),VARCHAR(30),recenzjarecenzja TEXT,TEXT,FULLTEXT indeks (tytul, recenzja)FULLTEXT indeks (tytul, recenzja)

};};

ALTER TABLE albumy ADD FULLTEXT ind (recenzja);ALTER TABLE albumy ADD FULLTEXT ind (recenzja);

Page 68: Wstęp do Baz Danych

Wyszukiwanie w całym tekścieWyszukiwanie w całym tekście

Wyszukiwanie dosłowne:Wyszukiwanie dosłowne:MATCH (MATCH (kolumnykolumny) AGAINST () AGAINST (napisnapis))

Dla każdego zwróconego rekordu baza oblicza wskaźnik Dla każdego zwróconego rekordu baza oblicza wskaźnik podobieństwa (podobieństwa (scorescore) – im większa liczba, tym lepsze ) – im większa liczba, tym lepsze dopasowanie szukanego ciągu.dopasowanie szukanego ciągu.

Znalezione rekordy są sortowane w kolejności od Znalezione rekordy są sortowane w kolejności od najwyższego wyniku.najwyższego wyniku.

SELECT * FROM albumySELECT * FROM albumyWHERE MATCH (tytul, recenzja)WHERE MATCH (tytul, recenzja)

AGAINST ('best of');AGAINST ('best of');

Page 69: Wstęp do Baz Danych

Wyszukiwanie w trybie Wyszukiwanie w trybie logicznymlogicznym

Wyszukiwanie w trybie logicznym Wyszukiwanie w trybie logicznym – operator – operator IN BOOLEAN MODEIN BOOLEAN MODE

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

Page 70: Wstęp do Baz Danych

Wyszukiwanie w trybie Wyszukiwanie w trybie logicznymlogicznym

Przykłady:Przykłady: rock jazzrock jazz słowa słowa rockrock LUB LUB jazzjazz +rock +jazz+rock +jazz słowa słowa rockrock ORAZ ORAZ jazzjazz +rock jazz+rock jazz słowo słowo rockrock musi wystąpić, musi wystąpić,

słowo słowo jazzjazz zwiększa zwiększa scorescore +rock -jazz+rock -jazz słowo słowo rockrock musi wystąpić, musi wystąpić,

słowo słowo jazzjazz nie może wystąpić nie może wystąpić "rock music""rock music" musi wystąpić fraza musi wystąpić fraza rock rock

musicmusic rock*rock* pasują m.in. pasują m.in. rockrock, , rocksrocks, ,

rockingrocking

Page 71: Wstęp do Baz Danych

Funkcje SQLFunkcje SQL

Język SQL udostępnia szereg funkcji umożliwiających Język SQL udostępnia szereg funkcji umożliwiających wykonywanie operacji na danych w zapytaniach.wykonywanie operacji na danych w zapytaniach.

Funkcje:Funkcje: matematycznematematyczne tekstowetekstowe daty i czasudaty i czasu

Funkcje te mogą być wykorzystywane w instrukcji Funkcje te mogą być wykorzystywane w instrukcji SELECT, w warunku wyboru kolumn lub w warunku SELECT, w warunku wyboru kolumn lub w warunku wyboru wierszy.wyboru wierszy.

Page 72: Wstęp do Baz Danych

Funkcje SQLFunkcje SQL

Przykład stosowania funkcji w instrukcji SELECTPrzykł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 Użycie w warunku wyboru kolumn – zamienia litery na wielkie w zwracanych danych:wielkie w zwracanych danych:

Użycie w warunku wyboru rekordu – zawartość pola Użycie w warunku wyboru rekordu – zawartość pola po konwersji musi odpowiadać warunkowi:po konwersji musi odpowiadać warunkowi:

SELECT UPPER(wykonawca) FROM albumy;SELECT UPPER(wykonawca) FROM albumy;

SELECT * FROM albumySELECT * FROM albumyWHERE UPPER(wykonawca)='U2';WHERE UPPER(wykonawca)='U2';

Page 73: Wstęp do Baz Danych

Funkcje matematyczne (1)Funkcje matematyczne (1)

ABS(x) – wartość bezwzględnaABS(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/NMOD(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łkowitejROUND(x) – zaokrąglenie do najbliższej l. całkowitej m DIV n – część całkowita z dzielenia m/nm DIV n – część całkowita z dzielenia m/n EXP(x) – eEXP(x) – exx

LN(x), LOG2(x), LOG10(x), LOG(b,x) – logarytmyLN(x), LOG2(x), LOG10(x), LOG(b,x) – logarytmy POWER(x,y) = xPOWER(x,y) = xyy

Page 74: Wstęp do Baz Danych

Funkcje matematyczne c.d.Funkcje matematyczne c.d.

SQRT(x) – pierwiastek kwadratowySQRT(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 CRC32('wyr') – kod CRC wyrażenia wyrwyr RAND() – liczba losowa od 0 do 1RAND() – liczba losowa od 0 do 1 LEAST(x,y,...) – najmniejsza wartość z listyLEAST(x,y,...) – najmniejsza wartość z listy GREATEST(x,y,...) – największa wartość z listyGREATEST(x,y,...) – największa wartość z listy DEGREES(x), RADIANS(x) – konwersja stopnie/radianyDEGREES(x), RADIANS(x) – konwersja stopnie/radiany TRUNCATE(x,d) – skrócenie TRUNCATE(x,d) – skrócenie xx do do dd miejsc po przecinku miejsc po przecinku

Page 75: Wstęp do Baz Danych

Funkcje tekstoweFunkcje tekstowe

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

Page 76: Wstęp do Baz Danych

Funkcje tekstowe (2)Funkcje tekstowe (2)

LPAD(s1,n,s2) – poprzedza LPAD(s1,n,s2) – poprzedza s1s1 ciągiem ciągiem s2s2 do długości do długości nn RPAD(s1,n,s2) – dopisuje do RPAD(s1,n,s2) – dopisuje do s1s1 ciąg ciąg s2s2 do długości do długości nn LEFT(s,n) – LEFT(s,n) – nn pierwszych znaków z napisu pierwszych znaków z napisu ss RIGHT(s,n) – RIGHT(s,n) – nn ostatnich znaków z napisu ostatnich znaków z napisu ss SUBSTRING(s,m,n) – SUBSTRING(s,m,n) – nn znaków z napisu znaków z napisu ss od poz. od poz. mm SUBSTRING_INDEX(s,sep,n) – część napisu SUBSTRING_INDEX(s,sep,n) – część napisu s s przedprzed

nn-tym wystąpieniem separatora -tym wystąpieniem separatora sepsep LTRIM(s) – usuwa początkowe spacjeLTRIM(s) – usuwa początkowe spacje RTRIM(s) – usuwa końcowe spacjeRTRIM(s) – usuwa końcowe spacje TRIM(s) – usuwa początkowe i końcowe spacjeTRIM(s) – usuwa początkowe i końcowe spacje SPACE(n) – napis złożony z SPACE(n) – napis złożony z nn spacji spacji

Page 77: Wstęp do Baz Danych

Funkcje tekstowe (3)Funkcje tekstowe (3)

REPLACE(s1,s2,s3) – zamień REPLACE(s1,s2,s3) – zamień s2s2 na na s3s3 w napisie w napisie s1s1 REPEAT(s,n) – napis z REPEAT(s,n) – napis z nn powtórzeń powtórzeń ss REVERSE(s) – odwraca napis REVERSE(s) – odwraca napis ss INSERT(s1,m,n,s2) – wstawia INSERT(s1,m,n,s2) – wstawia nn znaków znaków s2s2 do do s1s1 na poz. na poz. mm ELT(n,s1,s2,...) – zwraca ELT(n,s1,s2,...) – zwraca nn-ty napis ze zbioru-ty napis ze zbioru FIELD(s,s1,s2,...) – zwraca indeks napisu FIELD(s,s1,s2,...) – zwraca indeks napisu ss w zbiorze w zbiorze LOWER(s) – zmienia litery na małeLOWER(s) – zmienia litery na małe UPPER(s) – zmienia litery na wielkieUPPER(s) – zmienia litery na wielkie LOAD_FILE(plik) – odczytuje zawartość plikuLOAD_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ówSTRCMP(s1,s2) – porównanie dwóch napisów

Page 78: Wstęp do Baz Danych

Funkcje daty i czasu (1)Funkcje daty i czasu (1)

DATE(s) – pobiera datę z wyrażenia DATE(s) – pobiera datę z wyrażenia ss TIME(s) - pobiera czas z wyrażenia TIME(s) - pobiera czas z wyrażenia ss TIMESTAMP(s) – pobiera datę i czas z wyrażenia TIMESTAMP(s) – pobiera datę i czas z wyrażenia ss DAYOFWEEK(data) – podaje dzień tygodniaDAYOFWEEK(data) – podaje dzień tygodnia DAYOFMONTH(data) – podaje dzień miesiącaDAYOFMONTH(data) – podaje dzień miesiąca DAYOFYEAR(data) – podaje dzień w rokuDAYOFYEAR(data) – podaje dzień w roku MONTH(data) – podaje numer miesiącaMONTH(data) – podaje numer miesiąca DAYNAME(data) – podaje nazwę dniaDAYNAME(data) – podaje nazwę dnia MONTHNAME(data) – podaje nazwę miesiącaMONTHNAME(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)

Page 79: Wstęp do Baz Danych

Funkcje daty i czasu (2)Funkcje daty i czasu (2)

YEAR(data) – podaje rokYEAR(data) – podaje rok YEARWEEK(data) – podaje rok i numer tygodniaYEARWEEK(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 sekundyMICROSECOND(data) – podaje ułamki sekundy PERIOD_ADD(p,m) – dodaje PERIOD_ADD(p,m) – dodaje mm miesięcy do daty miesięcy do daty pp PERIOD_DIFF(p1,p2) – różnica dwóch datPERIOD_DIFF(p1,p2) – różnica dwóch dat DATE_ADD(data, INTERVAL wyr typ)DATE_ADD(data, INTERVAL wyr typ)

– dodaje do daty podany czas– dodaje do daty podany czas DATE_SUB(data, INTERVAL wyr typ) – odejmowanie datyDATE_SUB(data, INTERVAL wyr typ) – odejmowanie daty

Page 80: Wstęp do Baz Danych

Funkcje daty i czasu (3)Funkcje daty i czasu (3)

ADDDATE(data,n) – dodaje ADDDATE(data,n) – dodaje nn dni do daty dni do daty SUBDATE(data,n) – odejmuje SUBDATE(data,n) – odejmuje nn dni od daty dni od daty ADDTIME(s1,s2) – dodawanie czasuADDTIME(s1,s2) – dodawanie czasu SUBTIME(s1,s2) – odejmowanie czasuSUBTIME(s1,s2) – odejmowanie czasu EXTRACT(typ FROM data) – pobranie części datyEXTRACT(typ FROM data) – pobranie części daty TO_DAYS(data) – zamienia datę na numer dniaTO_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 datyDATE_FORMAT(data,format) – formatowanie daty TIME_FORMAT(czas,format) – formatowanie czasuTIME_FORMAT(czas,format) – formatowanie czasu

Page 81: Wstęp do Baz Danych

Funkcje daty i czasu (4)Funkcje daty i czasu (4)

MAKEDATE(rok,dzień) – podaje datęMAKEDATE(rok,dzień) – podaje datę MAKETIME(godz,min,sek) – podaje czasMAKETIME(godz,min,sek) – podaje czas CURDATE() – bieżąca dataCURDATE() – bieżąca data CURTIME() – bieżący czasCURTIME() – bieżący czas NOW() – bieżąca data i czasNOW() – bieżąca data i czas UNIX_TIMESTAMP() – bieżąca data i czas w formacie UNIX_TIMESTAMP() – bieżąca data i czas w formacie

UNIXUNIX SEC_TO_TIME(sek) – konwersja sekund na czasSEC_TO_TIME(sek) – konwersja sekund na czas TIME_TO_SEC(czas) – konwersja czasu na sekundyTIME_TO_SEC(czas) – konwersja czasu na sekundy

Page 82: Wstęp do Baz Danych

Przykład operacji na datachPrzykład operacji na datach

Dodawanie i odejmowanieDodawanie i odejmowanie DATE_ADD('1997-12-31 23:59:59', INTERVAL 1 DAY);DATE_ADD('1997-12-31 23:59:59', INTERVAL 1 DAY); DATE_ADD('1997-12-31 23:59:59', DATE_ADD('1997-12-31 23:59:59',

INTERVAL '1:1' MINUTE_SECOND);INTERVAL '1:1' MINUTE_SECOND); DATE_SUB('1998-01-02', INTERVAL 31 DAY);DATE_SUB('1998-01-02', INTERVAL 31 DAY);

Pobranie części datyPobranie części daty EXTRACT(YEAR FROM "1999-07-02");EXTRACT(YEAR FROM "1999-07-02");

Formatowanie datyFormatowanie daty DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');

Page 83: Wstęp do Baz Danych

Inne funkcje (1)Inne funkcje (1)

DATABASE() – nazwa bieżącej bazy danychDATABASE() – nazwa bieżącej bazy danych USER() – nazwa bieżącego użytkownikaUSER() – nazwa bieżącego użytkownika PASSWORD(s) – koduje napis PASSWORD(s) – koduje napis ss jako hasło jako hasło ENCRYPT(s) – koduje napis ENCRYPT(s) – koduje napis ss ENCODE(s,pass) – koduje napis ENCODE(s,pass) – koduje napis ss przy użyciu hasła przy użyciu hasła passpass DECODE(s,pass) – dekoduje napis DECODE(s,pass) – dekoduje napis ss przy użyciu hasła przy użyciu hasła passpass COMPRESS(s) – kompresja napisu COMPRESS(s) – kompresja napisu ss UNCOMPRESS(s) – dekompresja napisu UNCOMPRESS(s) – dekompresja napisu ss LAST_INSERT_ID() – ostatnio użytaLAST_INSERT_ID() – ostatnio użyta wartość wartość

AUTO_INCREMENTAUTO_INCREMENT

Page 84: Wstęp do Baz Danych

Inne funkcje (2)Inne funkcje (2)

FORMAT(n,d) – formatuje liczbę FORMAT(n,d) – formatuje liczbę nn do do dd miejsc miejsc dziesiętnychdziesiętnych

VERSION() – wersja bazy danych MySQLVERSION() – wersja bazy danych MySQL CONNECTION_ID() – identyfikator połączeniaCONNECTION_ID() – identyfikator połączenia BENCHMARK(n,wyr) – oblicza czas wykonania BENCHMARK(n,wyr) – oblicza czas wykonania

wyrwyr ( (nn razy) razy) FOUND_ROWS() – liczba rekordów z ostatniego FOUND_ROWS() – liczba rekordów z ostatniego

SELECTSELECT

Page 85: Wstęp do Baz Danych

TransakcjeTransakcje

Domyślnie wszystkie instrukcje są wykonywane od razu Domyślnie wszystkie instrukcje są wykonywane od razu po ich wprowadzeniu – zmiana danych w bazie.po ich wprowadzeniu – zmiana danych w bazie.

W pewnych sytuacjach nie chcemy aby wykonywane W pewnych sytuacjach nie chcemy aby wykonywane operacje modyfikowały fizyczny zbiór danych.operacje modyfikowały fizyczny zbiór danych.

Tryb transakcji – wprowadzane operacje zostaną Tryb transakcji – wprowadzane operacje zostaną wykonane dopiero po podaniu odpowiedniej komendy.wykonane dopiero po podaniu odpowiedniej komendy.

MySQL obsługuje kilka typów tabel, nie wszystkie MySQL obsługuje kilka typów tabel, nie wszystkie umożliwiają przeprowadzanie transakcjiumożliwiają przeprowadzanie transakcji

Page 86: Wstęp do Baz Danych

TransakcjeTransakcje

START TRANSACTIONSTART TRANSACTION – – rozpoczęcie transakcjirozpoczęcie transakcji

Kolejne operacje są zapamiętywane, ale nie są wykonywane.Kolejne operacje są zapamiętywane, ale nie są wykonywane.

COMMITCOMMIT – wykonanie operacji z całej transakcji – wykonanie operacji z całej transakcji ROLLBACKROLLBACK – cofnięcie do początku transakcji – cofnięcie do początku transakcji

Niektóre komendy automatycznie wykonują COMMIT, Niektóre komendy automatycznie wykonują COMMIT, np. CREATE INDEX, DROP INDEX, DROP TABLE, np. CREATE INDEX, DROP INDEX, DROP TABLE, DROP DATABASE, ALTER TABLE, RENAME TABLE, DROP DATABASE, ALTER TABLE, RENAME TABLE, TRUNCATETRUNCATE

Page 87: Wstęp do Baz Danych

TransakcjeTransakcje

Możliwe jest ustawienie w trakcie transakcji punktów Możliwe jest ustawienie w trakcie transakcji punktów zapisu za pomocą komendyzapisu za pomocą komendySAVEPOINT SAVEPOINT nazwanazwa

Wykonanie komendyWykonanie komendyROLLBACK TO SAVEPOINT ROLLBACK TO SAVEPOINT nazwanazwa

powoduje cofnięcie do punktu zapisu o podanej nazwiepowoduje cofnięcie do punktu zapisu o podanej nazwie

COMMIT nadal wykonuje całą transakcję.COMMIT nadal wykonuje całą transakcję.

Page 88: Wstęp do Baz Danych

Blokowanie tabelBlokowanie tabel

W pewnych sytuacjach potrzebne jest czasowe W pewnych sytuacjach potrzebne jest czasowe zablokowanie tabeli, aby inny użytkownik nie zablokowanie tabeli, aby inny użytkownik nie zmodyfikował danych.zmodyfikował danych.

Blokowanie:Blokowanie:LOCK TABLES LOCK TABLES tabela1tabela1 typtyp, , tabela2tabela2 typtyp, ... ;, ... ;Typ blokady:Typ blokady:

READREAD – blokada do odczytu – blokada do odczytu WRITEWRITE – blokada do zapisu – blokada do zapisu

Odblokowanie tabel:Odblokowanie tabel:UNLOCK TABLES;UNLOCK TABLES;

Page 89: Wstęp do Baz Danych

Typy tabel w MySQLTypy tabel w MySQL

MySQL obsługuje różne standardy zapisywania tabel.MySQL obsługuje różne standardy zapisywania tabel.

Typy nie udostępniające mechanizmu transakcji:Typy nie udostępniające mechanizmu transakcji: MyISAMMyISAM (domyślny), (domyślny), ISAMISAM (stary), (stary), HEAPHEAP, , MERGEMERGE

Typy udostępniające mechanizm transakcji i blokowania:Typy udostępniające mechanizm transakcji i blokowania: InnoDBInnoDB, , BDBBDB

Indeks pełnego tekstu (FULLTEXT) działa tylko w Indeks pełnego tekstu (FULLTEXT) działa tylko w tabelach MyISAM.tabelach MyISAM.

Page 90: Wstęp do Baz Danych

Typy tabel w MySQLTypy 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 Aby utworzyć tabelę innego typu, należy podać żądany

typ na końcu instrukcji:typ na końcu instrukcji:

Zmiana typu tabeli (w praktyce utworzenie nowej tabeli, Zmiana typu tabeli (w praktyce utworzenie nowej tabeli, przepisanie danych i usunięcie starej tabeli):przepisanie danych i usunięcie starej tabeli):

CREATE TABLE nazwa (CREATE TABLE nazwa (definicjadefinicja) TYPE=InnoDB;) TYPE=InnoDB;

ALTER TABLE nazwa TYPE=InnoDB;ALTER TABLE nazwa TYPE=InnoDB;

Page 91: Wstęp do Baz Danych

Autoryzacja dostępu do bazyAutoryzacja dostępu do bazy

System zarządzania bazą danych obsługuje tzw. System zarządzania bazą danych obsługuje tzw. system system przywilejówprzywilejów ( (privilege systemprivilege system):): autoryzacja użytkownika łączącego się z bazą z określonego autoryzacja użytkownika łączącego się z bazą z określonego

komputera (login, hasło),komputera (login, hasło), określenie praw do wykonywania poszczególnych operacji na określenie praw do wykonywania poszczególnych operacji na

bazie danych (przywileje)bazie danych (przywileje)

Przywileje są ustalane na podstawie:Przywileje są ustalane na podstawie: nazwy użytkownikanazwy użytkownika nazwy sieciowej komputera klientanazwy sieciowej komputera klienta operacji, którą chce wykonać użytkownikoperacji, którą chce wykonać użytkownik

Page 92: Wstęp do Baz Danych

Autoryzacja dostępu do bazyAutoryzacja dostępu do bazy

Sprawdzanie przywilejów odbywa się na dwóch Sprawdzanie przywilejów odbywa się na dwóch poziomachpoziomach

Poziom 1 – połączenie z baząPoziom 1 – połączenie z bazą Sprawdzanie czy użytkownik o podanej nazwie ma prawo połączyć Sprawdzanie czy użytkownik o podanej nazwie ma prawo połączyć

się z bazą z danego komputerasię z bazą z danego komputera

Poziom 2 – wykonanie operacjiPoziom 2 – wykonanie operacji Sprawdzanie czy użytkownik ma prawo wykonać żądaną operację Sprawdzanie czy użytkownik ma prawo wykonać żądaną operację

na danych w określonej tabeli.na danych w określonej tabeli.

Page 93: Wstęp do Baz Danych

Użytkownicy i hasłaUżytkownicy i hasła

Użytkownik łącząc się z bazą podaje swój identyfikator (login) oraz Użytkownik łącząc się z bazą podaje swój identyfikator (login) oraz hasło (jeżeli jest ustawione).hasło (jeżeli jest ustawione).

Identyfikatory i hasła bazy MySQL są niezależne od identyfikatorów Identyfikatory i hasła bazy MySQL są niezależne od identyfikatorów i haseł systemu operacyjnego.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) Jeżeli nie podany zostanie identyfikator użytkownika, (-u) przyjmowany jest identyfikator (login) systemowy bieżącego przyjmowany jest identyfikator (login) systemowy bieżącego użytkownika.użytkownika.

Opcja -p wymaga podania hasłaOpcja -p wymaga podania hasła

mysql -h serwer -u użytkownik -p baza_danychmysql -h serwer -u użytkownik -p baza_danych

Page 94: Wstęp do Baz Danych

Nadawanie praw dostępuNadawanie praw dostępu

Nadanie praw wykonywania określonych operacji na Nadanie praw wykonywania określonych operacji na danych w bazie:danych w bazie:

GRANTGRANT przywilejprzywilej ( (kolumny_tabelikolumny_tabeli))

ONON baza_danychbaza_danych..tabelatabela

TOTO użytkownikużytkownik@@hosthost IDENTIFIED BYIDENTIFIED BY ' 'hasłohasło';';

Odbieranie praw dostępu:Odbieranie praw dostępu:

REVOKEREVOKE przywilejprzywilej ( (kolumny_tabelikolumny_tabeli))

ONON baza_danychbaza_danych..tabelatabela

FROMFROM użytkownikużytkownik@@hosthost;;

Page 95: Wstęp do Baz Danych

Rodzaje przywilejówRodzaje przywilejów

ALL – prawo do wykonywania wszystkich operacjiALL – 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ówFILE – ładowanie danych z/do plików INDEX – tworzenie i usuwanie indeksówINDEX – 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 prawUSAGE – bez żadnych praw

Page 96: Wstęp do Baz Danych

Poziomy przywilejówPoziomy przywilejów

Przywileje dostępu do danych (ON) mogą Przywileje dostępu do danych (ON) mogą dotyczyć:dotyczyć: wszystkich baz danych na serwerze (poziom wszystkich baz danych na serwerze (poziom

globalny):globalny):GRANT ... ON *.*GRANT ... ON *.*

wszystkich tabel w określonej bazie:wszystkich tabel w określonej bazie:GRANT ... ON GRANT ... ON baza_danychbaza_danych.*.*

określonej tabeli:określonej tabeli:GRANT ... ON GRANT ... ON baza_danychbaza_danych..tabelatabela

pojedynczych kolumn w określonej tabelipojedynczych kolumn w określonej tabeli

Page 97: Wstęp do Baz Danych

Przywileje dla użytkownikówPrzywileje dla użytkowników

Przywileje dla użytkowników (TO)Przywileje dla użytkowników (TO) użytkownik użytkownik useruser z dowolnego komputera: z dowolnego komputera:

user@'%'user@'%' użytkownik użytkownik useruser z komputera w domenie: z komputera w domenie:

user@'%.eti.pg.gda.pl'user@'%.eti.pg.gda.pl' użytkownik z określonego komputera:użytkownik z określonego komputera:

[email protected]@sound.eti.pg.gda.pluser@localhostuser@[email protected]@153.19.49.25

Page 98: Wstęp do Baz Danych

Ustawianie hasłaUstawianie hasła

Domyślnie utworzony użytkownik nie posiada hasła, o ile nie użyta Domyślnie utworzony użytkownik nie posiada hasła, o ile nie użyta zostanie opcja IDENTIFIED BY.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';GRANT ALL ON *.* TO user IDENTIFIED BY 'hasło';

SET PASSWORD FOR user = PASSWORD('hasło');SET PASSWORD FOR user = PASSWORD('hasło');

Page 99: Wstęp do Baz Danych

Prawa dostępu – przykładyPrawa dostępu – przykłady

Nadanie wszystkich praw do bazy Nadanie wszystkich praw do bazy forumforum dla użytkownika dla użytkownika wwwwww łączącego się z serwerałączącego się z serwera

Nadanie wybranych praw do tabeli Nadanie wybranych praw do tabeli danedane użytkownikowi użytkownikowi robertrobert łączącemu się z podanej domenyłączącemu się z podanej domeny

Uwaga – ta instrukcja jest niebezpieczna!Uwaga – ta instrukcja jest niebezpieczna!

GRANT ALL ON forum.* TO www;GRANT ALL ON forum.* TO www;

GRANT SELECT,INSERT,UPDATE ON forum.dane GRANT SELECT,INSERT,UPDATE ON forum.dane TO robert@'%.eti.pg.gda.pl' TO robert@'%.eti.pg.gda.pl' IDENTIFIED BY ‘robert_haslo';IDENTIFIED BY ‘robert_haslo';

GRANT ALL ON *.* TO joe@'%';GRANT ALL ON *.* TO joe@'%';

Page 100: Wstęp do Baz Danych

Administrator bazy danychAdministrator bazy danych

Użytkownik Użytkownik rootroot ma prawo dostępu do całej bazy – jest ma prawo dostępu do całej bazy – jest administratorem bazy.administratorem bazy.

Po zainstalowaniu MySQL każdy może zalogować się jako Po zainstalowaniu MySQL każdy może zalogować się jako rootroot bez bez hasła. Zatem należy ustawić hasło z linii poleceń: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;mysql -u root mysql;

SET PASSWORD FOR root = PASSWORD('tajnehaslo');SET PASSWORD FOR root = PASSWORD('tajnehaslo');

mysqladmin -u root password tajnehaslo;mysqladmin -u root password tajnehaslo;

Page 101: Wstęp do Baz Danych

Dodawanie użytkownikówDodawanie użytkowników

Dodanie użytkownika z jednoczesnym nadaniem praw dostępu Dodanie użytkownika z jednoczesnym nadaniem praw dostępu do danych:do danych:

Dodanie użytkownika bez nadania praw:Dodanie użytkownika bez nadania praw:

Dodanie na końcu opcji WITH GRANT OPTION pozwala Dodanie na końcu opcji WITH GRANT OPTION pozwala użytkownikowi na przekazywanie praw innym użytkownikom.użytkownikowi na przekazywanie praw innym użytkownikom.

GRANT ALL ON baza.* TO user IDENTIFIED BY 'haslo1';GRANT ALL ON baza.* TO user IDENTIFIED BY 'haslo1';

GRANT USAGE ON baza.* TO user GRANT USAGE ON baza.* TO user IDENTIFIED BY 'haslo2';IDENTIFIED BY 'haslo2';