Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

53
MySQL jako przykład darmowego systemu bazodanowego Autor: KatMPB

description

Kurs MySQL i SQL, bazy danych, prezentacja ppt, pdf - tworzenie stron www, porady, trening, kurs internetowy online

Transcript of Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Page 1: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

MySQL jako przykład darmowego systemu bazodanowego

Autor: KatMPB

Page 2: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 2

Wstęp – o czym będzie mowa

Wprowadzenie do MySQL: System zarządzania bazą danych Czym jest MySQL Historia MySQL Architektura MySQL Licencja GPL

SQL widziany z punktu widzenia MySQL Administrowanie MySQL

Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)

Instalowanie i uruchamianie MySQL

Page 3: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 3

Wstęp – o czym będzie mowa

Konfigurowanie i zarządzanie uprawnieniami użytkowników

Tabele do przechowywania uprawnień Pliki konfiguracyjne Kopie zapasowe

Dostęp do MySQL z programów napisanych w języku Java

Dostęp do MySQL z programów napisanych w języku PHP

Dostęp do MySQL z programów napisanych w językach C i C++

Transakcje

Page 4: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 4

Wprowadzenie do MySQL

System zarządzania bazą danych (DBMS) jest zorganizowanym zbiorem narzędzi umożliwiającym dostęp i zarządzanie jedną lub więcej bazami danych. DBMS jest powłoką, która otacza bazę danych i za pomocą której dokonują się wszystkie operacje na bazie danych. Funkcje realizowane przez większość DBMS zaliczamy do trzech grup:-pielęgnacja danych-wyszukiwanie danych-kontrola danych

Page 5: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 5

Wprowadzenie do MySQL

Czym jest MySQL?

Jest to system zarządzania bazą danych oparty na relacyjnym modelu danych i wykorzystujący standard języka SQL.(ver 4.0 [4.1] wykorzystuje standard SQL 92).

System działa na na niemal każdej platformie UNIX, w tym systemach zbliżonych do Uniksa, na przykład Solaris, FreeBSD, czy Linux; działa również na platformie Windows.System MySQL jest bezpłatny; można także ściągnąć jego kod źródłowy.

Page 6: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 6

Wprowadzenie do MySQL

Historia MySQL

System MySQL powstał w połowie lat dziewięćdziesiątych.Jego autorem był Michael ‘Monty’ Widenius ze szwedzkiej firmy TcX DataKonsult AB. Pierwsza powszechnie dostępna wersja została wydana w maju 1995 roku. (mSQL->MySQL)

Obecnie rozwojem MySQL zajmuje się firma MySQL AB.

Page 7: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 7

Wprowadzenie do MySQL

Architektura MySQL

Jest to przykład systemu bazującego na architekturze klient-serwer.Jeżeli korzystamy z sieci możemy oddzielić programy klienckie od naszego serwera i tworzyć aplikacje pasujące do środowiska wykorzystywanego przez użytkownika na przykład Windows czy Linux.Sercem instalacji MySQL jest proces serwera bazy danych. Jest on wykonywany na jednym serwerze. MySQL nie posiada jeszcze funkcji rozproszenie obciążenia na kilka serwerów, jednak serwer MySQL potrafi korzystać z kilku procesorów zainstalowanych na jednym komputerze.

Uwaga! - Dla każdego połączenia klient-serwer jest tworzony oddzielny proces MYSQLD.

Page 8: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 8

Wprowadzenie do MySQL

Server

MYSQLD

Wielu klientów

DATABASE

Jednoczesny dostęp klientów

Klient (ODBC, JDBC)

Klient

windows

TCP/IP

linux

TCP/IP

Page 9: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 9

Wprowadzenie do MySQL

Licencja open source

MySQL jest przykładem otwartego oprogramowania open source.

Termin open source oznacza, że oprogramowanie jest dostarczone wraz z jego kodem źródłowym. Licencja MySQL-a (GPL – General Public License) pozwala na jego używanie bez ograniczeń. Jeśli jednak chcemy wbudować MySQL w swój komercyjny produkt, potrzebna jest osobna licencja.

Page 10: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 10

SQL widziany z punktu widzenia MySQL Złączenia (klucze obce) Podzapytania Indeksy Integralność danych (integralność: encji,

referencyjna, dziedziny, asercje) Perspektywy Procedury serwera STORED PROCEDURES

(funkcje serwera) Przełączniki typu TRIGGER (wyzwalacze)

Uwaga! - Wszystkie podpunkty będą omówione na przykładach.

Page 11: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 11

SQL widziany z punktu widzenia MySQL

create table faktury (numer int primary key,dostawca char(32) not null,data datetime not null default getdate()

) type=InnoDB;

create table pozycje (nrfaktury int not null,numer int not null,towar char(24) not null,ilosc int not null,cena money not null,CONSTRAINT pozycje_faktury FOREIGN KEY (nrfaktury) REFERENCES faktury(numer),primary key (nrfaktury, numer)

) type=InnoDB;

Złączenia (klucze obce)

Aby mówić o kluczach obcych w MySQL tabele muszą być typu InnoDB (od ver 4.0)

Page 12: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 12

SQL widziany z punktu widzenia MySQL

Złączenia (klucze obce)

Typy tabel:

- HEAP (brak obsługi transakcji, dane przechowywane w pamięci, szybki dostęp, są usuwane po zakończeni pracy serwera)- ISAM- MyISAM (brak obsługi transakcji, domyślny typ tabel)- MARGE (brak obsługi transakcji, stosowane do łączenia kilku tabel w jedną, bardzo duże zbiory danych)- BDB (obsługa transakcji)- InnoDB (obsługa transakcji, posiada obsługę mechanizmu kluczy obcych)

Page 13: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 13

SQL widziany z punktu widzenia MySQL

Złączenia

-Złączenia własne

create table part ( part_id INT, description VARCHAR(32), parent_part_id INT );

insert into part (part_id, description, parent_part_id) values (1, ‘table and chairs’, NULL);

insert into part (part_id, description, parent_part_id) values (2, ‘chair’, 1);

insert into part (part_id, description, parent_part_id) values (3, ‘table’, 1);

select p1.description as „Combined”, p2.description as „Parts” from part p1, part p2 where p1.part_id = p2.parent_part_id;

Page 14: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 14

SQL widziany z punktu widzenia MySQL

Złączenia

-Złączenia zewnętrzne (zostały po raz pierwszy ustandaryzowane w SQL 92)Niektóre rzadko używane typy tych złączeń nie są używane.

select * from faktury, pozycje where faktury.numer = pozycje.numerf;

select * from faktury LEFT OUTER JOIN pozycje on faktury.numer = pozycje.numerf;

Page 15: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 15

SQL widziany z punktu widzenia MySQL

Podzapytania nie są obsługiwane przez wersje 4.0 włącznie.Wprowadzono je dopiero od wersji 4.1.

select NazwiskoPrac, NazwaWydziału, Pensjafrom Wykładowcy Lwhere Pensja >

(select avg(Pensja) from Wykładowcy where L.NazwaWydziału = NazwaWydziału);

Opis zadania:

Wypisz listę nazwisk pracowników, nazw wydziałów i pensji wszystkich wykładowców, którzy zarabiają więcej niż wynosi średniapensja pracownika ich wydziału.

Page 16: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 16

SQL widziany z punktu widzenia MySQL

Indeksy są niewielką kopią całej tabeli wstępnie posortowaną.

create index nazwa_indeksu on nazwa_tabeli (nazwa_kolumny_1, … );

Page 17: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 17

SQL widziany z punktu widzenia MySQL

Integralność danych

-Integralność encji jest realizowana przez klucze główne-Integralność referencyjna jest realizowana przez klucze obce-Integralność dziedziny

create table nazwa (…pole int,…CHECK (pole BETWEEN 100 AND 1000),…

)Klauzula CHECK służy do wymuszenia integralności dziedziny, nie jest wspierana przez MySQL do ver 4.1 włącznie.

CREATE DOMAIN – polecenie SQL służące do definiowania typów kolumn.

Page 18: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 18

SQL widziany z punktu widzenia MySQL

Integralność danych

-Asercje nie są wspierane przez MySQL do ver 4.1 włącznie.

Więzy mogą być nazywane i określane niezależnie od jakiejkolwiek tabelilub dziedziny. W takim przypadku więzy są nazywane asercjami.Możemy na przykład zdefiniować asercje dla jakieś tabeli i gdy dowolnainstrukcja SQL dokonuje wstawienia, modyfikacji bądź usunięcia wiersza tabeli, istnieje możliwość, że więzy mogą zostać naruszone.

Sprawdzanie więzów może odbywać się w trybie natychmiastowym bądźw trybie opóźnionym (na koniec transakcji).

Page 19: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 19

SQL widziany z punktu widzenia MySQL

Perspektywy i procedury serwera (funkcje serwera) są wspierane od wersji 5.0)

Uwaga! - W związku z tym, że baza danych w wersji 5 znajduje się w fazietestowej nie będę opisywał zasad tworzenia perspektyw, czy procedur w MySQL.Uwaga2! - Programiści z firmy MySQL AB postawili sobie ambitny cel: mianowicie MySQL w wersji 5 ma wspierać w pełni standard języka SQL (SQL 92 / SQL 99). Przełączniki typu TRIGGER (wyzwalacze) będą prawdopodobnie wspierane od wersji 5.1.

Pisanie procedur czy funkcji składowanych na serwerze odbywa się dzięki dodatkowej składni SQL wprowadzonej do MySQL, inaczej ma się sprawa w systemie Oracle gdzie pisanie kodu odbywa się w języku PL/SQL.

Page 20: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 20

Administrowanie MySQL

Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)

Instalowanie i uruchamianie MySQL Konfigurowanie i zarządzanie uprawnieniami

użytkowników Tabele do przechowywania uprawnień Pliki konfiguracyjne Kopie zapasowe

Page 21: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 21

Administrowanie MySQL

Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)

Administrator danych jest to osoba która pełni funkcję nad administrowaniem danych. Administrowanie danymi jest funkcją związaną z zarządzaniem, planowaniem i dokumentowaniem zasobów danych w przedsiębiorstwie.

Administrator bazy danych będzie zaangażowany w projektowanie fizyczne systemów baz danych. W zakresie zarządzania danymi administrator systemów baz danych. W zakresie zarządzania danymi administrator bazy danych będzie zajmował się zwłaszcza problematyką kontroli danych; bazy danych będzie zajmował się zwłaszcza problematyką kontroli danych; jest on również odpowiedzialny za tworzenie kopii zapasowych baz danych.jest on również odpowiedzialny za tworzenie kopii zapasowych baz danych.

Page 22: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 22

Administrowanie MySQL

Ogólne pojęcia (różnica między administratorem bazy danych a administratorem danych)

Głównym narzędziem administratora danych i administratora bazy danych jest słownik danych.

Słownik danych jest sposobem zapisywania metadanych przedsiębiorstwa, to znaczy danych na temat danych (koncepcyjne słowniki danych, logiczne słowniki danych i fizyczne słowniki danych).

Koncepcyjne i logiczne słowniki danych są zazwyczaj domeną administratora danych. Fizyczne słowniki danych są domeną administratora bazy danych.

Uwaga! – Administrator bazy danych w wielu przypadkach pełni funkcję administratora danych. Administrator danych będzie uczestniczył w analizie i projektowaniu systemu baz danych.Administrator baz danych będzie zaangażowany w projektowanie fizyczne systemów baz danych.

Page 23: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 23

Administrowanie MySQL

Instalowanie i uruchamianie MySQL

System LINIUX:

- Instalowanie MySQL z kodu źródłowego (pozostawiam użytkownikowi).

- Instalowanie MySQL z pakietów binarnych (następny slajd).

Page 24: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 24

Administrowanie MySQL

Instalowanie i uruchamianie MySQL z pakietów binarnych (RPM)

Aby utworzyć w pełni działającą instalację należy pobrać i zainstalować podstawowy pakiet serwera z listy pakietów wymienionych poniżej:

- MySQL.rpm (podstawowy pakiet serwera)- MySQL-bench.rpm- MySQL-client.rpm (aplikacja klienta MySQL)- MySQL.devel.rpm (pliki nagłówkowe i biblioteki niezbędne w programowaniu)- MySQL-shared.rpm- MySQL-Max.rpm (wersja serwera mysqld-max)

Polecenie do instalacji pakietów rpm –ivh nazwa_pakietu.rpm.

Page 25: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 25

Administrowanie MySQL

Instalowanie i uruchamianie MySQL (LINUX)

Polecenie do jednorazowego uruchamiania i zatrzymywania serwera:

/etc/rc.d/init.d/mysql start/etc/rc.d/init.d/mysql stop

W czasie uruchamiania MySQL odczytuje plik konfiguracyjny /etc/my.cnf, który zawiera opcje ustalające sposób pracy serwera.

Ciekawostka! - W przypadku instalacji MySQL z pakietów binarnych domyślnieserwer jest uruchamiany na 3, 4 i 5 poziomie startowym.

Page 26: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 26

Administrowanie MySQL

Instalowanie i uruchamianie MySQL (WINDOWS)

System WINDOWS:

Instalacja jest trywialna .

Ciekawostka! - Domyślnie zainstalowanym serwerem jest serwer MySQL (niewersją MAX)

Aby to zmienić wydajemy polecenie mysql.exe -remove, a następnie mysql-max-nt.exe --install

Page 27: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 27

Administrowanie MySQL

Konfigurowanie i zarządzanie uprawnieniami użytkowników

Domyślnie podczas instalacji serwera MySQL tworzone są dwa konta użytkowników: konto administratora (root) oraz konto anonimowe.Domyślnie użytkownik root nie ma hasła.

Procedura zmiany hasła użytkownika root:1. $mysql –u root2. use mysql;3. update user set password=PASSWORD(‘tajne’) where user = ‘root’;4. FLUSH PRIVILEGES;

Uwaga! - Zaraz po zainstalowaniu MySQL zalecane jest usuwanie konta anonimowego.

Page 28: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 28

Administrowanie MySQL

Konfigurowanie i zarządzanie uprawnieniami użytkowników

Tworzenie kont użytkowników (SQL)

GRANT prawo [(lista kolumn)] ON baza_lub_tabelaTO użytkownik [IDENTIFIED BY ‘hasło’] [with grant option];FLUSH PRIVILEGES

Przykład!

grant select, inserton linuxmaniad.*to katmpb identified by „hasło”

grant allon linuxmaniad.*to katmpb@% identified by „hasło”

to katmpb@’%.kattserv.no-ip.com’ identified by „hasło”

Page 29: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 29

Administrowanie MySQL

Konfigurowanie i zarządzanie uprawnieniami użytkowników

Dostępne prawa w instrukcji GRANT:ALLALL PRIVILEGESALTERCREATEDELETEDROPFILE – pozwala na dostęp do plików zapisanych na serwerzeINDEXINSERTPROCESS – pozwala na przeglądanie informacji o procesie serweraRELOAD – pozwala na powtórne załadowanie informacji z tabeli uprawnień do serweraSELECTSHUTDOWNUPDATE

USAGE – pozwala na utworzenie konta użytkownika bez żadnych uprawnień

Page 30: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 30

Administrowanie MySQL

Konfigurowanie i zarządzanie uprawnieniami użytkowników

Usuwanie kont użytkowników (SQL)

REVOKE prawo [(lista kolumn)] ON baza_lub_tabelaFROM użytkownik;FLUSH PRIVILAGES;

Przykład!

revoke select, inserton linuxmaniad.*from katmpb@%

Uwaga! – Wykonanie polecenia GRANT i REVOKE powoduje zmiany w tabelach systemowych;

Page 31: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 31

Administrowanie MySQL

Tabele do przechowywania uprawnień

Tabele systemowe są zawarte w bazie danych mysql.

Tabelami systemowymi są:

- columns_priv- db- func- host- tables_priv- user

Wszystkie powyższe tabele z wyjątkiem func przechowują informacje na temat przydzielonych przywilejów. (Tabela func przechowuje funkcje zdefiniowane przez użytkownika).

Page 32: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 32

Administrowanie MySQL

Tabele do przechowywania uprawnień

Tabela user zawiera dane o użytkownikach, którzy są uprawnieni do logowania się do serwera MySQL (uwaga1 do prezentacji). Tabela db i host określają, które bazy danych mogą być temu użytkownikowi udostępnione (uwaga2 do prezentacji).Tabela tables_priv zawiera nazwy tych tabel, do których użytkownik ma dostęp, podobnie tabela columns_priv.

Uwaga! - Kolejność sprawdzania przywilejów jest następująca:USER->DB->HOST->TABLES_PRIV->COLUMNS_PRIV.

Page 33: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 33

Administrowanie MySQL

Pliki konfiguracyjne

MySQL posiada kilka plików pozwalających na ustawienie opcji konfiguracyjnychserwera. Pliki te umożliwiają również określenie domyślnych parametrów dlaprogramu mysqld i innych narzędzi dostarczonych wraz z MySQL. Zarówna w Windowsie (my.cnf i my.ini) jak i Linuxie (my.cnf) zawartość tych plików jest niemal identyczna.

Uwaga! – Korzystając z plików konfiguracyjnych można ustawić opcje zarówno dla serwera, jak i dla poszczególnych użytkowników (w systemie Linux).

Page 34: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 34

Administrowanie MySQL

Pliki konfiguracyjne

Przykładowy plik konfiguracyjny:

[client]

port=3306#host=192.168.0.1#user=root#password=test#database=linuxmaniad

[mysqld]

skip-lockingport=3306default-table-type=innodbbasedir=F:/mysqldatadir=F:/mysql/data

set-variable=key_buffer=16Mset-variable=max_allowed_packet=1Mset-variable=thread_stack=128Kset-variable=flush_time=1800…

…innodb_data_file_path = ibdata1:10Minnodb_data_home_dir =""innodb_log_group_home_dir =.\innodb_log_arch_dir = .\

set-variable = innodb_mirrored_log_groups=1set-variable = innodb_log_files_in_group=2set-variable = innodb_log_file_size=5Mset-variable = innodb_log_buffer_size=8Minnodb_flush_log_at_trx_commit=1innodb_log_archive=0set-variable = innodb_buffer_pool_size=16Mset-variable = innodb_additional_mem_pool_size=2Mset-variable = innodb_file_io_threads=4set-variable = innodb_lock_wait_timeout=50

[WinMySQLadmin]

Server=F:/mysql/bin/mysqld-max-nt.exeuser=rootpassword=test

Page 35: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 35

Administrowanie MySQL

Kopie zapasowe

W przypadku tabel MyISAM można tworzyć kopie zapasowe poprzez zatrzymanie bazy danych i skopiowanie wszystkich plików z katalogu bazy danych.

W przypadku tabel InnoDB jest nieco inaczej.

Pierwszy sposób:

- zatrzymanie serwera;- skopiowanie pliku <nazwa_bazy_danych>\*.frm;- skopiowanie pliku danych InnoDB;- skopiowanie pliku śladu InnoDB;- uruchomienie serwera.

Page 36: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 36

Administrowanie MySQL

Kopie zapasowe

Drugi sposób (zalecany):

Użycie programu mysqldump, który tworzy czytelny plik wynikowy.Pliki powstałe za jego pomocą można przenosić między systemami Windows – Linux.

Składnia polecenia: $mysqldump [OPCJE] baza_danych | --all-databases [tabele]

Przykład!

C:\mysql\bin\mysqldump --opt --all-databases > backup.sql/etc/bin/mysqldump –opt –all-databases > backup.sql

Opcja -opt oznacza to samo co: --quick --add-drop-table --add-locks --extended-insert --lock-tables.

Page 37: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 37

Administrowanie MySQL

Kopie zapasowe

Polecenie wewnętrzne klienta mysqla które wykonuje skrypty SQL z plikówzewnętrznych.

SOURCE <nazwa_skryptu>;

Page 38: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 38

Dostęp do MySQL z programów napisanych w języku Java

Java korzysta z biblioteki (API) dzięki którym możemy skorzystać zzewnętrznych źródeł danych. Jedną z nich jest JDBC(Java Database Connectivity) – stała się ona standardową metodądostępu do relacyjnych baz danych.

Ważne - aplikacja napisana w języku Java, korzystająca zstandardowych klas i interfejsów JDBC oraz jedynie ze standardujęzyka SQL, może być przenoszona pomiędzy bazami danych korzystającymi z różnych systemów zarządzania relacyjnymi bazamidanych.

Page 39: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 39

Dostęp do MySQL z programów napisanych w języku Java

JDBC zawiera podstawowe API JDBC oraz rozszerzone.

Część podstawowa zawiera interfejsy standardowe zawierające:

- tworzenie połączeń z bazą danych;- dostęp do wyników zapytań;- pobieranie metadanych ze zbiorów wynikowych.

(J2SE - część podstawowa, J2EE - część rozszerzona [np. transakcje rozproszone]).

Sterownik JDBC

API biblioteki JDBC definiuje jedynie interfejsy obiektów wykorzystywanych do wykonywania operacjina bazie danych. Nie zawiera implementacji klas dla tych interfejsów. Implementacje klas JDBCdostarcza najczęściej producent systemu. Zbiór tych implementacji nazywany jest sterownikiem

JDBC.

Page 40: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 40

Dostęp do MySQL z programów napisanych w języku Java

Rys. komunikacja aplikacji z systemem bazodanowym

Aplikacja kliencka napisanaw języku Java

API JDBC

Sterownik JDBC

System zewnętrzny

J2SE/J2EE

Sterowniki implementujące interfejsy zdefiniowane w API Java

Page 41: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 41

Dostęp do MySQL z programów napisanych w języku Java

Sterownik JDBC można podzielić na cztery kategorie:

-Mostek JDBC-ODBC – te sterowniki korzystają z ODBC do implementacji klasJDBC. Sterowniki te nie są zwykle przenośne, ponieważ zależą zwykle odbibliotek związanych z danym produktem.Komunikacja: JDBC->ODBC->system_bazy_danych.Przykładem tego sterownika jest sterownik JDBC-ODBC wchodzący w składpakietu J2SE).-Połączenie własne API z kodem Java-Realizacja protokołu sieciowego przy pomocy kodu Java-Kod języka Java realizujący protokół systemu bazy danych – te sterowniki sąnapisane wyłącznie w języku Java i implementują interfejsy JDBC.„Realizują one przesył danych zgodnie z protokołem używanym przez systemobsługi zewnętrznej bazy danych.”Firma MySQL-AB jest przykładem dostawcy tego właśnie sterownika.

Page 42: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 42

Dostęp do MySQL z programów napisanych w języku PHP Patrz przykłady

Uwaga! - Do programu Prezentacja-MySQL-PEAR/prezentacja.php

PEAR (The PHP Extension and Application Repository – rozszerzenie PHP i magazyn aplikacji).

PEAR jest przede wszystkim obszernym zbiorem klas PHP, co stwarza możliwości programowania obiektowego w PHP.

Interfejs abstrakcji bazy danych PEAR umożliwia pisanie stron internetowych w PHP które są niezależne od systemu bazodanowego (niezależne w tym sensie, że dają się niezmiernie łatwo przenosić).

Page 43: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 43

Dostęp do MySQL z programów napisanych w językach C i C++ Patrz przykłady

Dostęp do bazy danych MySQL z programów napisanych w C++ umożliwia biblioteka MySQL++ dostępna dla C++ Buildera, Microsoft Visual C++ i programów napisanych w C++ pod Linuksy.

UWAGA! – PO URUCHOMIENIU PROGRAMU Z PRZYKŁADU NIE DZIAŁA JUŻ PIERWSZA METODA

POŁĄCZENIA (NIE WIEM DLACZEGO) .

Dostęp do bazy danych MySQL z programów napisanych w języku C w systemach Linux umożliwia biblioteka libmysqlclient.W przypadku instalacji z pakietów binarnych potrzebny jest pakiet mysql-devel.rpm oraz kompilator GNU gcc 2.95 lub nowszy.

Page 44: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 44

Transakcje

Czym są transakcje? ANSI SQL a transakcje Obsługa transakcji dla wielu użytkowników

(poziomy izolacji ANSI, podstawowa terminologia)

MySQL i transakcje

Page 45: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 45

Transakcje i blokowanie

Czym są transakcje?

Transakcja to niepodzielny logicznie blok instrukcji.

Czym jest blok instrukcji?Jest to zbiór modyfikacji w bazie danych, który musi być albo wykonany w całości, albo niewykonany w całości.

Zasady ACID (Atomic [atomosość], Consistent [spójność], Isolated [izolacja], Durable [trwałość]) oznaczają własności jakie powinna posiadać transakcja:

-Atomowość: transakcja, nawet jeżeli składa się na nią grupa operacji, musi działać jako pojedyncza instrukcja.-Spójność: na końcu transakcji baza danych musi być spójna.-Izolacja: oznacza, że każda transakcja, niezależnie od ilości rozpoczętych transakcji w systemie, musi być niezależna od innych.-Trwałość: po zakończeniu transakcji jej wyniki muszą być wprowadzone do systemu (zwykle realizowane poprzez dzienniki transakcji).

Page 46: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 46

Transakcje i blokowanie

ANSI SQL a transakcje

W standardzie SQL transakcje są kontrolowane za pomocą trzech instrukcji:(tabele InnoDB, AUTOCOMMIT włączone)

-BEGIN WORK (instrukcja nadmiarowa)-COMMIT-ROLLBACK

Page 47: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 47

Transakcje i blokowanie

Obsługa transakcji dla wielu użytkowników

Jednym z najtrudniejszych do zrealizowania aspektów relacyjnych baz danych jest izolacja poszczególnych użytkowników w czasie aktualizacji bazy danych.

Standard SQL definiuje różne poziomy izolacji, jakie może zapewnić baza danych.

Definicja ANSI/ISO poziomu izolacji

Niespójność odczytów

Niepowtarzalność odczytów

Fantomy

Read uncommitted Dopuszczalne Dopuszczalne Dopuszczalne

Read committed Niedopuszczalne Dopuszczalne Dopuszczalne

Repeatable read Niedopuszczalne Niedopuszczalne Dopuszczalne

Serializable Niedopuszczalne Niedopuszczalne Niedopuszczalne

Uwaga! - instrukcja do zmiany poziomów izolacji definiowana przez ANSI SQL: set transaction isolation level.

Page 48: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 48

Transakcje i blokowanie

Obsługa transakcji dla wielu użytkowników

-Niespójność odczytów występuje, gdy jedna transakcja SQL może odczytać dane zmieniane przez drugą transakcje, chociaż transakcja zmieniająca dane nie zatwierdziła zmian.(Domyślnie tabele typu InnoDB obsługujące transakcje nie posiadają obsługi transakcji dopuszczających niespójność odczytów).-Niepowtarzalność odczytów powoduje, że transakcja może „widzieć” zmiany zatwierdzone przez inne transakcje, nawet jeżeli sama podczas odczytu nie jest zatwierdzona.-Odczyty fantomowe występują podczas dodawania wierszy do tabeli w czasie, gdy druga tabela aktualizuje ja. Powinien zostać zaktualizowany również nowy wiersz – a nie jest.

Page 49: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 49

Transakcje i blokowanie

Obsługa transakcji dla wielu użytkowników

Nie można zagnieżdżać transakcji. Jedynie kilka baz danych obsługuje mechanizm punktów kontrolnych przez SQL, w których ustawia się znaczniki fragmentów transakcji i wycofanie jest przeprowadzone jedynie do określonego punktu kontrolnego. MySQL nie obsługuje tej funkcji.

Page 50: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 50

Transakcje i blokowanie

MySQL i transakcje

W tabelach typu MyISAM można emulować transakcje za pomocą blokad.

LOCK TABLES nazwa_tabeli [ READ | WRITE ]UNLOCK TABLES

Obsługę transakcji zapewniają tabele typu InnoDB i DBD.Domyślnie tabele InnoDB zapewniają powtarzalne odczyty, ale oczywiście można to zmienić.UWAGA! - SYSTEM DBMS SAM NAKŁADA BLOKADY NA TABELE (WIERSZE) PODCZAS WYKONYWANIA TRANSAKCJI.

Domyślnie MySQL działa w trybie AUTOCOMMIT. W trybie tym każda instrukcja jest traktowania jako transakcja.Żeby przejść w tryb jawnych transakcji należy ustawić AUTOCOMMIT na OFF, przy użyciu polecenia SET AUTOCOMMIT = [ 0 | 1 ].

Page 51: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 51

Transakcje i blokowanie

MySQL i transakcje

Ciekawostka!

W PostgreSQL wpisanie polecenia BEGIN WORK powoduje przełączenie w tryb jawnych transakcji, a instrukcje COMMIT i ROLLBACK wyłączają ten tryb.

Blokowanie wierszy – ciekawostka dla programistów!

Polecenie poniżej zakłada blokadę na wiersze:

SELECT … FOR UPDATE; (SELECT 0 FROM customer WHERE customer_id = 15 FOR UPDATE;)

COMMIT lub ROLLBACK – zdejmuję blokadę.

Zakleszczenia – dwie sesje (transakcje) blokują się nawzajem - długie transakcje.

Page 52: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 52

Dodatek

1. mysql -u użytkownik -p --html –tee=wynik.html

Polecenie to zapisuje np. wyniki instrukcji select do pliku wynik.html w postaci tabeli zgodnej ze standardem html 4.01.

2. Excel->Dane->ImportujDaneZewnętrzne.

Możliwość importowania danych z MySQL do Excela.

Page 53: Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs internetowy online

Autor: KatMPB 53

Ciastka, kawa i pytania.

Pytania można składać mailem: [email protected]

KatMPBWWW: http://katmpbsoft.blogspot.com