MySQL
description
Transcript of MySQL
MySQLMySQL
Kamil Tomaszewski
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]
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
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.
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.
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.
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.
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.
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
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
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.
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
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
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
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
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
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.
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.
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 (').
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;
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
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
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
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
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).
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);
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
););
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