SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
MySQL prostymi słowami



Artur Niewiarowski

MySQL prostymi słowami

Wydanie pierwsze, Toruń 2011

ISBN: 978-83-61744-40-5

Wszelkie prawa zastrzeżone!

Autor oraz wydawnictwo dołożyli wszelkich starań, by informacje zawarte w tej publi-
kacji były kompletne, rzetelne i prawdziwe. Autor oraz wydawnictwo Escape Magazi-
ne nie ponoszą odpowiedzialności za ewentualne szkody wynikające z wykorzystania
informacji zawartych w publikacji lub użytkowania tej publikacji.

Wszystkie znaki występujące w publikacji są zastrzeżonymi znakami firmowymi bądź
towarowymi ich właścicieli.

Rozpowszechnianie całości lub fragmentu (innego niż udostępniony przez wydawnic-
two) w jakiejkolwiek postaci, bez pisemnej zgody wydawnictwa, jest zabronione.

Zostań Partnerem wydawnictwa i zarabiaj na legalnym rozpowszechnianiu wydawa-
nych przez nas publikacji. Szczegóły:

http://EscapeMagazine.pl/pp




Wydawnictwo EscapeMagazine.pl
http://www.EscapeMagazine.pl




                                bezpłatny fragment




                                          2
MySQL prostymi słowami



Spis treści
Wstęp                                                                            4
1. Czym są bazy danych?                                                          5
        1.1. Baza danych                                                         5
        1.2. Co umożliwiają bazy danych i systemy zarządzające nimi?             5
        1.3. W jaki sposób przechowujemy dane w relacyjnych bazach danych?       5
        1.4. Znane systemy bazodanowe działające w architekturze Klient-Serwer   6
2. Charakterystyka bazy danych MySQL                                             7
3. Instalacja systemu zarządzania bazą danych MySQL                              8
4. Logowanie do systemu bazodanowego MySQL                                       11
5. Projektowanie bazy danych                                                     12
        5.1. Normalizacja baz danych                                             12
        5.2. Nadmiarowość danych                                                 12
        5.3. Anomalia modyfikacji                                                13
        5.4. Anomalia usunięć                                                    13
        5.5. Pierwsza postać normalna                                            14
        5.6. Druga postać normalna                                               14
        5.7. Trzecia postać normalna                                             17
        5.8. Typy relacji pomiędzy tabelami                                      17
        5.9. Prosty przepis na poprawny projekt bazy danych                      18
6. Wybrane typy danych w MySQL                                                   21
        6.1. Ciągowe typy danych                                                 21
        6.2. Liczbowe typy danych                                                21
        6.3. Typy danych związane z czasem i datą                                21
7. Podstawowe polecenia języka SQL                                               22
        7.1. Tworzenie tabel – polecenie create table                            22
        7.2. Usuwanie tabel – polecenie drop table                               23
        7.3. Zmiana struktury tabel – polecenie alter table                      23
        7.4. Umieszczanie danych w tabeli – polecenie insert into                24
        7.5. Usuwanie danych z tabeli – polecenie delete from                    24
        7.6. Uaktualnianie danych w tabeli – polecenie update                    25
        7.7. Odczytywanie danych z tabel – polecenie select                      25
                7.7.1 Informacje podstawowe                                      25
                7.7.2. Podzapytania – zapytania zagnieżdżone                     26
        7.8. Podzapytania w operatorze EXISTS                                    30
        7.9. Podzapytania w operatorze ANY                                       30
        7.10. Podzapytania w operatorze ALL                                      31
        7.11. Operator IN                                                        31
        7.12. Klucze obce                                                        32
        7.13. Pozostałe polecenia SQL w SZBD MySQL                               33
8. Operatory i funkcje matematyczne                                              34
        8.1. Operatory matematyczne                                              34
        8.2. Funkcje matematyczne                                                35
9. Operatory i wybrane funkcje komparacji                                        39
10. Wybrane funkcje agregujące                                                   41
11. Wybrane funkcje operujące na ciągach                                         43
12. Wybrane funkcje daty i czasu                                                 48
13. Wynik zapytania z danymi z wielu tabel – polecenie join                      58
14. Widoki – polecenie create view                                               73
15. Unie – polecenie union                                                       75
16. Zadania sprawdzające                                                         84
17. Przydatne adresy WWW                                                         88



                                          3
MySQL prostymi słowami



Wstęp

Wraz z rozwojem informatyki bazy danych zaczęły odgrywać istotną rolę nie tylko w tej dzie-
dzinie, ale także administracji, bankowości, przemyśle oraz wielu innych. Bez istnienia baz
danych, szczegółowa analiza dużych ilości danych nie byłaby możliwa. W oparciu o bazy
danych funkcjonują portale internetowe, sklepy internetowe oraz większość rozbudowanych
stron WWW. Również z bazami danych powiązana jest ściśle dziedzina informatyki specjali-
zująca się w rozwijaniu algorytmicznych narzędzi do odkrywania wiedzy z danych powiąza-
nych ze sobą zależnościami nietrywialnymi (ang. Knowledge Discovery in Databases). Na
proces odkrywania wiedzy (KDD), składa się szereg algorytmów eksploracji danych (ang.
Data Mining). Algorytmy pozyskiwania informacji, znajdują zastosowanie m.in. w takich ob-
szarach nauki, jak medycyna (ang. Mining Medical Data), immunologia (ang. Artificial Im-
mune Systems in Data Mining), statystyka (ang. Statistical Data Mining), sztuczna inteligenc-
ja (ang. Artificial Intelligence in Data Analysis), kryminalistyka (ang. Crime Data Mining),
a nawet w dziedzinach analizujących zachowania grup społecznych (ang. Data Mining
Based Social Network Analysis) i badaniu preferencji klientów (ang. Consumer Behavior
Analysis by Data Mining Techniques). Wszędzie tam, gdzie gromadzone są dane wymagają-
ce złożonej analizy, techniki odkrywania informacji są powszechnie implementowane w róż-
norodne systemy eksploracji danych (ang. Data Mining Systems), które mogą współtworzyć
środowiska systemów dziedzinowych różnych rodzajów, wykorzystując do tego systemy ba-
zodanowe (ang. Database Systems).

Obecnie na każdych studiach o kierunkach informatycznych, bazy danych są przedmiotem
podstawowym (wstęp do baz danych, rozproszone bazy danych, zaawansowane technologie
baz danych) i występują w kooperacji z przedmiotami: języki programowania, inżynieria
oprogramowania, zaawansowane techniki programowania, projektowanie aplikacji interneto-
wych, systemy informatyczne w zarządzaniu oraz z wieloma innymi.

Niniejszy podręcznik stanowi kompendium podstawowych i głównych informacji na temat baz
danych oraz języka SQL na przykładzie systemu bazodanowego MySQL. Dzięki licznym
zadaniom i ich rozwiązaniom, zrozumiecie Państwo zasadę poprawnego konstruowania bazy
danych oraz pozyskiwania i analizy danych zawartych w bazie.



                                                                    Życzę przyjemnej lektury

                                                                          Artur Niewiarowski




                                              4
MySQL prostymi słowami



1. Czym są bazy danych?

1.1. Baza danych

Baza danych - zbiór wzajemnie powiązanych danych, przechowywanych w pamięci kompu-
terów i wykorzystywanych przez programy użytkowe instytucji lub organizacji wraz z opro-
gramowaniem umożliwiającym definiowanie, wykorzystywanie i modyfikowanie tych danych.

                                                               źródło: Encyklopedia PWN

      innymi słowy

Baza danych jest to zbiór logicznie powiązanych danych, zarządzany przez system zarzą-
dzania bazą danych (SZBD), który działa w interakcji z użytkownikiem i jego programami.


1.2. Co umożliwiają bazy danych i systemy zarządzające nimi?

      łatwość składowania dużych ilości danych,
      przejrzystość danych dzięki odpowiednim strukturom, jakimi są tabele i relacjom po-
      między nimi (relacyjne bazy danych),
      szybki dostęp do danych,
      współdzielenie danych przez wielu użytkowników,
      zabezpieczenia przed utratą danych,
      dostarczają środowiska programistycznego,
      współpraca z wieloma platformami programistycznymi (poprzez odpowiednie bibliote-
      ki),
      dostarczają licznych specjalistycznych funkcji,
      zaimplementowana polityka bezpieczeństwa.


1.3. W jaki sposób przechowujemy dane w relacyjnych bazach danych?

      mamy kilka rodzajów baz danych, są nimi bazy: relacyjne, obiektowe, przestrzenne,
      tekstowe, itd.,
      w relacyjnych bazach danych, dane przechowywane są w tabelach (fizycznie na dys-
      ku – w plikach),
      tabele są tworzone przez użytkowników podczas projektowania bazy danych,
      tabele posiadają kolumny o odpowiednich typach (tj. przechowujące teksty, liczby,
      dane binarne),
      pomiędzy tabelami, a dokładniej pomiędzy kolumnami, można tworzyć relacje: jeden
      do jednego, jeden do wielu, wiele do wielu, co z kolei tworzy pomiędzy tabelami
      oczywiste zależności,



                                            5
MySQL prostymi słowami



       dodatkowo systemy bazodanowe umożliwiają tworzenie widoków, czyli wirtualnych
       tabel, umożliwiających w łatwy sposób zarządzanie danymi pochodzącymi z różnych
       tabel, sklejonych wirtualnie w jedną całość.

Graficzny przykład struktury tabeli Klienci:

                          nazwa_kolumny                             typ_danych
                   imię                      ciąg tekstowy o maks. 12 znakach
                   nazwisko                  ciąg tekstowy o maks. 25 znakach
                   PESEL                     ciąg tekstowy o maks. 11 znakach
                   data urodzenia            data


Przykładowe dane umieszczone w tabeli Klienci:
                          imię       nazwisko         PESEL       data urodzenia
                   Jan           Kowalski        89020212345     1989-02-02
                   Renata        Nowakowska      99030312345     1999-03-03
                   Mirosław      Niezawitowski   82020512345     1982-02-05



1.4. Znane systemy bazodanowe działające w architekturze Klient-Serwer

       DB2 (http://www-01.ibm.com/software/data/db2)
       Microsoft SQL Server (http://www.microsoft.com/poland/sql)
       MySQL (http://www.mysql.com)
       Oracle (http://www.oracle.com/pl/products/database/index.html)
       PostgreSQL (http://www.postgresql.org)




                                                    6
MySQL prostymi słowami



2. Charakterystyka bazy danych MySQL
   Jeden z najpopularniejszych systemów zarządzania relacyjnymi bazami danych.
   Posiada wiele mechanizmów zapewniających bezpieczeństwo danych, w tym m.in.:
       • odzyskanie spójności danych po awarii,
       • autoryzację dostępu do danych (do baz, tabel, operacji na danych).
   Możliwość łączenia się z bazą poprzez sieć.
   Komunikacja użytkownika z SZBD poprzez język zapytań SQL (ang. Structured Qu-
   ery Language).
   Każda tabela jest obsługiwana przez silnik bazodanowy (ang. engine), który przydzie-
   la użytkownik według potrzeb podczas tworzenia tabeli lub zmiany jej struktury. Naj-
   popularniejsze silniki to: MyISAM (posiada algorytmy umożliwiające szybkie wyszuki-
   wanie danych w tabeli), InnoDB (posiada algorytmy obsługujące transakcje bazoda-
   nowe).




                                         7
MySQL prostymi słowami



3. Instalacja systemu zarządzania bazą danych My-
SQL
Plik instalacyjny na wybraną platformę systemu operacyjnego można pobrać ze strony
http://www.mysql.com/downloads/mysql/

Instalacja z poziomu wiersza poleceń – konsoli (Red Hat Linux, Linux Fedora, Linux
CentOS)

W celu wykonania poniższych poleceń, wymagane jest konto administratora:


 [user@serwer ~]# su –l root


Polecenia do wykonania z wiersza poleceń:
       yum search – wyszukuje program(y) w zasobach (repozytorium),
       yum install – pobiera z zasobów internetowych i instaluje program(y),
       yum remove – usuwa z systemu program(y),
       yum update – uaktualnia program(y) w systemie, na podstawie zasobów interneto-
       wych.

Przykład użycia yum w celu instalacji bazy danych MySQL


 yum install mysql mysql-connector-odbc mysql-devel
 mysql-server php-mysql


Zarządzanie procesem (Linux)

Polecenia do wykonania z wiersza poleceń:
       service mysqld start – uruchomienie bazy danych MySQL,
       service mysqld restart – restart bazy danych MySQL,
       service mysqld stop – zatrzymanie bazy danych MySQL.
       service mysqld status – sprawdzenie statusu uruchomienia bazy danych My-
       SQL.

Przykład użycia polecenia:


 [root@serwer ~]# service mysqld status
 mysqld (pid 2330) is running...


Zatrzymanie usługi jest równoważne z brakiem dostępu do systemu bazodanowego MySQL.



                                            8
MySQL prostymi słowami



Instalacja w systemie MS Windows

Instalacja w systemie Windows odbywa się poprzez uruchomienie programu wykonywalnego,
pobranego ze strony internetowej, a następnie przejście kolejnych kroków kreatora (progra-
mu instalacyjnego, rys. poniżej).




Rysunek 1. Program instalacyjny MySQL pod systemem operacyjnym Microsoft Windows.

Zarządzanie procesem (MS Windows)
Program: services.msc – aplet umożliwiający zarządzanie usługami w systemie Windows.
Po odnalezieniu pozycji o nazwie MySQL, istnieje możliwość uruchomienia usługi, zatrzyma-
nia, wstrzymania lub ponownego uruchomienia. Wstrzymanie lub zatrzymanie usługi jest
równoważne z brakiem dostępu do systemu bazodanowego MySQL.




Rysunek 2. Aplet systemu MS Windows służący do zarządzania serwisami.




                                              9
MySQL prostymi słowami



Konfiguracja zapory sieciowej iptables (Linux)

Polecenie do wykonania z wiersza poleceń:


 [root@serwer ~]# iptables -I INPUT 1 --protocol tcp
 --destination-port 3306 -j DROP [ACCEPT]


Baza danych działa (nasłuchuje) na porcie numer 3306. W celu umożliwienia korzystania
z bazy (logowania się do niej i wykonywania poleceń) z zewnętrznego komputera, należy
odblokować w zaporze sieciowej port 3306 (opcja ACCEPT). W celu uniemożliwienia zdal-
nego zarządzania bazą należy użyć opcji DROP. Logowanie będzie możliwe jedynie z lokal-
nego komputera, na którym jest uruchomiona baza danych. Oczywiście istnieje możliwość
zmiany portu dla MySQL w opcjach systemu, co z kolei wiąże się z uwzględnieniem go w
parametrach zapory sieciowej. Dodatkowo baza danych umożliwia zdefiniowanie dla po-
szczególnych użytkowników, jak również baz ograniczeń w dostępie, w tym adresów IP lub
nazw hostów. Jednakże istotnym zabezpieczeniem ograniczającym dostęp do bazy jest za-
pora sieciowa z odpowiednio ustanowionymi regułami.




                                            10
MySQL prostymi słowami



4. Logowanie do systemu bazodanowego MySQL
Polecenie służące do logowania się do bazy danych z poziomu wiersza poleceń (zarówno
pod systemami Linux, jak i MS Windows):


 mysql –u uzytkownik –p nazwa_bazy_danych –h IP/host


Omówienie parametrów:
      -u – nazwa użytkownika
      -p – wymuszenie poproszenia przez system bazodanowy o wpisanie hasła przez
     użytkownika
      -h – adres komputera, na którym działa baza danych. Jeżeli jest to localhost, to pa-
     rametr nie jest wymagany.

Przykłady:


 [root@serwer ~]# mysql –u Jan –p baza_Jana
 [root@serwer ~]# mysql –u Jan –p
 [root@serwer ~]# mysql –u Jan baza_Jana –h serw-
 er.z.baza.danych.com.pl




                                           11
MySQL prostymi słowami



                     Pełna wersja
             MySQL prostymi słowami




http://www.escapemagazine.pl/369703-mysql-prostymi-slowami




                               12

Mais conteúdo relacionado

Destaque (11)

MY - czyli jak być razem
MY - czyli jak być razemMY - czyli jak być razem
MY - czyli jak być razem
 
Prawa sukcesu. Tom XV i tom XVI
Prawa sukcesu. Tom XV i tom XVIPrawa sukcesu. Tom XV i tom XVI
Prawa sukcesu. Tom XV i tom XVI
 
Tajniki warsztatu legendarnego copywritera
Tajniki warsztatu legendarnego copywriteraTajniki warsztatu legendarnego copywritera
Tajniki warsztatu legendarnego copywritera
 
JA
JAJA
JA
 
Uwolnij pewność siebie
Uwolnij pewność siebieUwolnij pewność siebie
Uwolnij pewność siebie
 
Kuchnia japońska. Sprawdzone przepisy
Kuchnia japońska. Sprawdzone przepisyKuchnia japońska. Sprawdzone przepisy
Kuchnia japońska. Sprawdzone przepisy
 
Zacznij Pisać
Zacznij PisaćZacznij Pisać
Zacznij Pisać
 
Cytaty ludzi Sukcesu
Cytaty ludzi SukcesuCytaty ludzi Sukcesu
Cytaty ludzi Sukcesu
 
Forex System SMATF ver. 2.0
Forex System SMATF ver. 2.0Forex System SMATF ver. 2.0
Forex System SMATF ver. 2.0
 
Księga est
Księga estKsięga est
Księga est
 
Pociąg do sukcesu
Pociąg do sukcesuPociąg do sukcesu
Pociąg do sukcesu
 

Semelhante a MySQL prostymi słowami

Oracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychOracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychWydawnictwo Helion
 
Bazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawBazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawWydawnictwo Helion
 
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danychkalaxq
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...twitch.tv/katmpb
 
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIAccess 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIWydawnictwo Helion
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaWydawnictwo Helion
 
Analizy danych w chmurze
Analizy danych w chmurzeAnalizy danych w chmurze
Analizy danych w chmurzenubitech
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawWydawnictwo Helion
 
PostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowyPostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowyWydawnictwo Helion
 

Semelhante a MySQL prostymi słowami (20)

Oracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychOracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danych
 
MySQL
MySQLMySQL
MySQL
 
Bazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawBazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstaw
 
M4j2
M4j2M4j2
M4j2
 
M4j2
M4j2M4j2
M4j2
 
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
 
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIAccess 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
 
Relacyjne bazy danych
Relacyjne bazy danychRelacyjne bazy danych
Relacyjne bazy danych
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
 
Analizy danych w chmurze
Analizy danych w chmurzeAnalizy danych w chmurze
Analizy danych w chmurze
 
Praktyczny kurs SQL
Praktyczny kurs SQLPraktyczny kurs SQL
Praktyczny kurs SQL
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktyka
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
Co warto wiedzieć o bazach danych
Co warto wiedzieć o bazach danychCo warto wiedzieć o bazach danych
Co warto wiedzieć o bazach danych
 
Po prostu Access 2003 PL
Po prostu Access 2003 PLPo prostu Access 2003 PL
Po prostu Access 2003 PL
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstaw
 
PostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowyPostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowy
 
ABC Access 2007 PL
ABC Access 2007 PLABC Access 2007 PL
ABC Access 2007 PL
 
SQL. Optymalizacja
SQL. OptymalizacjaSQL. Optymalizacja
SQL. Optymalizacja
 

MySQL prostymi słowami

  • 1.
  • 2. MySQL prostymi słowami Artur Niewiarowski MySQL prostymi słowami Wydanie pierwsze, Toruń 2011 ISBN: 978-83-61744-40-5 Wszelkie prawa zastrzeżone! Autor oraz wydawnictwo dołożyli wszelkich starań, by informacje zawarte w tej publi- kacji były kompletne, rzetelne i prawdziwe. Autor oraz wydawnictwo Escape Magazi- ne nie ponoszą odpowiedzialności za ewentualne szkody wynikające z wykorzystania informacji zawartych w publikacji lub użytkowania tej publikacji. Wszystkie znaki występujące w publikacji są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Rozpowszechnianie całości lub fragmentu (innego niż udostępniony przez wydawnic- two) w jakiejkolwiek postaci, bez pisemnej zgody wydawnictwa, jest zabronione. Zostań Partnerem wydawnictwa i zarabiaj na legalnym rozpowszechnianiu wydawa- nych przez nas publikacji. Szczegóły: http://EscapeMagazine.pl/pp Wydawnictwo EscapeMagazine.pl http://www.EscapeMagazine.pl bezpłatny fragment 2
  • 3. MySQL prostymi słowami Spis treści Wstęp 4 1. Czym są bazy danych? 5 1.1. Baza danych 5 1.2. Co umożliwiają bazy danych i systemy zarządzające nimi? 5 1.3. W jaki sposób przechowujemy dane w relacyjnych bazach danych? 5 1.4. Znane systemy bazodanowe działające w architekturze Klient-Serwer 6 2. Charakterystyka bazy danych MySQL 7 3. Instalacja systemu zarządzania bazą danych MySQL 8 4. Logowanie do systemu bazodanowego MySQL 11 5. Projektowanie bazy danych 12 5.1. Normalizacja baz danych 12 5.2. Nadmiarowość danych 12 5.3. Anomalia modyfikacji 13 5.4. Anomalia usunięć 13 5.5. Pierwsza postać normalna 14 5.6. Druga postać normalna 14 5.7. Trzecia postać normalna 17 5.8. Typy relacji pomiędzy tabelami 17 5.9. Prosty przepis na poprawny projekt bazy danych 18 6. Wybrane typy danych w MySQL 21 6.1. Ciągowe typy danych 21 6.2. Liczbowe typy danych 21 6.3. Typy danych związane z czasem i datą 21 7. Podstawowe polecenia języka SQL 22 7.1. Tworzenie tabel – polecenie create table 22 7.2. Usuwanie tabel – polecenie drop table 23 7.3. Zmiana struktury tabel – polecenie alter table 23 7.4. Umieszczanie danych w tabeli – polecenie insert into 24 7.5. Usuwanie danych z tabeli – polecenie delete from 24 7.6. Uaktualnianie danych w tabeli – polecenie update 25 7.7. Odczytywanie danych z tabel – polecenie select 25 7.7.1 Informacje podstawowe 25 7.7.2. Podzapytania – zapytania zagnieżdżone 26 7.8. Podzapytania w operatorze EXISTS 30 7.9. Podzapytania w operatorze ANY 30 7.10. Podzapytania w operatorze ALL 31 7.11. Operator IN 31 7.12. Klucze obce 32 7.13. Pozostałe polecenia SQL w SZBD MySQL 33 8. Operatory i funkcje matematyczne 34 8.1. Operatory matematyczne 34 8.2. Funkcje matematyczne 35 9. Operatory i wybrane funkcje komparacji 39 10. Wybrane funkcje agregujące 41 11. Wybrane funkcje operujące na ciągach 43 12. Wybrane funkcje daty i czasu 48 13. Wynik zapytania z danymi z wielu tabel – polecenie join 58 14. Widoki – polecenie create view 73 15. Unie – polecenie union 75 16. Zadania sprawdzające 84 17. Przydatne adresy WWW 88 3
  • 4. MySQL prostymi słowami Wstęp Wraz z rozwojem informatyki bazy danych zaczęły odgrywać istotną rolę nie tylko w tej dzie- dzinie, ale także administracji, bankowości, przemyśle oraz wielu innych. Bez istnienia baz danych, szczegółowa analiza dużych ilości danych nie byłaby możliwa. W oparciu o bazy danych funkcjonują portale internetowe, sklepy internetowe oraz większość rozbudowanych stron WWW. Również z bazami danych powiązana jest ściśle dziedzina informatyki specjali- zująca się w rozwijaniu algorytmicznych narzędzi do odkrywania wiedzy z danych powiąza- nych ze sobą zależnościami nietrywialnymi (ang. Knowledge Discovery in Databases). Na proces odkrywania wiedzy (KDD), składa się szereg algorytmów eksploracji danych (ang. Data Mining). Algorytmy pozyskiwania informacji, znajdują zastosowanie m.in. w takich ob- szarach nauki, jak medycyna (ang. Mining Medical Data), immunologia (ang. Artificial Im- mune Systems in Data Mining), statystyka (ang. Statistical Data Mining), sztuczna inteligenc- ja (ang. Artificial Intelligence in Data Analysis), kryminalistyka (ang. Crime Data Mining), a nawet w dziedzinach analizujących zachowania grup społecznych (ang. Data Mining Based Social Network Analysis) i badaniu preferencji klientów (ang. Consumer Behavior Analysis by Data Mining Techniques). Wszędzie tam, gdzie gromadzone są dane wymagają- ce złożonej analizy, techniki odkrywania informacji są powszechnie implementowane w róż- norodne systemy eksploracji danych (ang. Data Mining Systems), które mogą współtworzyć środowiska systemów dziedzinowych różnych rodzajów, wykorzystując do tego systemy ba- zodanowe (ang. Database Systems). Obecnie na każdych studiach o kierunkach informatycznych, bazy danych są przedmiotem podstawowym (wstęp do baz danych, rozproszone bazy danych, zaawansowane technologie baz danych) i występują w kooperacji z przedmiotami: języki programowania, inżynieria oprogramowania, zaawansowane techniki programowania, projektowanie aplikacji interneto- wych, systemy informatyczne w zarządzaniu oraz z wieloma innymi. Niniejszy podręcznik stanowi kompendium podstawowych i głównych informacji na temat baz danych oraz języka SQL na przykładzie systemu bazodanowego MySQL. Dzięki licznym zadaniom i ich rozwiązaniom, zrozumiecie Państwo zasadę poprawnego konstruowania bazy danych oraz pozyskiwania i analizy danych zawartych w bazie. Życzę przyjemnej lektury Artur Niewiarowski 4
  • 5. MySQL prostymi słowami 1. Czym są bazy danych? 1.1. Baza danych Baza danych - zbiór wzajemnie powiązanych danych, przechowywanych w pamięci kompu- terów i wykorzystywanych przez programy użytkowe instytucji lub organizacji wraz z opro- gramowaniem umożliwiającym definiowanie, wykorzystywanie i modyfikowanie tych danych. źródło: Encyklopedia PWN innymi słowy Baza danych jest to zbiór logicznie powiązanych danych, zarządzany przez system zarzą- dzania bazą danych (SZBD), który działa w interakcji z użytkownikiem i jego programami. 1.2. Co umożliwiają bazy danych i systemy zarządzające nimi? łatwość składowania dużych ilości danych, przejrzystość danych dzięki odpowiednim strukturom, jakimi są tabele i relacjom po- między nimi (relacyjne bazy danych), szybki dostęp do danych, współdzielenie danych przez wielu użytkowników, zabezpieczenia przed utratą danych, dostarczają środowiska programistycznego, współpraca z wieloma platformami programistycznymi (poprzez odpowiednie bibliote- ki), dostarczają licznych specjalistycznych funkcji, zaimplementowana polityka bezpieczeństwa. 1.3. W jaki sposób przechowujemy dane w relacyjnych bazach danych? mamy kilka rodzajów baz danych, są nimi bazy: relacyjne, obiektowe, przestrzenne, tekstowe, itd., w relacyjnych bazach danych, dane przechowywane są w tabelach (fizycznie na dys- ku – w plikach), tabele są tworzone przez użytkowników podczas projektowania bazy danych, tabele posiadają kolumny o odpowiednich typach (tj. przechowujące teksty, liczby, dane binarne), pomiędzy tabelami, a dokładniej pomiędzy kolumnami, można tworzyć relacje: jeden do jednego, jeden do wielu, wiele do wielu, co z kolei tworzy pomiędzy tabelami oczywiste zależności, 5
  • 6. MySQL prostymi słowami dodatkowo systemy bazodanowe umożliwiają tworzenie widoków, czyli wirtualnych tabel, umożliwiających w łatwy sposób zarządzanie danymi pochodzącymi z różnych tabel, sklejonych wirtualnie w jedną całość. Graficzny przykład struktury tabeli Klienci: nazwa_kolumny typ_danych imię ciąg tekstowy o maks. 12 znakach nazwisko ciąg tekstowy o maks. 25 znakach PESEL ciąg tekstowy o maks. 11 znakach data urodzenia data Przykładowe dane umieszczone w tabeli Klienci: imię nazwisko PESEL data urodzenia Jan Kowalski 89020212345 1989-02-02 Renata Nowakowska 99030312345 1999-03-03 Mirosław Niezawitowski 82020512345 1982-02-05 1.4. Znane systemy bazodanowe działające w architekturze Klient-Serwer DB2 (http://www-01.ibm.com/software/data/db2) Microsoft SQL Server (http://www.microsoft.com/poland/sql) MySQL (http://www.mysql.com) Oracle (http://www.oracle.com/pl/products/database/index.html) PostgreSQL (http://www.postgresql.org) 6
  • 7. MySQL prostymi słowami 2. Charakterystyka bazy danych MySQL Jeden z najpopularniejszych systemów zarządzania relacyjnymi bazami danych. Posiada wiele mechanizmów zapewniających bezpieczeństwo danych, w tym m.in.: • odzyskanie spójności danych po awarii, • autoryzację dostępu do danych (do baz, tabel, operacji na danych). Możliwość łączenia się z bazą poprzez sieć. Komunikacja użytkownika z SZBD poprzez język zapytań SQL (ang. Structured Qu- ery Language). Każda tabela jest obsługiwana przez silnik bazodanowy (ang. engine), który przydzie- la użytkownik według potrzeb podczas tworzenia tabeli lub zmiany jej struktury. Naj- popularniejsze silniki to: MyISAM (posiada algorytmy umożliwiające szybkie wyszuki- wanie danych w tabeli), InnoDB (posiada algorytmy obsługujące transakcje bazoda- nowe). 7
  • 8. MySQL prostymi słowami 3. Instalacja systemu zarządzania bazą danych My- SQL Plik instalacyjny na wybraną platformę systemu operacyjnego można pobrać ze strony http://www.mysql.com/downloads/mysql/ Instalacja z poziomu wiersza poleceń – konsoli (Red Hat Linux, Linux Fedora, Linux CentOS) W celu wykonania poniższych poleceń, wymagane jest konto administratora: [user@serwer ~]# su –l root Polecenia do wykonania z wiersza poleceń: yum search – wyszukuje program(y) w zasobach (repozytorium), yum install – pobiera z zasobów internetowych i instaluje program(y), yum remove – usuwa z systemu program(y), yum update – uaktualnia program(y) w systemie, na podstawie zasobów interneto- wych. Przykład użycia yum w celu instalacji bazy danych MySQL yum install mysql mysql-connector-odbc mysql-devel mysql-server php-mysql Zarządzanie procesem (Linux) Polecenia do wykonania z wiersza poleceń: service mysqld start – uruchomienie bazy danych MySQL, service mysqld restart – restart bazy danych MySQL, service mysqld stop – zatrzymanie bazy danych MySQL. service mysqld status – sprawdzenie statusu uruchomienia bazy danych My- SQL. Przykład użycia polecenia: [root@serwer ~]# service mysqld status mysqld (pid 2330) is running... Zatrzymanie usługi jest równoważne z brakiem dostępu do systemu bazodanowego MySQL. 8
  • 9. MySQL prostymi słowami Instalacja w systemie MS Windows Instalacja w systemie Windows odbywa się poprzez uruchomienie programu wykonywalnego, pobranego ze strony internetowej, a następnie przejście kolejnych kroków kreatora (progra- mu instalacyjnego, rys. poniżej). Rysunek 1. Program instalacyjny MySQL pod systemem operacyjnym Microsoft Windows. Zarządzanie procesem (MS Windows) Program: services.msc – aplet umożliwiający zarządzanie usługami w systemie Windows. Po odnalezieniu pozycji o nazwie MySQL, istnieje możliwość uruchomienia usługi, zatrzyma- nia, wstrzymania lub ponownego uruchomienia. Wstrzymanie lub zatrzymanie usługi jest równoważne z brakiem dostępu do systemu bazodanowego MySQL. Rysunek 2. Aplet systemu MS Windows służący do zarządzania serwisami. 9
  • 10. MySQL prostymi słowami Konfiguracja zapory sieciowej iptables (Linux) Polecenie do wykonania z wiersza poleceń: [root@serwer ~]# iptables -I INPUT 1 --protocol tcp --destination-port 3306 -j DROP [ACCEPT] Baza danych działa (nasłuchuje) na porcie numer 3306. W celu umożliwienia korzystania z bazy (logowania się do niej i wykonywania poleceń) z zewnętrznego komputera, należy odblokować w zaporze sieciowej port 3306 (opcja ACCEPT). W celu uniemożliwienia zdal- nego zarządzania bazą należy użyć opcji DROP. Logowanie będzie możliwe jedynie z lokal- nego komputera, na którym jest uruchomiona baza danych. Oczywiście istnieje możliwość zmiany portu dla MySQL w opcjach systemu, co z kolei wiąże się z uwzględnieniem go w parametrach zapory sieciowej. Dodatkowo baza danych umożliwia zdefiniowanie dla po- szczególnych użytkowników, jak również baz ograniczeń w dostępie, w tym adresów IP lub nazw hostów. Jednakże istotnym zabezpieczeniem ograniczającym dostęp do bazy jest za- pora sieciowa z odpowiednio ustanowionymi regułami. 10
  • 11. MySQL prostymi słowami 4. Logowanie do systemu bazodanowego MySQL Polecenie służące do logowania się do bazy danych z poziomu wiersza poleceń (zarówno pod systemami Linux, jak i MS Windows): mysql –u uzytkownik –p nazwa_bazy_danych –h IP/host Omówienie parametrów: -u – nazwa użytkownika -p – wymuszenie poproszenia przez system bazodanowy o wpisanie hasła przez użytkownika -h – adres komputera, na którym działa baza danych. Jeżeli jest to localhost, to pa- rametr nie jest wymagany. Przykłady: [root@serwer ~]# mysql –u Jan –p baza_Jana [root@serwer ~]# mysql –u Jan –p [root@serwer ~]# mysql –u Jan baza_Jana –h serw- er.z.baza.danych.com.pl 11
  • 12. MySQL prostymi słowami Pełna wersja MySQL prostymi słowami http://www.escapemagazine.pl/369703-mysql-prostymi-slowami 12