(Microsoft PowerPoint - ZBDiHD-wprowadzenie
Transkrypt
(Microsoft PowerPoint - ZBDiHD-wprowadzenie
Ważne informacje Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych aragorn.pb.bialystok.pl/~gkret: Materiały do wykładów, literatura studia niestacjonarne II stopnia, sem. I WYKŁAD 1: Plan wykładu, wprowadzenie do aplikacji bazodanowych, MySQL Agnieszka Oniśko, Małgorzata Krętowska Wprowadzenie, MySQL 1/48 Wprowadzenie, MySQL 2/48 Systemy klient-serwer Typy rozproszonych baz danych Serwer • Systemy typu klient-serwer (jeden serwer) • Jednorodna rozproszona baza danych (kilka serwerów, jeden system zarządzania bazą danych) • Niejednorodna rozproszona baza danych (różne oprogramowanie) • Federacyjny system baz danych Baza danych Klient Zarządzanie danymi Zarządzanie regułami Komunikacja Wprowadzenie, MySQL 3/48 Logika aplikacji Logika prezentacji Komunikacja Wprowadzenie, MySQL 4/48 Klient-serwer: Przykład Relacyjny SZBD: ORACLE • Pierwszy komercyjny SZBD (1977) • Etapy rozwoju ORACLE Serwer Baza danych Klient Wynik T1: tak lub nie Wynik T2: tak lub nie T1: sprawdź podany identyfikator T2: aktualizuj stan konta – – – – – – – 1978: wersja 1.0 (128kB) 1986: wersja z funkcjami bazy rozproszonej 1993: implementacja hurtowni danych, wersja pod Linux’a 1997: wersja 8.x - relacyjno-obiektowa (Java) 2000: wersja 9i 2004: wersja 10g 2007: wersja 11g Wprowadzenie, MySQL 5/48 Środowisko ORACLE ORACLE Forms Wprowadzenie, MySQL 6/48 Użytkownicy bazy danych ORACLE Reports Administratorzy baz danych Pro*SQL SQL*Plus PL/SQL Jądro SZBD ORACLE Graphics SQL*DBA Baza danych ORACLE TextRetrieval Wprowadzenie, MySQL 7/48 Programiści Użytkownicy końcowi Wprowadzenie, MySQL 8/48 Aplikacja bazodanowa Serwer Plan przedmiotu Aplikacja klienta Serwer Sesja klienta Aplikacja klienta Sesja klienta Baza danych Klient PHP ADO.NET Visual C++ Pyton … ORACLE MySQL MS SQL Server Progress ... Baza danych MySQL MS SQL Server Klient PHP ADO.NET Część I wykładu: Linux/Windows, Apache, MySQL, PHP Część II wykładu: MS SQL Server, ADO.NET, ASP.NET Część III wykładu: hurtownie danych Wprowadzenie, MySQL 9/48 Wprowadzenie, MySQL 10/48 Technologia LAMP Plan przedmiotu: Szczegóły 1. Wprowadzenie: Przegląd technologii 2. MySQL LAMP/WAMP LAMP – akronim określający zestaw oprogramowania typu open source stanowiący popularną platformę serwerową dynamicznych stron WWW: Linux: system operacyjny; Apache: serwer WWW; M MySQL: serwer bazy danych; Perl, PHP (ew. Python, Primate (mod mono)): interpreter języka skryptowego. 3. MS SQL Server ADO.NET 4. Hurtownie danych Wprowadzenie, MySQL 11/48 Wprowadzenie, MySQL 12/48 Technologia WAMP Inne technologie WAMP – akronim określający zestaw oprogramowania typu open source stanowiący popularną platformę serwerową dynamicznych stron WWW: Windows: system operacyjny; Apache: serwer WWW; M MySQL: serwer bazy danych; Perl, PHP, (ew. Python, Primate (mod mono)): interpreter języka skryptowego. MAMP Macintosh: system operacyjny; Apache: serwer WWW; MySQL: serwer bazy danych; Perl, PHP, (ew. Python, Primate (mod mono)): interpreter języka skryptowego. BAMP BSD: system operacyjny; Apache: serwer WWW; MySQL: serwer bazy danych; Perl, PHP, (ew. Python, Primate (mod mono)): interpreter języka skryptowego. Wprowadzenie, MySQL 13/48 Wprowadzenie, MySQL 14/48 MySQL: zakres materiału 1. Podstawowe obiekty w MySQL 2. MySQL a PHP 3. Zaawansowane obiekty MySQL: funkcje, procedury, wyzwalacze MySQL Wprowadzenie, MySQL 15/48 Wprowadzenie, MySQL 16/48 MySQL: Dokumentacja on-line MySQL – ogólne informacje http://dev.mysql.com/doc/ • • • • MySQL: system relacyjnej bazy danych (RDBMS) MySQL: serwer bazy danych Właścicielem jest ORACLE Program jest dostępny w ramach licencji GPL (General Public License) Wprowadzenie, MySQL 17/48 Platformy (SO) dla MySQL Wprowadzenie, MySQL 18/48 MySQL: Historia AIX, BSDi, FreeBSD, HP-UX, i5/OS, Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, eComStation, OS/2 Warp, QNX, IRIX, Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos, Tru64, Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP, Windows Vista. • • • • • • • Wprowadzenie, MySQL 19/48 1995 - pierwsza wersja MySQL (Linux) - stworzony i rozwijany przez szwedzką firmę MySQL AB 1998 - pierwsza wersja MySQL pod Windows 96/NT 2004 - wersja 4.1 (zaimplementowane R-drzewa i Bdrzewa, podzapytania) 2005 - wersja 5.0 (kursory, procedury składowane, wyzwalacze, perspektywy, transakcje) 2008 - wersja 5.1 (partycjonowanie, replikacje) Od lutego 2008 MySQL AB jest częścią Sun Microsystems Od stycznia 2010 roku właścicielem jest Oracle Wprowadzenie, MySQL 20/48 MySQL a API MySQL: Zalety Serwer Aplikacja klienta Klient MySQL Connector/NET .NET API, ADO.NET Connector/C++ C++ API Connector/J Connector/MXJ Java API Connector/PHP … Connector/ODBC Connector/OpenOffice.org Dostępny w ramach licencji GPL (General Public License). Dostępny dla ponad 20 różnych systemów operacyjnych. Możliwość połączenia do API implementowanych za pomocą różnych narzędzi (PHP, .NET, C++, Java, etc...). • Sesja klienta • • PHP API Perl API Python API np. Microsoft OpenOffice Wprowadzenie, MySQL 21/48 MySQL: Krytyka • • Wprowadzenie, MySQL 22/48 MySQL: Instalacja Najnowsza wersja MySQL (wersja 5.1 z 2008) ma 20 różnych błędów (włącznie z 35 błędami z wersji 5.0). Zdarza się, że błędy krytyczne nie są usuwane przez długi okres czasu (do tej pory jeden z błędów z wersji z 2003 nie został usunięty) MySQL: słabe osiągi w hurtowniach danych • • • • Wprowadzenie, MySQL 23/48 Instalacja dostępna na stronie: http://dev.mysql.com/downloads/ Wybór wersji – Alpha – Beta – Gamma – Production Wybór systemu operacyjnego Wybór instalacji – binarna – ze źródłami Wprowadzenie, MySQL 24/48 MySQL: Instalacja Bazy mysql i test Baza systemowa mysql Utworzenie bazy systemowej mysql MySQL mysql Utworzenie bazy testowej test • • test Utworzenie użytkownika systemowego root Zawiera 23 tabele systemowe Tabele systemowe przechowują informacje na temat: – użytkowników bazy – uprawnień przydzielonych użytkownikom bazy Baza testowa test • Nie zawiera żadnych tabel Wprowadzenie, MySQL 25/48 MySQL: MySQL Workbench (GUI) • • • Wprowadzenie, MySQL 26/48 Narzędzie Server Administration SQL Development (posiada elementy wcześniejszego Query Browser) Data Modeling Server Administration (wcześniej MySQL Administrator) Wprowadzenie, MySQL 27/48 • • • • Zarządza połączeniami z bazą danych Pozwala na eksport i import danych Umożliwia tworzenie obiektów bazy danych Pozwala na nadawanie uprawnień użytkownikom bazy Wprowadzenie, MySQL 28/48 Narzędzie SQL Development • • • Narzędzie Data Modeling Pozwala na tworzenie i wykonywanie zapytań do bazy danych Umożliwia tworzenie perspektyw Edytor generowania zapytań • • • Mozliwość graficznej reprezentacji schematu bazy danych Możliwość tworzenia digramów EER Możliwoć edycji tabeli, indeksów, wyzwalaczy… Wprowadzenie, MySQL 29/48 MySQL Wprowadzenie, MySQL 30/48 MySQL: Tworzenie i modyfikacja obiektów bazy danych SQL: Data Definition Language Data Manipulation Language Data Query Language CREATE TABLE, DATABASE, FUNCTION, PROCEDURE, INDEX, TRIGGER, VIEW,.. ALTER TABLE, DATABASE, FUNCTION, PROCEDURE, INDEX, TRIGGER, VIEW,.. DROP TABLE, DATABASE, FUNCTION, PROCEDURE, INDEX, TRIGGER, VIEW,.. RENAME TABLE, DATABASE Proceduralny SQL w MySQL: Funkcje, Procedury Wyzwalacze Wprowadzenie, MySQL 31/48 Wprowadzenie, MySQL 32/48 MySQL: Tworzenie tabeli MySQL: Tworzenie tabeli Transakcja Pracownik Klient DVD CREATE TABLE Klient ( klient_id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, imie VARCHAR(30) NOT NULL, nazwisko VARCHAR(40) NOT NULL, email VARCHAR(30) ); Wprowadzenie, MySQL 33/48 Wprowadzenie, MySQL 34/48 MySQL: Tworzenie tabeli MySQL: Tworzenie tabeli CREATE TABLE Pracownik ( pracownik_id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, imie VARCHAR(30) NOT NULL, nazwisko VARCHAR(40) NOT NULL, adres VARCHAR(30) ); CREATE TABLE DVD ( dvd_id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, tytul VARCHAR(30) NOT NULL, rok_prod VARCHAR(4), rezyser VARCHAR(35) ); Wprowadzenie, MySQL 35/48 Wprowadzenie, MySQL 36/48 MySQL: Tworzenie tabeli MySQL: Modyfikacja tabeli CREATE TABLE Transakcja ( transakcja_id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, dvd_id SMALLINT, klient_id SMALLINT, pracownik_id SMALLINT, data_wypozyczenia DATE, data_zwrotu DATE, FOREIGN KEY (dvd_id) REFERENCES DVD (dvd_id) ); ALTER TABLE Transakcja ( ADD CONSTRAINT fk_klient FOREIGN KEY (klient_id) REFERENCES Klient (klient_id), ADD CONSTRAINT fk_pracownik FOREIGN KEY (pracownik_id) REFERENCES Pracownik (pracownik_id) ); Wprowadzenie, MySQL 37/48 Wprowadzenie, MySQL 38/48 Manipulowanie danymi: INSERT INSERT: Przykład INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] nazwa_tabeli [(nazwa_kol,...)] {VALUES | VALUE} ({wyraż | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE nazwa_kol = wyraż [, nazwa_kol = wyraż ] ... ] INSERT INTO DVD (tytul, rok_prod, rezyser ) VALUES (‘Niebo’, ‘2002’, ’Tom Tykwer’), (‘Good Bye Lenin!’, ’2003’, ’Wolfgang Becker’), (‘Babel’, ’2006’, ’Alejandro Gonzalez Inarritu’); Wprowadzenie, MySQL 39/48 Wprowadzenie, MySQL 40/48 Manipulowanie danymi: UPDATE Manipulowanie danymi: DELETE UPDATE [LOW_PRIORITY] [IGNORE] tabele SET nazwa_kolumny1 = {wyraż1|DEFAULT} [, nazwa_kolumny2 = {wyraż2|DEFAULT}] [WHERE warunek] [ORDER BY ...] [LIMIT liczba_wierszy]; DELETE [LOW_PRIORITY] [QUICK] [IGNORE] nazwa_tabeli[.*] [, nazwa_tabeli[.*]] ... FROM tabele [WHERE warunek]; lub DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM nazwa_tabeli[.*] [, nazwa_tabeli[.*]] ... USING tabele [WHERE warunek]; UPDATE [LOW_PRIORITY] [IGNORE] tabele SET nazwa_kolumny1 = {wyraż1|DEFAULT} [, nazwa_kolumny2 = {wyraż2|DEFAULT} [WHERE warunek]; Wprowadzenie, MySQL 41/48 DELETE: Przykład DELETE * FROM Transakcja, Klient WHERE Transakcja.klient_id = Klient.klient_id AND Klient.nazwisko = ‘Kowalski’; Wprowadzenie, MySQL 43/48 lub Wprowadzenie, MySQL 42/48