MySQL

28
MySQL MySQL Kamil Tomaszewski

description

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

Transcript of MySQL

Page 1: MySQL

MySQLMySQL

Kamil Tomaszewski

Page 2: MySQL

Czym jest MySQL?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]

Page 3: MySQL

Konkurencyjne rozwiązaniaKonkurencyjne rozwiązania PostgreSQL

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.

Microsoft SQL Serverkomercyjny 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).

Firebirdcał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.

OracleRelacyjna 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

Page 4: MySQL

Zasady licencjonowaniaZasady licencjonowania

MySQL jest dostępny na licencji GPL, MySQL jest dostępny na licencji GPL, jednakże można nabyć również jednakże można nabyć również wersje z licencjami zamkniętymi.wersje z licencjami zamkniętymi.

Oznacza to, że MySQL jest w pełni Oznacza to, że MySQL jest w pełni darmowy, jednak za wsparcie darmowy, jednak za wsparcie techniczne i pomoc trzeba już techniczne i pomoc trzeba już zapłacić. Istnieje jednak w internecie zapłacić. Istnieje jednak w internecie wiele darmowych manuali.wiele darmowych manuali.

Page 5: MySQL

Co to jest RDBMS?Co to jest RDBMS? Relational DataBase Managament System (RDBMS, Relational DataBase Managament System (RDBMS,

dosłownie system zarządzania relacyjną bazą dosłownie system zarządzania relacyjną bazą danych) - to zestaw programów służących do danych) - to zestaw programów służących do korzystania z bazy danych opartej na modelu korzystania z bazy danych opartej na modelu relacyjnym.relacyjnym.

Większość wewnętrznych języków RDBMS jest w Większość wewnętrznych języków RDBMS jest w pewnym stopniu zgodna ze standardem języka pewnym stopniu zgodna ze standardem języka zapytań SQL. Język ten doczekał się już dwóch zapytań SQL. Język ten doczekał się już dwóch standardów - SQL92 i SQL99, jednak różnice standardów - SQL92 i SQL99, jednak różnice pomiędzy teoretycznie SQL-owymi systemami są pomiędzy teoretycznie SQL-owymi systemami są zbyt duże, żeby możliwe było przeniesienie nawet zbyt duże, żeby możliwe było przeniesienie nawet relatywnie prostej aplikacji z jednego systemu na relatywnie prostej aplikacji z jednego systemu na drugi.drugi.

Page 6: MySQL

RDBMS a pliki jednorodneRDBMS a pliki jednorodne Problemy związane ze stosowaniem plików Problemy związane ze stosowaniem plików

jednorodnych:jednorodnych:• Praca z dużym plikiem może być powolna.Praca z dużym plikiem może być powolna.• Poszukiwanie konkretnego rekordu lub grupy Poszukiwanie konkretnego rekordu lub grupy

rekordów w pliku jest trudne.rekordów w pliku jest trudne.• Problemy sprawia dostęp jednoczesny.Problemy sprawia dostęp jednoczesny.• Aby wykonać jakieś operacje na danych Aby wykonać jakieś operacje na danych

konieczne jest wczytanie i przechowywanie w konieczne jest wczytanie i przechowywanie w pamięci całego pliku. Przy dużych plikach może pamięci całego pliku. Przy dużych plikach może to sprawiać problemy.to sprawiać problemy.

• Nie istnieje żadna prosta metoda tworzenia Nie istnieje żadna prosta metoda tworzenia różnych poziomów dostępu do danych.różnych poziomów dostępu do danych.

Page 7: MySQL

RDBMS a pliki jednorodneRDBMS a pliki jednorodne

Jak RDBMS rozwiązują te problemy?Jak RDBMS rozwiązują te problemy?• Pozwalają na szybszy dostęp do danych Pozwalają na szybszy dostęp do danych

niż pliki jednorodne.niż pliki jednorodne.• Można zadawać zapytania o dane Można zadawać zapytania o dane

spełniające konkretne kryteria.spełniające konkretne kryteria.• Posiadają wbudowany mechanizm Posiadają wbudowany mechanizm

zapewniania równoległego dostępu, który zapewniania równoległego dostępu, który pozostaje poza kręgiem programisty.pozostaje poza kręgiem programisty.

• Pozwalają na swobodny dostęp do Pozwalają na swobodny dostęp do danych.danych.

• Mają wbudowany system przywilejów.Mają wbudowany system przywilejów.

Page 8: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

Relacyjne bazy danych są obecnie Relacyjne bazy danych są obecnie najczęściej wykorzystywanym typem najczęściej wykorzystywanym typem baz danych. Opierają się one na baz danych. Opierają się one na teoretycznych podstawach algebry teoretycznych podstawach algebry relacyjnej.relacyjnej.

Relacyjne bazy danych składają się z Relacyjne bazy danych składają się z relacji, zwanych zazwyczaj tabelami. relacji, zwanych zazwyczaj tabelami. Tabela jest dokładnie tym co oznacza Tabela jest dokładnie tym co oznacza – tabelą danych.– tabelą danych.

Page 9: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

Nazwisko Adres Miejscowosc

Nowak Anna Wierzbowa 25 Warszawa

Kowalski Adam Szeroka 1/47 Oborniki

Pawlak Julia Zachodnia 357 Gliwice

KLIENCI

Page 10: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

Nazwisko Adres Miejscowosc

Nowak Anna Wierzbowa 25 Warszawa

Kowalski Adam Szeroka 1/47 Oborniki

Pawlak Julia Zachodnia 357 Gliwice

KLIENCI

Nazwa tabeli

Page 11: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

Nazwisko Adres Miejscowosc

Nowak Anna Wierzbowa 25 Warszawa

Kowalski Adam Szeroka 1/47 Oborniki

Pawlak Julia Zachodnia 357 Gliwice

KLIENCI

Każda kolumna tabeli posiada wyróżniającą ją nazwę i zawiera inny rodzaj danych.

Każdej kolumnie przypisany jest typ danych. Kolumny Nazwisko, Adres i Miejscowosc zawierają ciągi znaków – są typu string.

Page 12: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

KluczeKluczeKonieczne jest znalezienie sposobu jednoznacznej identyfikacji każdego klienta.Rozpatrzmy przykład Anny Nowak.

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?

KLIENCI

Page 13: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

KluczeKluczeKonieczne jest znalezienie sposobu jednoznacznej identyfikacji każdego klienta.Rozpatrzmy przykład Anny Nowak.

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.

KLIENCI

Page 14: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

KlientID Nazwisko Adres Miejscowosc

1 Nowak Anna Wierzbowa 25 Warszawa

2 Kowalski Adam Szeroka 1/47 Oborniki

3 Pawlak Julia Zachodnia 357 Gliwice

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

KLIENCI

RELACJA:Każde zamówienie w tabeli Zamowienia zawiera odwołanie do klienta z tabeli Klienci

ZAMOWIENIA

Page 15: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

ZamowienieID Wartosc DataKlientI

D 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

Page 16: MySQL

Koncepcje relacyjnych baz Koncepcje relacyjnych baz danychdanych

ZamowienieID Wartosc DataKlientI

D 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

Page 17: MySQL

SQLSQL SQL (ang. Structured Query Language) to strukturalny język SQL (ang. Structured Query Language) to strukturalny język

zapytań używany do tworzenia, modyfikowania baz danych oraz zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych.do umieszczania i pobierania danych z baz danych.

Język SQL jest językiem deklaratywnym. Decyzję o sposobie Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi przechowywania i pobrania danych pozostawia się systemowi zarządzania bazą danych DBMS.zarządzania bazą danych DBMS.

Jest to język programowania opracowany w latach Jest to język programowania opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z serwerami relacyjnych baz danych. Wiele komunikacji z serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do współczesnych systemów relacyjnych baz danych używa do komunikacji z użytkownikiem SQL, dlatego mówi się, że komunikacji z użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a. korzystanie z relacyjnych baz danych, to korzystanie z SQL-a. Pierwszą firmą, która włączyła SQL do swojego produktu Pierwszą firmą, która włączyła SQL do swojego produktu komercyjnego, był Oracle. Dalsze wprowadzanie SQL-a, w komercyjnego, był Oracle. Dalsze wprowadzanie SQL-a, w produktach innych firm, wiązało się nierozłącznie z produktach innych firm, wiązało się nierozłącznie z wprowadzaniem modyfikacji pierwotnego języka. Wkrótce wprowadzaniem modyfikacji pierwotnego języka. Wkrótce utrzymanie dalszej jednolitości języka wymagało wprowadzenia utrzymanie dalszej jednolitości języka wymagało wprowadzenia standardu.standardu.

Page 18: MySQL

SQLSQLUżycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazyUżycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazydanych. Zapytania można zaliczyć do jednego z dwóch głównychdanych. Zapytania można zaliczyć do jednego z dwóch głównychpodzbiorów:podzbiorów:

SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji Danymi),Danymi),

SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych).SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych).

Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimiInstrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimiliterami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musiliterami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musikończyć się znakiem ";" (średnik).kończyć się znakiem ";" (średnik).

Dodatkowo, niektóre interpretery SQL (np. psql w przypadku Dodatkowo, niektóre interpretery SQL (np. psql w przypadku PostgreSQL),PostgreSQL),

używają swoich własnych instrukcji, spoza standardu SQL,używają swoich własnych instrukcji, spoza standardu SQL,które służą np. do połączenia się z bazą, wyświetlenia dokumentacji, itp.które służą np. do połączenia się z bazą, wyświetlenia dokumentacji, itp.

Page 19: MySQL

SQLSQL

DMLDML

DML służy do operacji na danych - do ich DML służy do operacji na danych - do ich umieszczania w bazie, kasowania, przeglądania, umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze polecenia z tego zbioru to:zmiany. Najważniejsze polecenia z tego zbioru to:• SELECT - pobranie z bazy danych,SELECT - pobranie z bazy danych,• INSERT - umieszczenie danych w bazie,INSERT - umieszczenie danych w bazie,• UPDATE - zmiana danych,UPDATE - zmiana danych,• DELETE - usunięcie danych z bazy.DELETE - usunięcie danych z bazy.

Dane tekstowe podawane muszą być zawsze w Dane tekstowe podawane muszą być zawsze w formieformie

ograniczonej znakami pojedynczego cudzysłowu (').ograniczonej znakami pojedynczego cudzysłowu (').

Page 20: MySQL

SQLSQL

PRZYKŁADPRZYKŁAD

Wyświetla z tabeli pracownicy (FROM Wyświetla z tabeli pracownicy (FROM pracownicy) wszystkie kolumny (*) pracownicy) wszystkie kolumny (*) dotyczące tych pracowników, których dotyczące tych pracowników, których pensja jest większa niż 2000 (WHERE pensja jest większa niż 2000 (WHERE pensja > 2000) i sortuje wynik malejąco pensja > 2000) i sortuje wynik malejąco według stażu pracy (ORDER BY staz według stażu pracy (ORDER BY staz DESC).DESC).

SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;

Page 21: MySQL

SQLSQL

ImięImię NazwiskoNazwisko PensjaPensja StażStaż

Jan Kowalski 800 1

Marek Stachowiak 2100 2

Krzysztof Zieliński 5000 3

SELECT * FROM pracownicySELECT * FROM pracownicy

PRACOWNICY

Page 22: MySQL

SQLSQL

ImięImię NazwiskoNazwisko PensjaPensja StażStaż

Jan Kowalski 800 1

Marek Stachowiak 2100 2

Krzysztof Zieliński 5000 3

SELECT * FROM pracownicy SELECT * FROM pracownicy WHERE pensja > 2000WHERE pensja > 2000

PRACOWNICY

Page 23: MySQL

SQLSQL

ImięImię NazwiskoNazwisko PensjaPensja StażStaż

Jan Kowalski 800 1

Marek Stachowiak 2100 2

Krzysztof Zieliński 5000 3

SELECT * FROM pracownicy WHERE pensja > 2000 SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;ORDER BY staz DESC;

PRACOWNICY

Page 24: MySQL

SQLSQL

Krzysztof Zieliński 5000 3

Marek Stachowiak 2100 2

SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;

PRACOWNICY

EFEKT KOŃCOWY

Page 25: MySQL

SQLSQL DDLDDL

Dzięki DDL natomiast, można operować na strukturach, wDzięki DDL natomiast, można operować na strukturach, wktórych te dane są przechowywane - czyli np. dodawać,których te dane są przechowywane - czyli np. dodawać,zmieniać i kasować tabele lub bazy. Najważniejsze poleceniazmieniać i kasować tabele lub bazy. Najważniejsze poleceniatej grupy to:tej grupy to:

• CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - utworzenie struktury (bazy, tabeli, indeksu, itp.),utworzenie struktury (bazy, tabeli, indeksu, itp.),

• DROP (np. DROP TABLE, DROP DATABASE, ...) - całkowite DROP (np. DROP TABLE, DROP DATABASE, ...) - całkowite usunięcie struktury,usunięcie struktury,

• ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana struktury ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli).tabeli).

Page 26: MySQL

SQLSQL

PRZYKŁADPRZYKŁAD

Dodaje do tabeli pracownicy (INTO Dodaje do tabeli pracownicy (INTO pracownicy) wiersz (rekord) pracownicy) wiersz (rekord) zawierający dane pojedynczego zawierający dane pojedynczego pracownika.pracownika.

INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski', 5500, 1);INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski', 5500, 1);

Page 27: MySQL

MySQLMySQL

-h – wskazanie komputera, do którego ma nastąpić połączenie.-h – wskazanie komputera, do którego ma nastąpić połączenie.

-u – wskazanie identyfikatora użytkownika-u – wskazanie identyfikatora użytkownika

-p – informuje o logowaniu z użyciem hasła-p – informuje o logowaniu z użyciem hasła

>mysql –h >mysql –h nazwa_komputeranazwa_komputera –u –u identyfikator_uzytkownikaidentyfikator_uzytkownika –p –p

>mysql use >mysql use nazwa_bazynazwa_bazy

Wskazanie bazy danych, która zostanie wykorzystana

Zalogowanie się

Przykładowy kod SQL tworzący tabelę klienci

Create table klienciCreate table klienci

( klientid int unsigned not null auto_increment primary key,( klientid int unsigned not null auto_increment primary key, nazwisko char(30) not null, nazwisko char(30) not null, adres char(40) not null, adres char(40) not null, miejscowosc char(20) not null miejscowosc char(20) not null

););

Page 28: MySQL

Przydatne linki, literaturaPrzydatne linki, literaturaLinki:http://www.mysql.comhttp://webdeveloper.pl/manual_mysql/show.php?str=manual_toc_pl.htmlhttp://www.krasnal.tk/

Literatura:PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie trzecieAutorzy: Luke Welling, Laura Thomson