MySQL

advertisement
MySQL
Kamil Tomaszewski
Czym jest MySQL?

MySQL to jeden z
najpopularniejszych, darmowych
silników relacyjnych baz danych.
MySQL tworzony jest przez
pojedynczy podmiot - szwedzką
firmę MySQL AB.
[wikipedia.pl]
Konkurencyjne rozwiązania

PostgreSQL

Microsoft SQL Server

Firebird

Oracle
Początkowo opracowywany na Uniwersytecie Kalifornijskim Berkeley i opublikowany pod nazwą
Postgres. W miarę rozwoju i zwiększania funkcjonalności, baza danych otrzymała nazwy
Postgres95 i ostatecznie PostgreSQL, aby upamiętnić pierwowzór oraz zaznaczyć zgodność ze
standardem SQL.
komercyjny system zarządzania bazą danych, wspierany i rozpowszechniany przez korporację
Microsoft. Jeden z trzech produktów bazodanowych firmy Microsoft, obok Access oraz ADP. MS
SQL Server jest platformą bazodanową typu klient-serwer. W stosunku do programu Access
odznacza się lepszą wydajnością, niezawodnością i skalowalnością. Przede wszystkim są tu
zaimplementowane wszelkie mechanizmy wpływające na bezpieczeństwo operacji (m.in.
wyzwalacze i transakcje).
całkowicie darmowy serwer relacyjnych baz danych zgodny ze standardem ANSI SQL-92,
oferujący również wiele elementów standardu SQL-99 oraz SQL:2003, działający w środowisku
systemu operacyjnego Linux, Windows i wielu innych. Może być używany bez rejestrowania lub
wnoszenia jakichkolwiek opłat w dowolnych zastosowaniach, również komercyjnych.
Relacyjna baza danych Oracle posługuje się standardowym językiem zapytań SQL oraz posiada
wbudowane wewnętrzny język tworzenia procedur składowanych PL/SQL - będący
proceduralnie obudowanym językiem SQL. Jako języka tworzenia procedur składowanych w
bazach danych Oracle (od wersji 8i) można używać również języka Java
Zasady licencjonowania

MySQL jest dostępny na licencji GPL,
jednakże można nabyć również
wersje z licencjami zamkniętymi.
Oznacza to, że MySQL jest w pełni
darmowy, jednak za wsparcie
techniczne i pomoc trzeba już
zapłacić. Istnieje jednak w internecie
wiele darmowych manuali.
Co to jest RDBMS?


Relational DataBase Managament System (RDBMS,
dosłownie system zarządzania relacyjną bazą danych) to zestaw programów służących do korzystania z bazy
danych opartej na modelu relacyjnym.
Większość wewnętrznych języków RDBMS jest w
pewnym stopniu zgodna ze standardem języka zapytań
SQL. Język ten doczekał się już dwóch standardów SQL92 i SQL99, jednak różnice pomiędzy teoretycznie
SQL-owymi systemami są zbyt duże, żeby możliwe było
przeniesienie nawet relatywnie prostej aplikacji z
jednego systemu na drugi.
RDBMS a pliki jednorodne

Problemy związane ze stosowaniem plików
jednorodnych:
• Praca z dużym plikiem może być powolna.
• Poszukiwanie konkretnego rekordu lub grupy
rekordów w pliku jest trudne.
• Problemy sprawia dostęp jednoczesny.
• Aby wykonać jakieś operacje na danych konieczne
jest wczytanie i przechowywanie w pamięci całego
pliku. Przy dużych plikach może to sprawiać
problemy.
• Nie istnieje żadna prosta metoda tworzenia różnych
poziomów dostępu do danych.
RDBMS a pliki jednorodne

Jak RDBMS rozwiązują te problemy?
• Pozwalają na szybszy dostęp do danych niż
pliki jednorodne.
• Można zadawać zapytania o dane spełniające
konkretne kryteria.
• Posiadają wbudowany mechanizm
zapewniania równoległego dostępu, który
pozostaje poza kręgiem programisty.
• Pozwalają na swobodny dostęp do danych.
• Mają wbudowany system przywilejów.
Koncepcje relacyjnych baz danych
Relacyjne bazy danych są obecnie
najczęściej wykorzystywanym typem baz
danych. Opierają się one na
teoretycznych podstawach algebry
relacyjnej.
 Relacyjne bazy danych składają się z
relacji, zwanych zazwyczaj tabelami.
Tabela jest dokładnie tym co oznacza –
tabelą danych.

Koncepcje relacyjnych baz danych
KLIENCI
Nazwisko
Adres
Miejscowosc
Nowak Anna
Wierzbowa 25
Warszawa
Kowalski Adam
Szeroka 1/47
Oborniki
Pawlak Julia
Zachodnia 357
Gliwice
Koncepcje relacyjnych baz danych
Nazwa tabeli
KLIENCI
Nazwisko
Adres
Miejscowosc
Nowak Anna
Wierzbowa 25
Warszawa
Kowalski Adam
Szeroka 1/47
Oborniki
Pawlak Julia
Zachodnia 357
Gliwice
Koncepcje relacyjnych baz danych
Każda kolumna tabeli
posiada wyróżniającą
ją nazwę i zawiera inny
rodzaj danych.
KLIENCI
Każdej kolumnie
przypisany jest typ
danych. Kolumny
Nazwisko, Adres i
Miejscowosc
zawierają ciągi znaków
– są typu string.
Nazwisko
Adres
Miejscowosc
Nowak Anna
Wierzbowa 25
Warszawa
Kowalski Adam
Szeroka 1/47
Oborniki
Pawlak Julia
Zachodnia 357
Gliwice
Koncepcje relacyjnych baz danych
Klucze
Konieczne jest znalezienie sposobu jednoznacznej identyfikacji każdego
klienta.
Rozpatrzmy przykład Anny Nowak.
KLIENCI
Nazwisko
Adres
Miejscowosc
Nowak Anna
Wierzbowa 25
Warszawa
Kowalski Adam
Szeroka 1/47
Oborniki
Pawlak Julia
Zachodnia 357
Gliwice
Jak jednoznacznie stwierdzić, że chodzi o tę właśnie Annę Nowak?
Koncepcje relacyjnych baz danych
Klucze
Konieczne jest znalezienie sposobu jednoznacznej identyfikacji każdego
klienta.
Rozpatrzmy przykład Anny Nowak.
KLIENCI
KlientID
Nazwisko
Adres
Miejscowosc
1
Nowak Anna
Wierzbowa 25
Warszawa
2
Kowalski Adam
Szeroka 1/47
Oborniki
3
Pawlak Julia
Zachodnia 357
Gliwice
Dodana została kolumna KlientID umożliwiająca jednoznaczne
zidentyfikowanie Anny Nowak.
Pole identyfikujące poszczególne rekordy nazywane jest kluczem lub kluczem
podstawowym. Klucz może składać się z kilku pól – np. Julia Nowak z ulicy
Wierzbowej 25 w Warszawie, wtedy klucz składałby się z pól Nazwisko, Adres i
Miejscowosc, co jednak nie gwarantowałoby unikalności.
Koncepcje relacyjnych baz danych
KLIENCI
KlientID
Nazwisko
Adres
Miejscowosc
1
Nowak Anna
Wierzbowa 25
Warszawa
2
Kowalski Adam
Szeroka 1/47
Oborniki
3
Pawlak Julia
Zachodnia 357
Gliwice
RELACJA:
Każde zamówienie w tabeli
Zamowienia zawiera odwołanie do
klienta z tabeli Klienci
ZAMOWIENIA
ZamowienieID
KlientID
Wartosc
Data
1
3
27.50
25.11.2005
2
1
12.99
31.09.2005
3
2
74.00
1.01.2004
Koncepcje relacyjnych baz danych
ZamowienieID
Wartosc
Data
KlientID
Nazwisko
Adres
Miejscowosc
13
227.50
29.01.2004
1
Nowak Anna
Wierzbowa 25
Warszawa
15
112.99
12.11.2005
1
Nowak Anna
Wierzbowa 25
Warszawa
17
174.00
13.12.2005
1
Nowak Anna
Wierzbowa 25
Warszawa
Koncepcje relacyjnych baz danych
ZamowienieID
Wartosc
Data
KlientID
Nazwisko
Adres
Miejscowosc
13
227.50
29.01.2004
1
Nowak Anna
Wierzbowa 25
Warszawa
15
112.99
12.11.2005
1
Nowak Anna
Wierzbowa 25
Warszawa
17
174.00
13.12.2005
1
Nowak Anna
Wierzbowa 25
Warszawa
• marnotrawstwo pamięci
• niespójność danych
SQL



SQL (ang. Structured Query Language) to strukturalny język zapytań
używany do tworzenia, modyfikowania baz danych oraz do umieszczania i
pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie
przechowywania i pobrania danych pozostawia się systemowi zarządzania
bazą danych DBMS.
Jest to język programowania opracowany w latach siedemdziesiątych w
firmie IBM. Stał się on standardem w komunikacji z serwerami relacyjnych
baz danych. Wiele współczesnych systemów relacyjnych baz danych używa
do komunikacji z użytkownikiem SQL, dlatego mówi się, że korzystanie z
relacyjnych baz danych, to korzystanie z SQL-a. Pierwszą firmą, która
włączyła SQL do swojego produktu komercyjnego, był Oracle. Dalsze
wprowadzanie SQL-a, w produktach innych firm, wiązało się nierozłącznie
z wprowadzaniem modyfikacji pierwotnego języka. Wkrótce utrzymanie
dalszej jednolitości języka wymagało wprowadzenia standardu.
SQL
Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy
danych. Zapytania można zaliczyć do jednego z dwóch głównych
podzbiorów:


SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji
Danymi),
SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych).
Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi
literami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musi
kończyć się znakiem ";" (średnik).
Dodatkowo, niektóre interpretery SQL (np. psql w przypadku PostgreSQL),
używają swoich własnych instrukcji, spoza standardu SQL,
które służą np. do połączenia się z bazą, wyświetlenia dokumentacji, itp.
SQL

DML
DML służy do operacji na danych - do ich umieszczania
w bazie, kasowania, przeglądania, zmiany.
Najważniejsze polecenia z tego zbioru to:
•
•
•
•
SELECT - pobranie z bazy danych,
INSERT - umieszczenie danych w bazie,
UPDATE - zmiana danych,
DELETE - usunięcie danych z bazy.
Dane tekstowe podawane muszą być zawsze w formie
ograniczonej znakami pojedynczego cudzysłowu (').
SQL
PRZYKŁAD
SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;
Wyświetla z tabeli pracownicy (FROM
pracownicy) wszystkie kolumny (*) dotyczące
tych pracowników, których pensja jest większa
niż 2000 (WHERE pensja > 2000) i sortuje wynik
malejąco według stażu pracy (ORDER BY staz
DESC).
SQL
PRACOWNICY
Imię
Nazwisko
Pensja
Staż
Jan
Kowalski
800
1
Marek
Stachowiak
2100
2
Krzysztof
Zieliński
5000
3
SELECT * FROM pracownicy
SQL
PRACOWNICY
Imię
Nazwisko
Pensja
Staż
Jan
Kowalski
800
1
Marek
Stachowiak
2100
2
Krzysztof
Zieliński
5000
3
SELECT * FROM pracownicy WHERE pensja > 2000
SQL
PRACOWNICY
Imię
Nazwisko
Pensja
Staż
Jan
Kowalski
800
1
Marek
Stachowiak
2100
2
Krzysztof
Zieliński
5000
3
SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;
SQL
EFEKT KOŃCOWY
PRACOWNICY
Krzysztof
Zieliński
5000
3
Marek
Stachowiak
2100
2
SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;
SQL

DDL
Dzięki DDL natomiast, można operować na strukturach, w
których te dane są przechowywane - czyli np. dodawać,
zmieniać i kasować tabele lub bazy. Najważniejsze polecenia
tej grupy to:
• CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - utworzenie
struktury (bazy, tabeli, indeksu, itp.),
• DROP (np. DROP TABLE, DROP DATABASE, ...) - całkowite usunięcie
struktury,
• ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana struktury (dodanie
kolumny do tabeli, zmiana typu danych w kolumnie tabeli).
SQL
PRZYKŁAD
INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski', 5500, 1);
Dodaje do tabeli pracownicy (INTO
pracownicy) wiersz (rekord) zawierający
dane pojedynczego pracownika.
MySQL
Zalogowanie się
>mysql –h nazwa_komputera –u identyfikator_uzytkownika –p
-h – wskazanie komputera, do którego ma nastąpić połączenie.
-u – wskazanie identyfikatora użytkownika
-p – informuje o logowaniu z użyciem hasła
Wskazanie bazy danych, która zostanie wykorzystana
>mysql use nazwa_bazy
Przykładowy kod SQL tworzący tabelę klienci
Create table klienci
( klientid int unsigned not null auto_increment primary key,
nazwisko char(30) not null,
adres char(40) not null,
miejscowosc char(20) not null
);
Przydatne linki, literatura
Linki:
http://www.mysql.com
http://webdeveloper.pl/manual_mysql/show.php?str=manual_toc_pl.html
http://www.krasnal.tk/
Literatura:
PHP i MySQL. Tworzenie stron WWW. Vademecum
profesjonalisty. Wydanie trzecie
Autorzy: Luke Welling, Laura Thomson
Download