Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

MySQL bazy danych dla witryny Wykład 7 Technologie internetowe.

Podobne prezentacje


Prezentacja na temat: "MySQL bazy danych dla witryny Wykład 7 Technologie internetowe."— Zapis prezentacji:

1 MySQL bazy danych dla witryny Wykład 7 Technologie internetowe

2 Serwer MySQL – język zapytań Firma Oracle wersje – od 3 przez 5.1 aż do 7.1 (MySQLCluster) też wersje dla Windows

3 Konsola MySQL (lokalnie lub zdalnie) Uruchomienie wiersza polecenia (START - Uruchom… cmd – lub Programy –Akcesoria - Wiersz polecenia). Przechodzimy do foldera c:\usr\mysql\bin Metody zarządzania bazą: PhpMyAdmin (przeglądarka) Z poziomu plików PHP Pliki baz danych tworzone są zwykle w folderze mysql/data proces mysqld.exe lub mysql_nt.exe(menedżer zadań Windows).

4 Wyświetlenie listy baz: c:\usr\mysql\bin>mysqlshow mysql i inne Baza mysql jest bazą administracyjną – dostęp do niej ma tylko ROOT (bądź inny użytkownik o przydzielonych przez administratora prawach dostępu). Jej podstawowa rola to umożliwienie administratorowania prawami dostępu do baz, tabel

5 Uruchomienie konsoli MySQL c:\usr\mysql\bin>mysql –u root –p Password: Zgłasza się konsola MySQL – gotowość do wpisywania poleceń: mysql> polecenie help

6 Baza danych składa się z tabel (zapis encji) Tabele to zestaw rekordów danych elementarnych (pola rekordu) Model relacyjny Normalizacja tabel i związki między nimi (złączenia) - ERD idnazwaadres 1ABCRzeszów rekord pole

7 OPERACJE SQL NA BAZIE (kwerendy) tworzenie bazy i tabeli selekcja rekordów wstawianie rekordów modyfikacja treści rekordów modyfikacja struktury usuwanie rekordów, tabeli, bazy Poznanie języka SQL będzie nam potrzebne do wykonania opreacji na bazie w skryptach PHP

8 CREATE DATABASE nazwa_bazy; Np.. CREATE DATABASE firma; TWORZENIE BAZY DANYCH: SHOW DATABASES; Lista baz: Otwarcie bazy (w konsoli): USE nazwa_bazy

9 CREATE TABLE nazwa_tabeli ( nazwapola1 typ parametry, nazwapola2 typ parametry, itd); parametry: NOT NULL - niepuste PRIMARY KEY – klucz główny AUTO_INCREMENT - autonumerowanie DEFAULT wartosc_domyślna Np. CREATE TABLE dostawcy (Id INT(10) AUTO_INCREMENT PRIMARY KEY, Nazwa VARCHAR(10), Adres VARCHAR(30)); TWORZENIE TABELI

10 TYPY DANYCH Standard ISO SQL (1992) przewiduje około piętnastu typów danych, podzielonych na grupy:

11 CHAR(N) definiuje pole napisowe o stałej długości (ew. uzupełniane spacjami), VARCHAR(N) jest polem o zmiennej długości nie przekraczającej N TEXT Także BLOB (binarne), SET (zbiór). Typy tekstowe - alfanumeryczne ( String )

12 INT, BIGINT, FLOAT, DECIMAL Na ogół dostępnych jest wiele różnych typów liczbowych, różniących się możliwym zakresem wartości (INT, BIGINT, SMALLINT,...) i precyzją (FLOAT, DOUBLE PRECISION,...). Typ DECIMAL(M,D) to liczba (ułamek) dziesiętny o ustalonej liczbie cyfr dziesiętnych w części całkowitej i ułamkowej. Typy liczbowe (Numeric)

13 DATE TIME DATETIME TIMESTAMP Typy daty i godziny (Datetime):

14 DELETE FROM nazwa_tabeli WHERE warunki; np.: DELETE FROM dostawcy; usuwa wszystkie rekordy !!! DELETE FROM dostawcy WHERE nazwa LIKE 'ABC'; usuwa wszystkie rekordy w których polu Nazwa jest wartość 'ABC' USUWANIE REKORDÓW

15 ALTER TABLE old_name RENAME new_name; ZMIANA NAZWY TABELI

16 ALTER TABLE tabela CHANGE nazwa_stara nazwa_nowa typ; Np.: ALTER TABLE dostawcy CHANGE id id_nowe INT(5); ZMIANA NAZWY I TYPU POLA

17 ALTER TABLE nazwa_tabeli DROP nazwa_pola; np.: ALTER TABLE dostawcy DROP idnowe; USUWANIE PÓL (KOLUMN TABELI)

18 ALTER TABLE nazwa_tabeli ADD id int(5) default 10; np.: ALTER TABLE dostawcy ADD id int(5) default 10; DODANIE POLA W TABELI

19 ZMIANA TREŚCI PÓL REKORDÓW W TABELI UPDATE tabela SET nazwa_pola1=nowa_wartość WHERE warunek; Przykładowo: UPDATE dostawcy SET nazwa="INTERRES" where id=1; jeśli id jest primary key to zmieni tylko w 1 rekordzie UPDATE dostawcy SET cena=cena*0.9; we wszystkich rekordach

20 DROP TABLE nazwa_tabeli; USUWANIE TABELI

21 DROP DATABASE nazwa_bazy; USUWANIE BAZY

22 SOURCE nazwa_pliku; POBIERANIE WIELU POLECEŃ SQL Z PLIKU: Uwaga: plik powinien być w folderze MYSQL\BIN, w przeciwnym przypadku trzeba podać całą ścieżkę dostępu w apostrofach

23 PRZYKŁAD: C:\usr\mysql\bin> mysql -u root -p Enter password: * USE mysql (tylko konsola) SHOW DATABASES CREATE DATABASE ksiegarnia;

24 SHOW DATABASES; Database abc firma mysql test baza administracyjna

25 CREATE DATABASE ksiegarnia; USE ksiegarnia; CREATE TABLE ksiazki (id_ks int unsigned not null auto_increment primary key, autor char(30) not null, tytul char(40) not null); EXPLAIN ksiazki; INSERT INTO ksiazki VALUES (Null, "Mickiewicz Adam", "Pan Tadeusz");

26 SELECT * FROM ksiazki; INSERT INTO ksiazki VALUES (Null, "Mickiewicz Adam", "Konrad Wallenrod"); INSERT INTO ksiazki VALUES -Null, "Mickiewicz Adam", Ballady i romanse"); itd...

27 SELECT * FROM ksiazki; DELETE FROM ksiazki WHERE tytul LIKE "pan Wołodyjowski"; mysql> SELECT * FROM ksiazki;

28 SQL selekcja rekordów klauzule operatory, metaznaki złączenie tabel

29 SELECT [tabela.]{* | [lista_pól]} FROM lista_nazw_tabel [WHERE warunek] [ORDER BY.... ] /sortowanie [GROUP BY...]; /agregacja – sumowanie lub zliczanie z grupowaniem wg wybranego pola WYŚWIETLENIE (WYBÓR - SELEKCJA) REKORDÓW TABELI z wykorzystaniem klauzul [ opcja] { do wyboru albo | albo}

30 mysql> SELECT 4*5; Można też używać kwerendę SELECT do obliczeń: mysql> SELECT nazwa, cena*5 from towary; mysql> SELECT 4*5; mysql> SELECT kat, count(id_t) from towary group by kat; Można też używać kwerendę SELECT do obliczeń: Można też wykonywać operacje na polach: Porada: wypróbowywać poprawność kwerend w MyPHPAdmin

31 select * from dostawcy where nazwa like "a%"; nazwa rozpoczyna sie od "a" select * from dostawcy where nazwa like "%al%"; nazwa zawiera frazę "al" select * from dostawcy where nazwa like "_a%"; litera "a" na drugim miejscu nazwy Metaznaki % - zastępuje dowolny ciąg znaków _ (podkreślnik) – zastępuje 1 dowolny znak Przykłady:

32 INSERT INTO tabela VALUES (NULL, wartość1, wartość2...); WSTAWIENIE REKORDU Z DANYMI DO WYBRANYCH PÓL Pozostałe pola pozostaną puste, jeśli nie mają cechy WYMAGANIE – not null INSERT INTO tabela SET p_key=NULL, pole1=wartość1, pole2=wartość2...;

33 NOT : logiczna negacja. MySQL dopuszcza jako alternatywną notację wykrzyknik ( ! ). OR : logiczna alternatywa. MySQL dopuszcza alternatywną notację || AND : logiczna koniunkcja. Tu również MySQL dopuszcza notację &&. Operatory logiczne w klauzuli WHERE

34 Wyrażenia logiczne Każda wartość różna od zera i NULL odpowiada w wyrażeniu logicznym prawdzie; NULL i zero reprezentują wartość fałsz Złożone wyrażenia logiczne, zbudowane za pomocą operatorów logicznych, zwracają: 1 jako reprezentację wartości prawdziwej, 0 jako reprezentację fałszu.

35 W teorii relacyjnych baz danych wartość NULL Specjalna wartość reprezentująca wartość nieokreśloną, brakującą lub nieznaną. Jest różna od wszelkich konkretnych wartości, w szczególności od ciągu pustego (" ") i zera (0). Dowolne wyrażenie, w którym wystąpi ta wartość, również przybierze wartość Null Nie możemy sprawdzać, jaka jest wartości Null jedynie czy jakaś wartość jest nieokreślona. za pomocą funkcji ISNULL(x)

36 Parametr pola - NOT NULL | NULL: określa, czy NULL jest dopuszczalną wartością w tej kolumnie. Domyślnie wartość NULL jest dopuszczalna, za wyjątkiem kluczy (kolumn indeksowanych) ISNULL(A) zwraca jedynkę, jeżeli wartością A jest NULL, w przeciwnym wypadku zwraca zero.

37 W wypadku porównań wartości które nie są obie tekstowe ani całkowitoliczbowe, MySQL dokonuje automatycznych konwersji typów, co na ogół prowadzi do porównania wyrażeń jako wartości zmiennoprzecinkowych. Jeżeli wartością któregokolwiek z argumentów porównania jest NULL, porównanie zwraca jako wynik NULL (za wyjątkiem funkcji ISNULL.) select id, nazwa, isnull(nazwa) from dostawcy ; | id | nazwa | isnull(nazwa) | 1 | ABC | 0 | 2 | Exbud | 0 | 3 | Bako | 0 | 4 | NULL | 1 | 5 | | 0 select id, nazwa, isnull(nazwa) from dostawcy where !nazwa; | id | nazwa |isnull(nazwa) | | 1 | ABC | 0 | | 2 | Exbud | 0 | | 3 | Bako | 0 | | 5 | | 0 |

38 Porównania w warunkach kwerend Operatory porównania można stosować do wyrażeń liczbowych i tekstowych Wynik porównania wyrażeń tekstowych : wartości zadeklarowane jako BINARY - znosi utożsamienie małych i wielkich liter. jeśli VARCHAR(dlugosc) to utożsamianie małych i wielkich liter

39 Równość:= Nierówność: <> lub != Mniejszy lub równy <= Większy lub równy>= Większy niż> Mniejszy niż< Porównanie do wzorcaLIKE A BETWEEN B AND C: wyrażenie takie jest równoważne A>=B AND A<=C o ile porównywane wyrażenia są tego samego typu. Operatory porównania

40 Przykłady klauzuli WHERE WHERE nazwa_pola1=wartość WHERE n_p1=war1 AND n_p2=war2 WHERE n_p1=war1 OR n_p2=war2 WHERE n_p between war1 AND war2 WHERE cena<100 WHERE n_p LIKE war1 (dla tekstów) WHERE n_p LIKE '%fraza%' WHERE n_p1=wartosc1 OR n_p2=wartosc2

41 SELECT id, nazwa FROM dostawcy; SELECT * FROM magazyn; SELECT id_t, nazwa from magazyn WHERE cena_n>50; SELECT id_t, nazwa from magazyn WHERE cena_n between 50 and 80; SELECT id_t, nazwa from magazyn WHERE cena_n>50 and cena_n<80 ; SELECT id_t, nazwa from magazyn WHERE cena_n>50 and cena_n<80 ORDER BY cena_n ; SELECT id_t, nazwa from magazyn WHERE cena_n>50 and cena_n<80 ORDER BY cena_n desc;//desc oznacza kolejność malejącą Przykłady lub użycie operatora between

42 WHERE tab1.pole_klucz_glowny=tab2.pole_key_kl_obcy Szczególne znaczenie ma klauzula WHERE w postaci: Posiada ważną rolę przy konieczności wyboru danych z dwóch tabel o typie złączenia 1:N

43 Wybór danych z kilku tabel SELECT tabela1.P1, tabela2.K1,... FROM tabela1,tabela2 WHERE tabela1.key_t1=tabela2.f_key_t2 Key_t1 P1 P2 P3 P4 Key_t2 K1 K2 K3 f_key_t2 tabela1tabela2

44 id_mproducentnazwa_p 1NiemcyAUDI 2PolskaFiat 3FrancjaCitroen 4USAFord id_tmarka_idnazwa_t 11A6 21A p 52Cinquecento 62Panda 73Berlingo 83Xara 93C3 markatyp SELECT typ.nazwa_t, marka. nazwa_p FROM marka, typ WHERE marka.id_m=typ.marka_id 1:N Uwaga – wymaganie NOT NULL dla pola marka_id

45 SELECT id, nazwa FROM dostawcy WHERE id<3; SELECT id, nazwa FROM dostawcy WHERE nazwa LIKE 'E%'; SELECT id, nazwa FROM dostawcy ORDER BY nazwa; Proste złączenie przez warunek: SELECT dostawcy.nazwa, magazyn.nazwa FROM dostawcy, magazyn WHERE dostawcy.id_dostawcy= magazyn.id_dostawcy; Inny sposób: SELECT dostawcy.nazwa, magazyn.nazwa_towaru FROM dostawcy INNER JOIN magazyn ON (magazyn.id_dostawcy=dostawcy.id_dostawcy) where id_dostawcy=1; Id _ dostawcy Nazwa 1ABC 2Exbud 3Bako dostawcymagazyn Id_towaru Nazwa Id_dostawcy 1Narty1 2Sanki2 klucz obcy

46 towary idnazwaid_k 1masło1 2kiełbasa1 3szynka1 4rower2 5komputer id_knazwa 1spożywcze 2przemysłowe 3zabawki kategorie klucz obcy klucz główny ZŁĄCZENIA JOIN

47 nazwanazwa_k masłospożywcze kiełbasaspożywcze szynkaspożywcze rowerprzemysłowe NULLzabawki SELECT towary.nazwa, kategorie.nazwa_k FROM towary RIGHT JOIN kategorie ON kategorie.id_k = towary.id_k; SELECT towary.nazwa, kategorie.nazwa_k FROM towary LEFT JOIN kategorie ON kategorie.id_k = towary.id_k; SELECT towary.nazwa, kategorie.nazwa_k FROM towary INNER JOIN kategorie ON kategorie.id_k = towary.id_k; nazwa nazwa nazwa _k masłospożywcze kiełbasaspożywcze szynkaspożywcze rowerprzemysłowe nazwa nazwa nazwa _k masłospożywcze kiełbasaspożywcze szynkaspożywcze rowerprzemysłowe komputerNULL RIGHT i LEFT to tzw. złączenia zewnętrzne można pisać LEFT OUTER i RIGHT OUTER

48 SELECT SPRZEDAZ.Klient, SPRZEDAZ.data_sp FROM MAGAZYN INNER JOIN SPRZEDAZ_SZCZEGOLY ON (MAGAZYN.ID_towaru=SPRZEDAZ_SZCZEGOLY.Id_produktu) INNER JOIN SPRZEDAZ ON (SPRZEDAZ.ID_sprzedazy= SPRZEDAZ_SZCZEGOLY.Id_sprzedazy) WHERE MAGAZYN.ID_towaru<5; Jeśli korzystamy z 3 złączonych tabel: sprzedaz SPRZEDAZ_SZCZEGOLY magazyn

49 SELECT SPRZEDAZ.Klient, SPRZEDAZ.data_sp, KATEGORIE.opis FROM MAGAZYN as mag INNER JOIN SPRZEDAZ_SZCZEGOLY ON (mag.ID_towaru=SPRZEDAZ_SZCZEGOLY.Id_produktu) INNER JOIN SPRZEDAZ ON (SPRZEDAZ.ID_sprzedazy=SPRZEDAZ_SZCZEGOLY.Id_sprzedazy), KATEGORIE INNER JOIN MAGAZYN as mag ON KATEGORIE.Id_kat = mag1.Kod_towaru WHERE mag.ID_towaru<5; ----< sprzedaz SPRZEDAZ_SZCZEGOLY magazyn >----- kategorie >----- unikalność aliasów


Pobierz ppt "MySQL bazy danych dla witryny Wykład 7 Technologie internetowe."

Podobne prezentacje


Reklamy Google