Internetowe bazy danych

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

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

Wykład 4. SQL praca z tabelami 1

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Oracle PL/SQL. Paweł Rajba.

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Wykład 5. SQL praca z tabelami 2

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Kurs WWW. Paweł Rajba.

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych 7. SQL podstawy

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

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

Wykład 2 Składnia języka C# (cz. 1)

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy programowania skrót z wykładów:

Wykład 4: Klasy i Metody

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

Oracle PL/SQL. Paweł Rajba.

Wykład 8: klasy cz. 4

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Autor: Joanna Karwowska

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

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Internetowe bazy danych

Administracja i programowanie pod Microsoft SQL Server 2000

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

CREATE USER

Test przykładowy 2 PAI WSB Wrocław /06/2018

Pakiety podprogramów Dynamiczny SQL

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

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

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

OBIEKTY PHP. G. Panuś

Bazy danych. Polecenia SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Lista dostępnych baz danych: SHOW DATABASES; Lista dostępnych tabel: SHOW TABLES;

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

Autor: Joanna Karwowska

PODSTAWY BAZ DANYCH 13. PL/SQL

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

PHP 5 język obiektowy

Administracja i programowanie pod Microsoft SQL Server 2000

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

TEMAT : KLASY DZIEDZICZENIE

Bloki anonimowe w PL/SQL

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Podstawy programowania III

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Programowanie obiektowe

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Programowanie Obiektowe i C++

Bazy danych 6. Klucze obce. P. F. Góra

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Bazy danych 10. SQL Widoki

Dokumentacja do API Javy.

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wykład 2. SQL 1 Structured Query Lenguage

Język PL/SQL Procedury i funkcje składowane

Instalacja MySQL.

SQL 4 Structured Query Lenguage

Bazy danych 5. Samozłaczenie SQL podstawy

Indeksowanie w bazach danych

Data modyfikacji:

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Składowane procedury i funkcje

SQL (ang. Structured Query Language)

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Procedury i funkcje składowane

Oracle PL/SQL. Paweł Rajba.

15. Funkcje i procedury składowane PL/SQL

Programowanie obiektowe

Bazy danych 4. SQL podstawy. P. F. Góra

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Relacyjne bazy danych. Podstawy SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Przydatne sztuczki - sql. Na przykładzie postgres a.

Widok Connections po utworzeniu połączenia. Obszar roboczy

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Programowanie obiektowe

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

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

Język PL/SQL Pakiety podprogramów

Wykład 8. SQL praca z tabelami 5

Język SQL, zajęcia nr 1

Transkrypt:

Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 10 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl

Struktura klasy tworzenie klasy słowo kluczowe class definicja klasy: atrybuty zadeklarowanie zmiennych wewnątrz klasy słowo kluczowe var: operacja zadeklarowanie funkcji wewnątrz definicji klasy class nazwaklasy class nazwaklasy var $atrybut1; var $atrybut2; class nazwaklasy function operacja1() function operacja2($param1, $param2)

Konstruktory specjalny typ operacji, wywoływany przy tworzeniu obiektu inicjalizacja zadań nadawanie atrybutom wartości tworzenie innych obiektów wymaganych przez dany obiekt deklarowany jak inne operacje, nazwa jak klasa automatyczne wywołanie przy tworzeniu obiektu class nazwaklasy function nazwaklasy($param) echo Konstruktor wywołany z parametrem $param<br> ; brak przeciążania funkcji tylko jedna funkcja o danej nazwie w tym konstruktor

Tworzenie egzemplarzy tworzenie obiektów słowo kluczowe new podać klasę, której obiekt jest członkiem podać nazwę obiektu podać wszystkie parametry wymagane przez konstruktor class nazwaklasy function nazwaklasy($param) echo Konstruktor wywołany z parametrem $param<br> ; $a = new nazwaklasy( Pierwszy ); $a = new nazwaklasy( Drugi ); $a = new nazwaklasy(); Konstruktor wywołany z parametrem Pierwszy Konstruktor wywołany z parametrem Drugi Konstruktor wywołany z parametrem

Stosowanie atrybutów klasy (1) wewnątrz klasy dostęp do wskaźnika $this jeśli nazwa atrybutu $atrybut to odwołanie do niego: $this->atrybut ustawianie i dostęp do atrybutu wewnątrz klasy: class nazwaklasy var $atrybut; function operacja($param) $this->atrybut = $param; echo $this->atrybut ; wszystkie atrybuty i operacje widoczne na zewnątrz klasy wszystkie atrybuty i operacje są publiczne

Stosowanie atrybutów klasy (2) inna składnia poprzedniego zadania class nazwaklasy var $atrybut; $a = new nazwaklasy(); $a->atrybut = wartość ; echo $a->atrybut ; nie jest dobry bezpośredni dostęp do atrybutów spoza klasy funkcje dostępowe zamknięcie dostępu w jednym fragmencie kodu - kapsułkowanie class nazwaklasy var $atrybut; function wez_atrybut() return $this->atrybut; function ustaw_atrybut($nowa_wartosc) $this->atrybut = $nowa_wartosc;

Stosowanie atrybutów klasy (3) dostęp do atrybutu zwrot wartości, przypisanie wartości banalne ale jeden fragment kodu gdzie dostęp do atrybutu możliwość testowania czy dane sensowne function ustaw_atrybut($nowa_wartosc) if($nowa_wartosc >= 0 && $nowa_wartosc <= 100) $this->atrybut = $nowa_wartosc; alternatywa zmiana w wielu miejscach kodu jeden punkt dostępu łatwość zmiany implementacji przechowywanie w bazie danych, szacowanie wartości na podstawie innych atrybutów zawsze jedynie modyfikacja funkcji dostępowych

Wywoływanie operacji klas operacje klas wywoływane podobnie do atrybutów - klasa class nazwaklasy function operacja1() function operacja2($param1, $param2) utworzenie obiektu o nazwie $a operacje wywołane jak inne funkcje z parametrami należy wskazać do którego obiektu operacja przypisana $a->operacja1(); $a->operacja2(12, test ); $x = $a->operacja1(); $y = $a->operacja2(12, test ); jeśli operacje zwracają wartości przypisanie do zmiennych

Dziedziczenie w PHP jeśli klasa ma być podklasą innej słowo kluczowe extends tworzona klasa B dziedziczy od klasy A już zdefiniowanej class B extends A var $atrybut2; function operacja2() class A var $atrybut1; function operacja1() prawidłowe próby dostępu do operacji i atrybutów obiektu B: $b = new B(); $b->operacja1(); $b->atrybut1 = 10; $b->operacja2(); $b->atrybut2 = 10; $a = new A(); $a->operacja1(); $a->atrybut1 = 10; $a->operacja2(); $a->atrybut2 = 10; dziedziczenie w jedną stronę! klasa B jako podklasa A ma taką samą funkcjonalność, dane, ma własny atrybut i operację

Unieważnianie (1) można ponownie zadeklarować te same atrybuty i operacje atrybut podklasy ma inną wartość domyślną niż w nadklasie operacja podklasy ma mieć inną funkcjonalność niż operacja w nadklasie takie działania to unieważnianie class A var $atrybut = domyślna wartość ; function operacja() echo Coś<br> ; echo Wartość \$atrybut wynosi $this->atrybut<br> ; klasa B unieważnia $atrybut i operacja():

Unieważnianie (2) class B extends A var $atrybut = inna wartość ; function operacja() echo Coś innego<br> ; echo Wartość \$atrybut wynosi $this->atrybut<br> ; deklaracja B nie ma wpływu na definicję A $a = new A(); $a->operacja(); Coś Wartość $atrybut wynosi domyślna wartość $b = new B(); $b->operacja(); Coś innego Wartość $atrybut wynosi inna wartość podklasa dziedziczy wszystkie atrybuty i operacje nadklasy zamienniki unieważniają oryginalne definicje PHP nie pozwala na unieważnienie funkcji i późniejsze odwołanie do jej wersji zdefiniowanej w rodzicu

Wielodziedziczenie brak wielodziedziczenia! każda klasa może dziedziczyć tylko od jednego rodzica nie ma ograniczeń w ilości dzieci jednego rodzica A A A B B B C C C dziedziczenie wielodziedziczenie

<?php class ShoppingBasket var $fitems; var $fcurvalue; /* jest to konstruktor klasy, ponieważ ma taką samą nazwę jak klasa. Tak samo jak w C++ konstruktor może posiadać argumenty W tym przypadku jest to początkowa wartość koszyka. Może być to stała prowizja lub rabat.. */ function ShoppingBasket( $ainitialvalue = 0.0 ) $this->fcurvalue = $ainitialvalue; // Dodanie określonej ilości przedmiotów function AddItem( $aname, $avalue, $aquantity = 1 ) $this->fitems[$aname]["quantity"] += $aquantity; $this->fitems[$aname]["value"] = $avalue; $this->fcurvalue += $avalue * $aquantity; return True;

function RemoveItem($aName, $aquantity = 1) // Usuwamy określoną ilość przedmiotów // jedynie, gdy była dostępna wystarczająca ich ilość if ( $this->fitems[$aname]["quantity"] > $aquantity ) $this->fitems[$aname]["quantity"] -= $aquantity; $this->fcurvalue -= $this->fitems[$aname]["value"] * $aquantity; else return False; function PrintBasket( ) if ( count( $this->fitems ) > 0 ) print( "Zawartość koszyka:<blockquote>" ); foreach( $this->fitems as $akey => $avalue ) print( "$avalue['quantity'] $akey<br>" );

print( "Wartość całkowita: $". number_format( $this->fcurvalue,2)); print( "</blockquote>" ); print( "<br>" ); else print( "<i>koszyk jest pusty</i><br><br>" ); /* Tworzenie nowego obiektu ShoppingBasket. Dodanie kilku przedmiotów usunięcie kilku przedmiotów i wypisanie zawartości koszyka */ $abasket = new ShoppingBasket( 3.50 ); $abasket->printbasket(); $abasket->additem( "gizmo", 1.50 ); // dodanie 1 gizmo $abasket->printbasket(); $abasket->additem( "foobar", 2.10, 6 ); // dodanie 6 foobarów $abasket->printbasket(); $abasket->removeitem( "foobar", 15 ); $abasket->printbasket(); $abasket->removeitem( "foobar", 3 ); $abasket->printbasket();?>

Zestawy znaków i sortowanie zestaw znaków zestaw symboli i kodowania sortowanie zestaw zasad stosowanych podczas porównywania znaków w zestawie znaków MySQL wobec zestawów znaków przechowuje łańcuchy z użyciem różnych zestawów znaków porównuje łańcuchy przy użyciu różnego sortowania miesza łańcuchy o różnych zestawach znaków lub o różnym sortowaniu, na poziomie serwera, bazy danych, tabeli Obsługa znaków jak działa SHOW CHARACTER SET lista obsługiwanych zestawów Charset Description Default collation hp8 HP West European hp8_englis_ci

Porządki sortowania każdy zestaw znaków ma przynajmniej 1 sortowanie SHOW COLLATION porządki sortowania dla zestawu przykład: SHOW COLLATION LIKE latin1% ; Collation Charset Id Default Compiled Sotrlen Latin1_swedish_ci Latin1 8 Yes Yes 1 jeśli tworząc tabelę nie określono zestawu znaków i sortowania dla tej tabeli jest użyty porządek dla bazy danych domyślnej: character_set_database, collation_database jeśli brak bazy domyślnej jak parametry ustawione dla serwera: character_set_server i collation_server.

Zestaw znaków i sortowanie dla tabeli każda tabela ma swój zestaw znaków i sortowanie CREATE TABLE, ALTER TABLE pozwalająokreślić zestaw znaków i sortowanie CREATE TABLE nazwa_tabeli (lista kolumn) DEFAULT CHARACTER SET nazwa_zestawu COLLATE nazwa_sortowanie ALTER TABLE nazwa_tabeli (lista kolumn) DEFAULT CHARACTER SET nazwa_zestawu COLLATE nazwa_sortowanie jeśli określono CHARACTER SET X i COLLATE Y działa zgodnie z wyborem jeśli jest CHARACTER SET X i brak COLLATE, to zestaw wybrany obowiązuje, sortowanie domyślne jeśli nic nie określono to domyślne ustawienia bazy domyślnej, bądź serwera

Zestaw znaków i sortowanie dla kolumny każda kolumna znakowa: CHAR, VARCHAR, TEXT ma swój zestaw znaków i sortowanie w CREATE TABLE, ALTER TABLE można określić zestaw znaków i sortowanie CREATE TABLE Table1 ( column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german_ci; ); jeśli określono CHARACTER SET X i COLLATE Y działa zgodnie z wyborem jeśli jest CHARACTER SET X i brak COLLATE, to zestaw wybrany obowiązuje, sortowanie domyślne jeśli nic nie określono to przenoszą się ustawienia z tabeli, do której kolumna przynależy.

Przykłady CREATE TABLE t1 ( c1 CHAR(10) CHARACTER SET latin1 COLLATE latin_german_c1 ) DEFAULT CHARACTER SET latin2 COLLATE latin2_bin; CREATE TABLE t1 ( c1 CHAR(10) CHARACTER SET latin1 ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci; CREATE TABLE t1 ( c1 CHAR(10) ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci; CREATE DATABASE d1 DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_ci; USE d1; CREATE TABLE t1 ( c1 CHAR(10) );

Zestawy znaków i sortowanie dla połączenia (1) Jaki zestaw znaków ma zapytanie wychodzące od klienta? - zmienna character_set_client ustala taki zestaw Na jaki zestaw znaków serwer powinien przetłumaczyć zapytanie po jego odebraniu? - zmienne character_set_connection i collation_connection mówią jak przekształcą się zapytania klienta, collation_connection szczególnie ważna do porównywania łańcucha znaków Na jaki zestaw znaków powinien przetłumaczyć serwer zbiory wynikowe lub komunikaty o błędzie? - zmienna character_set_results definiuje zestaw znaków: dane wynikowe wartości kolumn, a także nazwy kolumn Zmienne opisywane powyżej są ustawialne: SET NAMES x wszystko od klienta przychodzące będzie w x SET character_set_client = x; SET character_set_results = x; SET character_set_connection = x; Domyślnie: collation_connection = x;

Zestawy znaków i sortowanie dla połączenia (2) SET CHARACTER SET x jest równoważne zestawowi operacji: SET character_set_client = x; SET character_set_results = x; SET collation_connection = @@collation_database; Domyślnie: collation_connection = x; dla klienta mysql nie trzeba ustawiać SET NAMES przy każdym uruchomieniu, wystarczy w wierszu instrukcji podać: --default-character-set=koir8r Serwer nie będzie wykonywał żadnych konwersji gdy: SET character_set_results = NULL;

Zestawy znaków i sortowanie dla łańcucha znaków (1) SELECT łańcuch SELECT _latin1 łańcuch ; SELECT _latin1 łańcuch COLLATE latin1_danish_ci; w pierwszej odsłonie zestaw znaków i sortowanie określono w zmiennych systemowych: character_set_conection i collation_connection nazwa zestawu znaków to introduktor, który zawiadamia serwer że docierający łańcuch jest w zestawie x można umieścić introduktor przed literałem szestnastkowym i? substytutem parametrów: SELECT _latin1 x AABBCC SELECT _latin1 0xAABBCC; SELECT _latin1?:

Zestawy znaków i sortowanie dla łańcucha znaków (2) select k from t1 order by k collate latin1_german2_ci select k collate latin1_german2_ci as k1 from t1 order by k1; select k from t1 group by k collate latin1_german2_ci; select max(k collate latin1_german2_ci) from t1; select distinct k collate latin1_german2_ci from t1; select * from t1 group by k having k = _latin1 Müller collate latin1_german2_ci; select * from t1 where _latin1 Müller collate latin1_german2_ci like k;

Zestawy znaków i sortowanie dla łańcucha znaków (3) x y COLLATE z równoważne x (y COLLATE z) wysoki priorytet COLLATE wyższy niż operator BINARY to skrót dla COLLATE gdyż BINARY x równoważne jest x COLLATE y przy założeniu, że y to nazwa binarnego porządku sortowania dla zestawu x, każdy zestaw ma binarny porządek sortowania: SELECT * FROM t1 ORDER BY BINARY a; SELECT * FROM t1 ORDER BY a COLLATE latin1_bin; Operacje na które ma wpływ obsługa znaków (1) odrębnie rozważa się funkcje które na wejściu i wyjściu mają jeden i ten sam łańcuch, i kleją wiele łańcuchów

Operacje na które ma wpływ obsługa znaków (2) INSTR(), LCASE(), LOWER(), LTRIM(), REPLACE(), MID(), REVERSE(), RIGHT(), RPAD(), RTRIM(), SOUNDEX(), UPPER() jednołańcuchowe jeśli jest COLLATE x użyć sortowania COLLATE x jeśli są dwie konstrukcje COLLATE x i COLLATE y błąd CONVERT(), CAST() przekształcanie danych między różnymi zestawami znaków CONVERT (wyrażenie USING nazwa_transkodowania) SELECT CONVERT (polelatin1 USING utf8) FROM tabelalatin1; CAST (łańcuch_znaków AS typ_danych_znakowych CHARACTER SET nazwa_zestawu_znaków) SELECT CAST (_latin1 test AS CHAR CHARACTER SET utf8);

Obsługa Unicode zestaw znaków Unicode UCS-2 binarna reprezentacja danych każdy znak to kod dwubajtowy, najbardziej znaczący jako pierwszy litera A ma kod 0x0041 i jest pamiętana jako: 0x00 0x41 litera ы ma kod 0x044B i jest pamiętana jako 0x04 0x4B nie działa jako zestaw klienta SET NAMES ucs2 nie działa zestaw znaków Unicode UTF8 sekwencje bajtowe mają różne długości litery łacińskie, cyfry, znaki przestankowe to jeden bajt, większość europejskich i bliskowschodnich liter mieści w sekwencji dwubajtowej, alfabety dalekowschodnie to sekwencje trzybajtowe sekwencje czterobajtowe nie są obsługiwane UTF8 jest stosowany do pamiętania metadanych USER(), CURRENT_USER(), VERSION() mają domyślny zestaw UTF8