MySQL bazy danych dla witryny

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
SQL – Strukturalny język zapytań
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
BD-LAB4 Wojciech Pieprzyca
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Komponenty bazy danych Baza danych Jest to uporządkowany zbiór powiązanych ze sobą danych charakterystycznych dla pewnej klasy obiektów lub zdarzeń,
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński Instrukcja UPDATE.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
Kwerendy –wszystkie typy (usuwające, aktualizujące i inne)
Microsoft Office Access
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Wykład 8 Wojciech Pieprzyca
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
MS ACCESS Kwerendy.
SQL – Structured Query Language (3)
MySQL – ODBC - ACCESS.
Tworzenie bazy danych – mySQL
Bazy danych.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
dr hab. Ryszard Walkowiak prof. nadzw.
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Temat 19: Organizacja informacji w bazie danych – część 1.
SYSTEMY TELEINFORMATYCZNE
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
Tworzenie typów danych i tabel
SQL - Structured Query Language
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Jak zacząć w MS SQL? USE master; GO IF DB_ID (Nbaza') IS NOT NULL DROP DATABASE baza; GO CREATE DATABASE baza; GO USE baza; GO.
Wyprowadzanie informacji z bazy danych - kwerendy wybierające Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Komendy SQL do pracy z tabelami i bazami
Bazy danych Microsoft access 2007.
SYSTEMY TELEINFORMATYCZNE
SQL – część II.
Projektowanie bazy danych
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Autor: Damian Urbańczyk
Typy danych, klucz podstawowy, klucz obcy
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
Bazy danych.
Projektowanie postaci formularza:
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Bazy Danych Wprowadzenie
TEMAT: ACCESS - KWERENDY.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Moduł ECDL-AM5 Bazy danych, poziom zaawansowany Tabele, relacje.
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
S Q L
1 Definicja danych: Do utworzenia tabeli służy instrukcja CREATE TABLE, wymagająca podania nazwy tworzonej tabeli, nazwy każdej kolumny w tej tabeli, typu.
Projekt „NEW-TECH Program rozwoju praktycznych kompetencji nauczycieli zawodów branż nowych technologii” jest współfinansowany przez Unię Europejską Projekt.
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Zapis prezentacji:

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

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

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

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

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

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 pole id nazwa adres 1 ABC Rzeszów... 2 ... rekord rekord

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

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

CREATE TABLE nazwa_tabeli ( TWORZENIE TABELI 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));

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

Typy tekstowe - alfanumeryczne (String) 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 liczbowe (Numeric) 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 daty i godziny (Datetime): TIMESTAMP

USUWANIE REKORDÓW 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'

ZMIANA NAZWY TABELI ALTER TABLE old_name RENAME new_name;

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

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

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

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

USUWANIE TABELI DROP TABLE nazwa_tabeli;

USUWANIE BAZY DROP DATABASE nazwa_bazy;

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

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

SHOW DATABASES; Database abc firma mysql test baza administracyjna

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");

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

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

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

SELECT [tabela.]{* | [lista_pól]} FROM lista_nazw_tabel WYŚWIETLENIE (WYBÓR - SELEKCJA) REKORDÓW TABELI z wykorzystaniem klauzul 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 [ opcja] { do wyboru albo | albo}

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

% - zastępuje dowolny ciąg znaków Metaznaki % - zastępuje dowolny ciąg znaków _ (podkreślnik) – zastępuje 1 dowolny znak Przykłady: 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

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

Operatory logiczne w klauzuli WHERE 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ę &&.

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.

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)

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.

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 |

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

Operatory porównania Równość: = Nierówność: <> lub != Mniejszy lub równy <= Większy lub równy >= Większy niż > Mniejszy niż < Porównanie do wzorca LIKE 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.

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

Przykłady 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ą lub użycie operatora between

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

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 tabela1 tabela2

SELECT typ.nazwa_t, marka. nazwa_p FROM marka, typ id_m producent nazwa_p 1 Niemcy AUDI 2 Polska Fiat 3 Francja Citroen 4 USA Ford id_t marka_id nazwa_t 1 A6 2 A8 3 100 4 126p 5 Cinquecento 6 Panda 7 Berlingo 8 Xara 9 C3 1:N SELECT typ.nazwa_t, marka. nazwa_p FROM marka, typ WHERE marka.id_m=typ.marka_id Uwaga – wymaganie NOT NULL dla pola marka_id

dostawcy magazyn Id_dostawcy Nazwa 1 ABC 2 Exbud 3 Bako Id_towaru Nazwa Id_dostawcy 1 Narty 2 Sanki klucz obcy 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;

ZŁĄCZENIA JOIN towary kategorie id nazwa id_k 1 masło 1 id_k nazwa 2 kiełbasa 1 3 szynka 1 4 rower 2 5 komputer id_k nazwa 1 spożywcze 2 przemysłowe 3 zabawki kategorie klucz obcy klucz główny

SELECT towary.nazwa, kategorie.nazwa_k nazwa nazwa_k masło spożywcze kiełbasa spożywcze szynka spożywcze rower przemysłowe NULL zabawki SELECT towary.nazwa, kategorie.nazwa_k FROM towary RIGHT JOIN kategorie ON kategorie.id_k = towary.id_k; nazwa nazwa _k masło spożywcze kiełbasa spożywcze szynka spożywcze rower przemysłowe komputer NULL 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 _k masło spożywcze kiełbasa spożywcze szynka spożywcze rower przemysłowe RIGHT i LEFT to tzw. złączenia zewnętrzne można pisać LEFT OUTER i RIGHT OUTER

Jeśli korzystamy z 3 złączonych tabel: sprzedaz SPRZEDAZ_SZCZEGOLY magazyn 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;

unikalność aliasów sprzedaz magazyn kategorie SPRZEDAZ_SZCZEGOLY ----< sprzedaz SPRZEDAZ_SZCZEGOLY magazyn >----- kategorie unikalność aliasów 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;