Systemy internetowe Wykład 4 mysql

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

Autor: Joanna Karwowska

Wykład 05 Bazy danych

Język SQL, zajęcia nr 1

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

Internetowe bazy danych

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

Współpraca PHP z 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

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Polecenia SQL

Bazy danych SQL Server 2005

Wykład 6. SQL praca z tabelami 3

Współpraca PHP z MySql cz.2

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

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Kurs. Podstawy MySQL

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

Hurtownia Świętego Mikołaja projekt bazy danych

SYSTEMY TELEINFORMATYCZNE

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

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.

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

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

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

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

Ć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: *******

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.

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

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

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

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

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

<?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

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)

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>

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='$szukaj'" klauzula LIKE (%, _) WHERE tytul LIKE '%przygoda%' $where = " tytul LIKE '%$szukaj%'"

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

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.

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. '->'; }

I część skryptu $zapytanie="select count(*)..."; $pomoc=mysql_query ($zapytanie); $liczba_wyn=mysql_result($pomoc, 0); $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;

Dziękuję za uwagę