21. MSQL i MySQL.txt

(49 KB) Pobierz
#481
Rozdział 21.
MSQL i MySQL

Mini-SQL (nazywany dalej w tej ksišżce MSQL) i MySQL to dwie relacyjne bazy danych, dostępne niemal za darmo. MySQL został zaprojektowany w taki sposób, aby być zgodnym z bazš danych MSQL. Oba te produkty sš bardzo popularne, szczególnie wród użytkowników darmowych systemów operacyjnych, takich jak Linux i FreeBSD. Powodem popularnoci obu baz sš ich duże możliwoci w porównaniu do kosztów nabycia, a także dostępnoć kodu ródłowego obu tych produktów.
Obie bazy nie zostały stworzone po to, aby konkurować z takimi produktami jak Oracle czy Microsoft SQL Server. wiadczyć o tym może brak kilku istotnych cech, które większoć administratorów baz danych uznaje za absolutnie niezbędne (więcej informacji na temat brakujšcych elementów w bazach danych MSQL i MySQL znaleć można w podrozdziale Ograniczenia MySQL"). Mimo to zarówno MSQL jak i MySQL nadajš się doskonale do realizacji wielu zadań wymagajšcych współpracy z bazš danych. Serwery baz MSQL i MySQL sš powszechnie stosowane przez programistów tworzšcych witryny internetowe zintegrowane z bazš danych - sš to zazwyczaj relacyjne bazy danych, których zadaniem nie jest obsługa transakcji, lecz przechowywanie konkretnych danych.
Jednym z głównych powodów, które sprawiły, że bazy MSQL i MySQL stały się tak popularne jest niezwykle niski koszt ich użytkowania. Dla większoci użytkowników MySQL jest produktem darmowym (użytkownicy Windows muszš uicić opłatę licencyjnš po upłynięciu okresu próbnego). MySQL i MSQL spełniajš potrzeby programistów szukajšcych tanich rozwišzań w zakresie relacyjnych baz danych. Obie bazy sš bardzo stabilne i oferujš dobry stopień wydajnoci, a także sš bez porównania tańsze od produktów typu Sybase Adaptive Server Enterprise czy Oracle.
Przedstawione w tym rozdziale przykłady zostały wygenerowane przy użyciu MySQL. MySQL został zaprojektowany od samego poczštku jako produkt majšcy zastšpić MSQL; zarówno implementacja języka SQL, jak również interfejs aplikacji dla MySQL zostały zbudowane z zachowaniem jak największych podobieństw do rozwišzań użytych w MSQL. Ponadto MySQL oferuje pewne mechanizmy niedostępne w MSQL. Dokładniejsze porównanie obu produktów znajduje się w dalszej częci rozdziału.
#482
Jak zdobyć MySQL i MSQL

Baz danych MSQL i MySQL należy raczej szukać w Internecie, niż na półce sklepowej. Osoby pragnšce zdobyć kopię MySQL powinny odwiedzić stronę domowš tego produktu: http://www.mysql.net.
MSQL dostępny jest pod adresem: http://www.hughes.com.au. Jeżeli nie jeste w stanie zdecydować się na jeden z tych produktów, zajrzyj do dalszej częci rozdziału, gdzie opisane zostały różnice między nimi. Przed cišgnięciem MSQL należy zarejestrować się na stronie firmy Hughes Technologies (będšcej twórcom MSQL). Aby cišgnšć MySQL wystarczy przejć na odpowiedniš podstronę i wybrać odpowiedni pakiet z przedstawionej listy.
MySQL i MSQL sš dostępne w formie kodu ródłowego, który można skompilować pod niemal każdš wersjš systemu UNIX. Aby ułatwić życie użytkownikom pragnšcym zainstalować MySQL w jednym ze wspieranych systemów operacyjnych, dostępne sš również dystrybucje skompilowane.
Dla większoci użytkowników odpowiednim rozwišzaniem jest cišgnięcie skompilowanej wersji produktu przygotowanej do instalacji. Wiele odmian systemu UNIX nie posiada wręcz odpowiednich narzędzi do kompilowania oprogramowania, a nawet jeli je posiadajš, to samodzielne kompilowanie programu wprowadza dodatkowy etap do procesu instalowania oprogramowania, którego można uniknšć stosujšc wersję skompilowanš. Wniosek jest zatem następujšcy: osoby przywykłe do cišgania oprogramowania w formie ródłowej mogš pozyskać kod ródłowy MySQL lub MSQL i skompilować go samodzielnie. Alternatywnym i prostszym rozwišzaniem jest wykorzystanie jednego z gotowych pakietów MySQL.
MSQL jest rozpowszechniany w formie pojedynczego pliku (zarchiwizowanego narzędziami gzip i tar) zawierajšcego kod ródłowy bazy danych. Na użytkowniku spoczywa obowišzek wydobycia kodu ródłowego z archiwum, skompilowania go i zainstalowania. Sam kod ródłowy został napisany w formie łatwiej do przenoszenia, co pozwala na kompilowanie i uruchamianie go pod kontrolš większoci odmian systemu UNIX.
MySQL oprócz wersji ródłowej jest także dostępny w formie pakietów przeznaczonych do łatwej instalacji na kilku różnych platformach systemowych. Przykładem może być pakiet RPM służšcy do instalacji MySQL na komputerach z system operacyjnym Red Hat Linux. Istniejš także odmiany MySQL dla systemów Windows 95, 98 i NT.

Różnice między MySQL i MSQL

MSQL powstał przed pojawieniem się MySQL - tak naprawdę MySQL został zaprojektowany ponieważ MSQL nie spełnił oczekiwań stawianych przed nim przez twórców MySQL.
#483
Podobne przesłanki sprawiły, iż MySQL został napisany w taki sposób, aby oprogramowanie współpracujšce do tej pory z MSQL mogło być zaadaptowane do korzystania z MySQL. Ponieważ oba te narzędzia były rozwijane w sposób niezależny od siebie, z każdš kolejnš wersjš różnice między nimi ulegały pogłębieniu. Oba produkty sš prostymi relacyjnymi bazami danych pracujšcymi pod kontrolš systemu UNIX i jemu podobnym. Zarówno MySQL, jak i MSQL obsługuj š pewien podzbiór poleceń języka SQL (ograniczenia obu baz danych dotyczšce języka SQL omawiane będš w dalszej częci rozdziału).
W przeciwieństwie do większoci zaawansowanych technicznie baz danych, MySQL i MSQL mogš być uruchamiane pod kontrolš darmowych systemów operacyjnych, takich jak Linux czy FreeBSD.
Poniższa lista przedstawia niektóre z różnic występujšce pomiędzy MSQL i MySQL. Jej analiza obrazuje również te miejsca, w których MSQL i MySQL nie spełniajš możliwoci oferowanych przez inne bazy danych. ródłem do stworzenia tej listy był podręcznik MySQL (MySQL Reference Manual) dostępny w sieci pod adresem: http://www.mysql.net/Manual_chapter/doc.htm.

*   MySQL pozwala na zakładanie indeksów w chwili tworzenia tabeli z wnętrza polecenia CREATE TABLE lub po utworzeniu tabeli poleceniem CREATE INDEX. W MSQL indeksy mogš być zakładane jedynie po utworzeniu tabeli, przy użyciu polecenia CREATE INDEK.
* MySQL pozwala na specyfikowanie wartoci domylnych dla kolumn, MSQL nie posiada takiej możliwoci.
* MySQL umożliwia tworzenie kolumn autoinkrementujšcych; MSQL używa sekwencji w stylu Oracle'a.
* MSQL nie obsługuje klauzuli GROUP BY w połšczeniu z funkcjami agregujšcymi, MySQL posiada takš możliwoć.
* MSQL wyznacza wartoci wyrażeń boolowskich w porzšdku od lewej do prawej, zamiast w porzšdku matematycznym. MySQL przetwarza operatory boolowskie według kolejnoci matematycznej.
*   MSQL wymaga, aby nazwy kolumn były kwalifikowane nazwami tabel jeżeli w zapytaniu używanych jest więcej niż jedna tabela.
*   MSQL obsługuje jedynie aliasy tabel; MySQL umożliwia stosowanie zarówno aliasów tabel jak i kolumn.
*   MSQL nie pozwala na stosowanie funkcji w wyrażeniach SELECT.
*   MySQL umożliwia użycie klauzuli HAVING z nazwami kolumn, które występujš na  licie  wyrażenia   SELECT.   MSQL  nie  obsługuje  klauzuli HAVING.
*   Żadna z baz nie posiada modelu bezpieczeństwa opartego na poleceniach GRANT i REVOKE. Do operowania przywilejami w MySQL służy tabela user; MSQL do tego samego celu wykorzystuje plik mSQL.acl.
#484
Użytkowanie MySQL

W pierwszej kolejnoci omówiona zostanie baza MySQL, a po niej MSQL. MySQL składa się z dwóch komponentów: serwera i klienta bazy danych. MySQL oferuje innym aplikacjom bogaty zbiór metod umożliwiajšcych komunikację z serwerem bazy danych. Metody te wchodzš w skład standardowego interfejsu programowania aplikacji MySQL. Oprócz tego MySQL obsługuje również dwa popularne interfejsy baz danych - ODBC i JDBC.
Ze względu na dużš popularnoć MySQL wród użytkowników darmowego oprogramowania, interfejs dla tej bazy jest uwzględniany w większoci darmowych produktów współpracujšcych z relacyjnymi bazami danych. Oto kilka przykładowych produktów tego typu:

*   Perl, poprzez DBI/DBD.
*   Python, poprzez MySQLdb.
*   TCL, poprzez tcl-sql.
*   PHP, obsługa wbudowana.

W dalszej częci omówiony zostanie komponent klienta bazy danych wchodzšcy w skład pakietu MySQL - zwyczajowo nazywany mysql. Narzędzie to jest bardzo podobne do swojego odpowiednika z Oracle'a - SQL*PLUS - w tym sensie, iż pozwala połšczyć się z bazš danych MySQL jako okrelony użytkownik, a następnie wpisywać i wykonywać kolejne zapytania.

Klient MySQL

Uruchomienie klienta MySQL wymaga wykonania komendy mysql z poziomu wiersza poleceń powłoki. Używajšc odpowiednich znaczników można przy okazji wyspecyfikować parametry połšczenia:

mysql [-h nazwa_hosta] [-u nazua_użytkownika] [-p] [baza_danych]

Wszystkie parametry sš opcjonalne. Parametr -h okrela nazwę komputera pełnišcego rolę serwera bazy danych MySQL, z którš chcemy się połšczyć. W przypadku braku tego parametru MySQL przyjmie domylnie, iż chodzi o połšczenie z bazš danych umieszczonš na komputerze lokalnym. Parametr -u pozwala na wyspecyfikowanie nazwy użytkownika logujšcego się do bazy danych. Brak tego parametru MySQL uzna za próbę zalogowania się przy użyciu identyfikatora systemu UNIX, z którego użytkownik korzysta w danej sesji. Znacznik -p wyraża chęć podania hasła w chwili logowania do bazy danych. Hasło można również umiecić bezporednio w wierszu poleceń za znacznikiem -p (bez spacji). Postępowanie takie jest jednak mało ostrożne. Rozsšdniejszym rozwišzaniem jest wskazanie jedynie zamiaru użycia hasła znacznikiem -p, a następnie wpisanie go w chwili pojawienia się odpowiedniego komunikatu, tak jak widać to w listingu 21.1.
#485
---------------------------------
Listing 21.1. Logowanie do bazy danych MySQL

$ mysql -u movies -p movies
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.2...
Zgłoś jeśli naruszono regulamin