MYSQL 1
1. Sprawdzenie ustawień konfiguracyjnych Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables 2
2. Wstępna konfiguracja Po zainstalowaniu aplikacji należy przed uruchomieniem wykonać wstępna konfigurację: 2.1. W pliku my.ini ( w tej dystrybucji plik ten jest zlokalizowany w katalogu bin) [mysqld] port= 3306 basedir="c:/serwer/mysql" datadir="c:/serwer/mysql/data language=c:/mysql/share/polish # podstawowe ustawienia bazy # port # dostęp do aplikacji # katalog z danymi # język pod warunkiem, że istnieje taki Zrestartować serwer, najlepiej Apache i MySQL 3
3. Logowanie się do serwera C:\ścieżka.\>mysql -h nazwa_komputera u nazwa_uzytkownika -p Opcji -h używa się w celu wskazania komputera, do którego ma nastąpić połączenie (z serwerem MySQ). Jeśli polecenie to ma być wykonane na tym samym komputerze, na którym znajduje się MySQL, to parametr -h z nazwą może być pominięty. Opcja u nazwa stosuje się w celu wskazania identyfikatora użytkownika, na którego następuje logowanie. Jeśli identyfikator ten nie zostanie podany, wówczas MySQL domyślnie użyje identyfikatora tego użytkownika, który jest aktualnie zalogowany do systemu 4
Przy pierwszym uruchomieniu serwera użytkownik root jest jedynym zarejestrowanym użytkownikiem. Opcja -p informuje serwer o logowaniu się z użyciem hasła. Może ona zostać pominięta, jeśli dla danego użytkownika hasło nie zostało ustanowione. Po zalogowaniu się do serwera kursor powinien znajdować się przy znaku zachęty, umożliwiając stworzenie nowej bazy danych. mysql> _ mysql> \h; help inne : \c; clear \q; exit \u; use onother database Każda komenda jest zakończona średnikiem 5
Opuszczenie średnika spowoduje brak reakcji ze strony serwera. Opuszczenie średnika wywoła przejście do nowe linii zasygnalizowane strzałką -> Oznacza, że MySQL czeka na wprowadzenie dalszej części polecenia. 6
4. Tworzenie bazy odwzorowanie do katalogu Baza to zespół pół służących do zapisania poszczególnych rekordów. W skład bazy wchodzą tabele posiadające zdefiniowane pola Kompletny wpis w tabeli to rekord. Przykład: baza o nazwie dane_adresowe z tabelą o nazwie studenci studenci ID Imię Nazwisko Data urodzenia Adres Telefon 1 2 Stanisław Jan. Wszelak Zaręba 2011-02-28 1999-12-12 ul. Cicha 11 Zawady 13 22 123456 600663426 7
Tworzenie bazy i zapis poszczególnych rekordów prowadzimy: - za pośrednictwem pliku (*.sql), zostanie przekompilowany przez bazę danych, - za pomocą skryptu php, - za pomocą wiersza poleceń - bardzo prosta metoda - Za pomocą kreatora 4.1 Za pomocą wiersza poleceń mysql>create database nazwa_bazy; Utworzy się katalog w miejscu wskazanym dyrektywą w pliku my.ini Jeśli w pliku my.ini występuje zapis datadir="c:/serwer/mysql/data # katalog z danymi Utworzy się katalog UKSW1 8
4.2. Za pomocą pliku nazwa_pliku.sql Otwieramy edytor, nie polecam notatnika, może być HATEML (taki był testowany), zapisujemy kod po czym nazwę pliku z rozszerzeniem sql -- Tworzenie bazy o nazwie uksw2 na przykładzie wersji 5.5.8 CREATE DATABASE uksw2 COLLATE utf8mb4_polish_ci; USE uksw2; -- w starszych aplikacjach CREATE DATABASE uksw2; CONNECT uksw2; 9
5. Tabele odwzorowanie do pliku Relacje baz oparte są na tabelach, które maja zdefiniowane kolumny, zwane polami lub atrybutami, każdej kolumnie (polu) przypisany jest typ danych studenci ID Imię Nazwisko Data urodzenia Adres Telefon 1 2 3 Stanisław Jan Zofia Wszelak Zaręba Zaręba 2011-02-28 1999-12-12 1999-12-12 ul. Cicha 11 Zawady 13 Zawady 13 600663426 22 600 2323 22 6002323 Wiersze to rekordy, pola są wspólne dla wszystkich rekordów. Każdy rekord posiada sposób jednoznacznej identyfikacji. Identyfikację prowadzi się za pomocą indywidualnego unikalnego pola ID (podobnie jak nr konta bankowego) Pole identyfikujące poszczególne rekordy jest kluczem lub kluczem podstawowym 10
Baza może składać się z wielu tabel z odwołaniami poprzez klucze W tabeli studenci pole ID_us jest kluczem podstawowym, natomiast to pole (ID_us) w tabeli oceny jest kluczem obcym studenci ID_us imie nazwisko data_urodzenia adres telefon 1 2 3 Stanisław Jan Zofia Wszelak Zaręba Zaręba 2011-02-28 1999-12-12 1999-12-12 ul. Cicha 11 Zawady 13 Zawady 13 600663426 22 600 2323 22 6002323 oceny ID_ocen ID_us ocena przedmiot prowadzący 1 2 3 3 1 2 5.0 3.5 2.0 J. angielski j. angielski matematyka Kołodziej Barszcz Głowacki Zbiór projektów wszystkich tabel w bazie nazywa się schematem bazy 11
5.1. Schematy tabel Forma schematów: -diagramy encji i relacji tabelarycznej, tak jak na poprzednim slajdzie, -diagramy tekstowe: studenci(id_us, imie, nazwisko, data_urodzenia, adres, telefon) oceny(id_ocen, ID_us, ocena, przedmiot, prowadzacy) podkreślenie ciągłe to klucze podstawowe w tabeli podkreślenie przerywana to klucze obce w tabeli Klucze obce pokazują relacje pomiędzy danymi pochodzącymi z różnych źródeł Relacje mogą być : jeden - jeden, jeden wiele (jeden klient składa wiele zamówień), wiele wiele 12
5.2. Dobieranie kluczy Wybrane klucze muszą gwarantować unikalność rekordów. Jeśli bazy, tabele nie maja rzeczywistego identyfikatora (PESEL, NIP, ISBN) to wprowadza się pole identyfikacji z kluczem. Zbędne jest definiowanie klucza dla książek czy kont bankowych, same w sobie mogą stanowić klucze. 5.3. Zasada unikania pustych pól Null Załóżmy, że nasza przykładowa baza (tabela) studenci wymaga zaktualizowania o dodatkowe pole o nazwie adres_email. Jeden ze sposobów to dołożenie dodatkowej kolumny, która jak wiemy może mieć wartość null nie wszyscy mają adres e-mail. Puste pola marnują pamięć co jest niewskazane. Puste pola w raportach wprowadzają niepokój. Dobrym rozwiązaniem jest dołożenie dodatkowej tabeli adresmail(id_email, email). Tym bardziej, że jeden student może mieć więcej adresów e-mal owych 13
5. 4. Tworzenie tabel z wiersza poleceń Otwarcie bazy mysql>use nazwa_bazy Konstrukcja tabeli: mysql>create table nazwa( nazwa_kolumny1 typ atrybuty, nazwa_kolumny2 typ atrybuty ); Metoda ta jest bardzo niewygodna ale przydatna do wstępnego testowania środowiska 14
5. 5. Tworzenie bazy i tabel za pomocą pliku CREATE DATABASE uksw1; USE uksw1; CREATE TABLE student( id_us int not null auto_increment primary key, imie char(25) not null, nazwisko char(30) NOT NULL, data_urodzenia date NOT NULL DEFAULT '0000-00-00', adres char(50) NOT NULL, telefon int(14) NOT NULL ); CREATE TABLE IF NOT EXISTS oceny( id_ocen int(11) NOT NULL, id_us int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, ocena float, przedmiot char(15) NOT NULL, prowadzacy char(25) NOT NULL ); Zapisujemy plik w dowolnym miejscu z rozszerzeniem *.sql, po kompilacji *.frm 15
5. 6. Podgląd zawartości bazy 1. Zalogowanie do serwera:..>mysql u root p Enter password: ********** 2. Wybranie bazy: mysql> use nazwa_bazy; Database changed 3. Przeglądanie poleceniem show: mysql>show nazwa-bazy; Serwer wyświetli listę wszystkich tabel wybranej bazy danych 16
5. 7. Podgląd zawartości i struktury tabel Szczegółowe informacje na temat wybranej tabeli są dostępne po użyciu polecenia: mysql>describe nazwa_tabeli; 17
6. Podstawowe typy pól 6.1. Liczbowe Typy liczbowe Typy daty i czasu Typy łańcuchowe Dla niektórych typów - liczbowych podaje się szerokość wyświetlania. W przypadku liczb całkowitych takim specyfikatorem jest liczba M, zapisywana w nawiasach kwadratowych [M]. Największa dopuszczalna wartość tego parametru wynosi 255 (1 bajt) Całkowitoliczbowe Typ Zakres Wykorzystana pamięć Opis INT[(M)] -2 31 2 31-1 4 bajty L. całk. TINYINT[(M)] -127 128 1 bajt L. Całk BIGINT[(M)] -2 63 2 63-1 8 bajtów L. całk BOOL, BIT Tak samo jak dla INT Jeśli dołożymy parametr Unsigned zakresy się zmienią 18
W przypadku liczb zmiennoprzecinkowych float, double, real cechujemy [(M,D)] np. flat(6,2). D cyfry znaczące po przecinku FLOAT[(M,D)] 4 bajty DOUBLE[(M,D)] 8 bajtów REAL[(M,d)] 8 bajtów 6.2. Typ daty i czasu Typ Date TIME DATATIME TIMESTAMP Zakres 1000-01-01 do 9999-12-31-838:59:59 do 838:59:59 1000-01-01 00:00:00 do 9999-12-31 23:59:59 1970-01-01 do 2037 Opis YYYY-MM-DD HH:MM:SS YYYY-MM-SS HH:MM:SS YYYYMMDDHHMMSS TIMESTAMP TMESTAMP(14) TIMESTAMP(6) YYMMDD 19
6.3. Typy łańcuchowe Klasyczne (zwykłe) o stałej długości CHAR i zmiennej długości VARCHAR TEXT i BLOB do dłuższych tekstów oraz do danych binarnych (obrazy, dźwięki) Różnica polega na tym, że TEXT nie rozróżnia wielkości liter, BLOB rozróżnia wielkość TEXT, BLOB maksymalna długość 2 bajty (2 16-1) znaków 20
7. Zapisywanie danych do bazy Zapisywanie danych to edycja wierszy, służy do tego polecenie INSERT INSERT INTO nazwa_tabeli(kolumna1, kolumna2, kolumna3 ) VALUES (wartość1, wartość2, wartość3 ); Weźmy przykład: Zofia Zaręba, 1999-12-12, Zawady 13, 600663426 INSERT INTO student(id_us, imie, nazwisko, data_urodzenia, adres, telefon) VALUES (NULL, Zofia, Zaręba, 1999-12-12, 600663426); 21
Metoda inna: INSERT INTO student set imie= Stanisław, nazwisko= Wszelak, data_urodzenia =2011-02-28, adres= Cicha 13, telefon=2212345; 22
Zapisywanie danych można realizować poprzez skrypt plik *.sql oceny ID_ocen ID_us ocena przedmiot prowadzący 1 2 3 3 1 2 5.0 3.5 2.0 J. angielski j. angielski matematyka Kołodziej Barszcz Głowacki Zapiszmy bazę w pliku: Use uksw1; Insert into oceny values(null, 3, 5.0, j. angielski, Kolodziej ), (null, 1, 3.5, j. angielski, Barszcz ), (null, 2, 2.0, matematyka, Glowacki ); 23
8. Wyszukiwanie danych w bazie Polecenie SELECT SELECT pozycje (pola) From nazwa_tabeli Into nazwa_pliku; Dla przykładu: select imie, nazwisko, data_urodzenia, adres, telefon from student; Można wymusić wyszukiwanie w sposób wieloznaczny: select * from student; 24
8.1. Wyszukiwanie danych spełniających kryteria Do tego celu wykorzystuje się klauzulę WHERE Np. chcemy tylko wyszukać wszystkie pola (wiersze), w których Id_us ma wartość równą 2 select * from student where Id_us=2; Lub większą ilość kryteriów wyszukiwania: select * from student where Id_us=2 or Id_us=1; Proszę zauważyć, że operator równości (=) różni się od operatora w C, C++, PHP W klauzuli WHERE stosuje się następujące operatory porównania: 25
Tabela operatorów porównania Operator Przykład Opis = >, >=, <, <=!= IS NULL IS NOT NULL BETWEEN IN NOT IN Id_us=2 ocena>=3.5 ocena!=2.0 telefon is null adres is not null ocena between 3.5 and 5.0 nazwisko in ( Wszelak, Kot ) prowadzacy is not ( Walas ) Sprawdza, czy dwie wartości są sobie równe Sprawdza dwie wartości w zależności od znaku Sprawdza, czy wartości różnią się od siebie Sprawdza, czy pole jest puste Sprawdza, czy pole nie jest puste Sprawdza czy wartość znajduje się w przedziale Sprawdza, czy wartości należą do zbioru wartości Sprawdza, czy wartości nie należą do zbioru wartości 26
9. Łączenie tabel Przykład łączenia: student ( nazwisko)+oceny( ocena, przedmiot ) student ID_us imie nazwisko data_urodzenia adres telefon 1 2 3 Stanisław Jan Zofia Wszelak Zaręba Zaręba 2011-02-28 1999-12-12 1999-12-12 ul. Cicha 11 Zawady 13 Zawady 13 600663426 22 600 2323 22 6002323 oceny ID_ocen ID_us ocena przedmiot prowadzący 1 2 3 3 1 2 5.0 3.5 2.0 J. angielski j. angielski matematyka Kołodziej Barszcz Głowacki 27
SELECT pole_1, pole2, pole3, FROM tabela1, tabela2,.. WHERE tabela.pole=wartosc; 28
9. Porządkowanie danych w tabeli SELECT pole1, pole2 FROM nazwa_tabeli ORDER BY wybrane pole; Domyślnie sortuje rosnąco (asc). Aby sortować odwrotnie należy dodać desc Przykład: uporządkujmy od Z do A nazwiska w tabeli student SELECT nazwisko, adres FROM student ORDER BY nazwisko DESC; 29
10. Dokonywanie zmian rekordów w bazie UPDATE nazwa_tabeli SET kolumna1=wyrażenie1, kolumna2=wyrażenie2.; 30
Jeżeli chcemy zmienić konkretny zapis w rekordzie, np. zmienić adres to zapiszemy: UPDATE nazwa_tabeli SET kolumna1=wyrażenie1 where kolumna2=wyrażenie2; 31
11. Usuwanie rekordów z bazy DELETE FROM nazwa_tabeli; - usunięcie całej tabeli DELETE FROM nazwa_tabeli WHERE kolumna=wartosc; - usunięcie wiersza delete from student where ID_us=1; 12. Usuwanie tabel DROP TABLE nazwa_tabeli; 13. Usuwanie całej bazy DROP DATABASE nazwa_bazy; 32