Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Podobne dokumenty
Systemy internetowe Wykład 4 mysql

Wykład 05 Bazy danych

Język SQL, zajęcia nr 1

Autor: Joanna Karwowska

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Instalacja MySQL.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Relacyjne bazy danych. Podstawy SQL

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wykład 5. SQL praca z tabelami 2

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Relacyjne bazy danych. Podstawy SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Podstawy programowania III WYKŁAD 2

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład 5: PHP: praca z bazą danych MySQL

Projektowanie systemów baz danych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

P o d s t a w y j ę z y k a S Q L

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Internetowe bazy danych

Bazy danych. Polecenia SQL

Bazy danych SQL Server 2005

Wykład 6. SQL praca z tabelami 3

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Część VII Baza danych MySQL i PHP

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Systemy GIS Tworzenie zapytań w bazach danych

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

SIECI KOMPUTEROWE I BAZY DANYCH

SQL (ang. Structured Query Language)

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Współpraca PHP z MySql

Bazy danych 7. SQL podstawy

Autor: Joanna Karwowska

Podstawowe informacje o bazach danych. Technologie Informacyjne

Bazy Danych i Usługi Sieciowe

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Bazy Danych i Usługi Sieciowe

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Widok Connections po utworzeniu połączenia. Obszar roboczy

Kurs. Podstawy MySQL

Struktura drzewa w MySQL. Michał Tyszczenko

5. Współpraca z bazą danych MySQL

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych i usługi sieciowe

Przestrzenne bazy danych Podstawy języka SQL

SYSTEMY TELEINFORMATYCZNE

Hurtownia Świętego Mikołaja projekt bazy danych

Paweł Rajba

Bazy danych - wykład wstępny

Bazy danych. Dr inż. Paweł Kasprowski

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Przykładowa baza danych BIBLIOTEKA

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wykład 8. SQL praca z tabelami 5

Język SQL, zajęcia nr 2

Bazy danych w PHP dla początkujących

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Programowanie w Ruby

PHP + MySQL w laboratorium (1)

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Obiektowe bazy danych

Zaawansowane bazy danych i hurtownie danych

Baza danych do przechowywania użytkowników

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Współpraca PHP z MySql cz.2

Bazy danych. dr inż. Arkadiusz Mirakowski

PHP: bazy danych, SQL, AJAX i JSON

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Internetowe bazy danych

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Ćwiczenie zapytań języka bazy danych PostgreSQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Wykład 2. SQL 1 Structured Query Lenguage

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Bazy danych 5. Samozłaczenie SQL podstawy

ACESS- zadania z wykorzystaniem poleceń SQL

2. Podstawy języka SQL

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Połączenie z bazą danych : mysql h u root -p Enter password: *******

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Transkrypt:

Systemy internetowe Wykład 4 mysql MySQL - wstęp SZBD: komercyjne: Microsoft SQL Server, Oracle, DB2... darmowe: MySQL, PostgreSQL, Firebird... MySQL darmowy (użytek niekomercyjny) Wady: niska wydajność przy przetwarzaniu dużych ilości danych. Zalety: wygodny w użyciu, ma wygodny język zapytań, od dawna działa w systemach Windows, od dawna jest obsługiwany przez PHP. 1

PDO, Mysql, Mysqli Początkowo w interpreterze PHP odzwierciedlono szereg różnorodnych API udostępnianych przez różne serwer BD. Począwszy od wersji 5.0, PHP udostępnia specjalny interfejs przeznaczony do komunikacji z bazami danych PDO (PHP Data Objects) PDO umożliwia automatycznie łączenie się z różnymi bazami danych (MySQL, PostgreSQL, Informix, Oracle, IBM, SQLite itd.) PDO jest wygodniejszy, szybszy i bezpieczniejszy niż odrębne interfejsy PHP 5.0 - wersja beta PDO; PHP 5.1. wersja stabilna. mysql mysqli (od PHP 5.0) mysql_connect() mysql_connect(adres_serwera, nazwa_użytkownika, hasło); mysql_connect(): połączenie z serwerem adres serwera adres IP lub nazwa hosta opcjonalnie numer portu serwera standardowo 3306 zwraca identyfikator połączenia (sukces) lub wartość false. $id_pol = mysql_connect('serw:27012', 'admin', 'passwd'); if (!$id_pol) { echo 'Nie można uruchomić polaczenia: '. mysql_error();} $id_pol = mysql_connect( s', a', p') or die(mysql_error()); 2

mysql_close(), mysql_query() mysql_close($id_polacz); mysql_close(): zamyka połączenie o podanym identyfikatorze bez parametrów zamyka ostatnie połączenie $id_zap=mysql_query("treść zapytania"); mysql_query(): przesyła zapytanie do serwera MySQL o podanej treści zwraca identyfikator zapytania (sukces) lub wartość false. Utworzenie bazy danych mysql_create_db('nazwa_bazy'); mysql_create_db() tworzy bazę danych zwraca wartość true (sukces); false, gdy baza o takiej nazwie istnieje lub użytkownik nie ma uprawnień do jej utworzenia. mysql_select_db('nazwa_bazy'); mysql_select_db() wybiera bazę danych 3

Utworzenie tabeli CREATE TABLE tworzy tabelę w bazie dodatkowe atrybuty pola: np. NOT NULL, auto_increment, dodatkowe atrybuty tabeli: np. PRIMARY KEY CREATE TABLE nazwa_tabeli (nazwa_p1 typ_p1 [atrybuty],... nazwa_pn typ_pn [atrybuty], PRIMARY KEY(nazwa_pX)) Utworzenie tabeli typy pól char(dl) rozmiar = podanej liczbie bytów varchar(dl) rozmiar równy długości tekstu + 1 (max 255) text max 65.536 znaków int - liczby całkowite (4B) float (4B); double (8B) date data; year - rok... CREATE TABLE metryka (id int not null auto_increment, imie char(15), nazwisko char(30), PRIMARY KEY(id)) 4

Dodanie rekordu INSERT INTO nazwa_tabeli (nazwa_pola1, nazwa_pola2) VALUES ('wartosc_pola1', 'wartosc_pola2') INSERT INTO dodaje rekord do tabeli o podanej nazwie pola z atrybutem AUTO_INCREMENT! INSERT INTO metryka (id,imie,nazwisko) VALUES ('', 'John','Smith') Usunięcie rekordu DELETE FROM nazwa_tabeli [WHERE warunek] DELETE FROM usuwa rekordy spełniające podany warunek z tabeli o podanej nazwie bez frazy WHERE usuwane są wszystkie rekordy DELETE FROM metryka WHERE imie= John TRUNCATE TABLE nazwa_tabeli DROP TABLE nazwa_tabeli DROP DATABASE nazwa_bazy 5

Aktualizacja rekordu UPDATE nazwa_tabeli SET nazwa_pola1='wartosc_pola1', nazwa_pola2='wartosc_pola2' [WHERE warunek] UPDATE ustawienie wybranych pól we wskazanej tabeli na żądane wartości fraza WHERE nieobowiązkowa kilka warunków - przecinki UPDATE metryka SET imie='asia' WHERE id='1' Wybór rekordu SELECT nazwa_pola1,nazwa_pola2,..., nazwa_polan FROM nazwa_tabeli [WHERE warunek] SELECT: wybór wybranych pól z wskazanej tabeli fraza WHERE nieobowiązkowa SELECT id, imie, nazwisko FROM metryka WHERE imie= ASIA SELECT id, imie, nazwisko FROM metryka 6

<?php $id_polacz = mysql_connect('localhost','root',''); mysql_create_db( baza_uzytkownikow'); mysql_select_db(' baza_uzytkownikow'); $utworz="create TABLE dane (id int auto_increment, imie char(15), nazwisko char(30), PRIMARY KEY(id))"; $id_zap=mysql_query($utworz); $nowy="insert INTO dane (id, imie, nazwisko) VALUES ('', 'Ala', 'K')"; $id_zap=mysql_query($nowy); $nowy="insert INTO dane (id, imie, nazwisko) VALUES ('', Ola', W')"; $id_zap=mysql_query($nowy); $nowy="insert INTO dane (id, imie, nazwisko) VALUES ('', Ula', M')"; $id_zap=mysql_query($nowy); $wybierz = "SELECT id, imie, nazwisko FROM dane ; $id_zap = mysql_query($wybierz); echo '<table>'; while ($wiersz = mysql_fetch_array($id_zap)) { echo '<tr><td>'. $wiersz['id']. '</td><td>'. $wiersz['imie']. '</td><td>'. $wiersz['nazwisko']. '</td></tr>'; } echo '</table>'; mysql_close($id_polacz);?> mysql_fetch_array odwołania po indeksach lub nazwach pól mysql_fetch_row odwołania tylko po indeksach pól 7

Kilka dodatków SELECT nazwisko FROM dane ORDER BY nazwisko ASC SELECT nazwisko FROM dane ORDER BY nazwisko DESC SELECT produkt, cena FROM tabela WHERE cena>2 AND cena<5 SELECT MIN(imie) AS pierwsze FROM metryka UPDATE tabela SET cena=cena+1 Złączenia (1) SELECT ksiazka.tytul, autor.nazwisko FROM ksiazka INNER JOIN autor ON (ksiazka.id_ksiazki=autor.id_ksiazki) SELECT ksiazka.tytul, autor.nazwisko FROM ksiazka INNER JOIN autor USING (id_ksiazki) 8

Złączenia (2) SELECT kw.tytul, a1.nazwisko FROM ksiazka_wypozyczona AS kw INNER JOIN autor_pierwszy AS a1 USING (id_ksiazki) SELECT ksiazka.tytul, autor.nazwisko, adres.ulica FROM ksiazka INNER JOIN autor USING (id_ksiazki) INNER JOIN adres USING (id_autora)... Wyszukiwarka formularz <form method="get" action="wyniki.php"> <input type="text" name="kryteria"/> <input type="submit" name="szukaj" value="szukaj"/> </form> 9

Wyszukiwarka budowa zapytania Skrypt wyniki.php: wyszukanie rekordów, których pole o nazwie tytuł spełnia postawione zapytanie, wyświetlenie wyników zapytania ze stronicowaniem $query = "SELECT * FROM tabela"; $szukaj = $_GET['kryteria']; $where = '';...konstrukcja frazy where... if (!empty($where)) { $query = $query. " WHERE $where"; } Where (1) zwykłe przypisanie WHERE tytul = 'przygoda' $where = " tytul='$kryteria'" klauzula LIKE (%, _) WHERE tytul LIKE '%przygoda%' $where = " tytul LIKE '%$kryteria%'" 10

Where (2) $szukaj = 'morze rejs'; WHERE tytul='morze' OR tytul='rejs' explode('separator', 'dzielony łańcuch'); $tablica_slow=explode(' ',$szukaj); implode('separator', 'lista słów'); $where=implode(' OR ', $tablica_slow); WHERE morze OR rejs Źle! $lista_kryteriow[0]=" tytul='$tablica_slow[0]'"; $lista_kryteriow[1]=" tytul='$tablica_slow[1]'"; $where=implode(' OR ', $lista_kryteriow); Dobrze! Where (3) Analiza początku słowa: np. znak plus - AND, np. minus NOT, nic - OR. Znaki przestankowe $szukaj='morze, rejs'; WHERE tytul='morze,' OR tytul='rejs' str_replace("co", "czym", "gdzie"); $szukaj = str_replace(",", " ", $szukaj); 11

Where (4) Zbędne spacje powstają: po zastosowaniu funkcji str_replace wskutek nieuwagi użytkownika Zbędne spacje w przypadku łącznika OR spowodują, że wszystkie rekordy w bazie będą spełniały zapytanie. $szukaj='morze rejs'; WHERE tytul LIKE '%morze%' OR tytul LIKE '%%' OR Kolejność: tytul LIKE '%rejs%' najpierw czyścimy łańcuch funkcją str_replace, potem dzielimy funkcją explode, potem pomijamy puste pola funkcją empty, na koniec łączymy kolejne pola funkcją implode. Stronicowanie wyników zapytania Ograniczenie liczby wyników wyświetlanych na stronie SELECT * FROM tabela LIMIT n SELECT * FROM tabela LIMIT m, n LIMIT określa ile wierszy ma zwrócić zapytanie zwraca n początkowych wierszy zapytania; ile początkowych wierszy ma zostać pominiętych, ile następnych wyników ma zostać zwróconych. 12

Linki nawigacyjne Wygenerowanie odnośników nawigacyjnych do stron zawierających wcześniejsze/późniejsze wyniki <- 1 2 3 4 -> <- link do poprzedniej strony 1 2 3 4 link do strony o podanym numerze -> link do kolejnej strony <- ma być linkiem, jeżeli aktualna jest inna niż 1-sza strona 1 2 3 4 ma być linkiem, jeżeli nie jest stroną aktualną -> ma być linkiem, jeżeli aktualna jest inna niż ostatnia strona $linki=' '; if ($str>1) { $linki=$linki. '<a href="'.$_server['php_self']. '?szukaj='.$szukaj. '&str='.($str-1).'"><-</a>'; } else { $linki=$linki. '<-'; } for($i=1; $i<=$liczba_str; $i++) { if ($str==$i) { $linki=$linki.' '.$i; } else { $linki=$linki. '<a href="'.$_server['php_self']. '?szukaj='.$szukaj. '&str='.$i.'">'.$i.'</a>'; }} if ($str<$liczba_str) { $linki=$linki. '<a href="'.$_server['php_self']. '?szukaj='.$szukaj. '&str='.($str+1).'">-></a>'; } else { $linki=$linki. '->'; } 13

I część skryptu $zapytanie="select count..."; $liczba_wyn=mysql_query($zapytanie); $liczba_na_str=10; $liczba_str=$liczba_wyn/$liczba_na_str; $liczba_str=ceil($liczba_str); if (isset($_get['str'])) $str=$_get['str']; else $str=1; $pomin=($str-1)*$liczba_na_str; II część skryptu $zapytanie= "SELECT * FROM tabela WHERE $where LIMIT $pomin, $liczba_na_str"; $wyniki=mysql_query($zapytanie); while ($wiersz=mysql_fetch_array($wyniki)) { wyświetlenie kolejnych rekordów na stronie } generowanie linków; echo $linki; 14

Dziękuję za uwagę 15