Wszelkie prawa zastrzeżone. Rozpowszechnianie arty kułu bez zgody Software Wy dawnictwo Sp. z o.o. zabronione.
|
|
- Barbara Włodarczyk
- 8 lat temu
- Przeglądów:
Transkrypt
1 2 / Wszelkie prawa zastrzeżone. Rozpowszechnianie arty kułu bez zgody Software Wy dawnictwo Sp. z o.o. zabronione. Softw a r e W y da w n ict w o Sp. z o.o., u l. Lew a r tow skieg o 6, W a r sza w a, POLSKA. Kon ta kt : Da r iu sz Pa w łow ski (dpa w low ski@ph psolm a g.or g )
2 Początki, czyli Interbase za darmo Anatol Ogórek Programista PHP najczęściej wybiera MySQL lub PostgreSQL wychodząc z założenia, że produkt najpopularniejszy oznacza najlepszy. Ten warunek nie zawsze jest jednak spełniony. Od 2000 roku bardzo intensywnie rozwijany jest projekt. Efektem prac jest darmowa, w pełni relacyjna i profesjonalna baza danych, wprost idealna dla webdeweloperów. W SIECI 1. oficjalna strona a 2. informacje na temat Interbase/ 3. strona dla użytkowników IB/FB 4. de/ strona z narzędziami dla IB/FB (po niemiecku) 5. strona dla początkujących użytkowników FB 6. rge.net/ interfejs webowy do zarządzania FB/IB NA CD Na dołączonym do pisma CD znajdują się wszystkie omawiane w artykule skrypty oraz program instalacyjny a. Zalet spółki PHP + SQL nie sposób nie docenić. Co ciekawe, wielu webmasterów utożsamia SQL-a z bazą danych MySQL sądząc, że jest to jedyne słuszne rozwiązanie. Niektórzy wykorzystują też coraz popularniejszego SQLite'a lub linuksowego PostgreSQL-a. To jednak nie koniec dobrych rozwiązań. Mało tego, istnieją systemy lepsze, a jednym z nich jest. Nazwa wielu osobom skojarzy się (po części słusznie) z odchudzoną przeglądarką internetową Mozilla, którą nieświadomie ochrzczono w ten sposób. Spowodowało to spore zamieszanie i wiele dyskusji, ponieważ nazwa ta była już wcześniej zajęta przez darmową bazę danych, która mimo wielu zalet ciągle jest niestety mało znana. 25 lipca 2000 roku Borland opublikował kod źródłowy swojej, do dzisiaj bardzo popularnej bazy Interbase na licencji IPL (InterBase Public License v.1.0). Wtedy na jego podstawie został zapoczątkowany projekt SQL, który ma na celu dalsze rozwijanie bardzo już solidnego narzędzia Borlanda. stał się bazą danych oferowaną na licencji Open Source, a co za tym idzie, zupełnie darmową i do dzisiejszego dnia intensywnie rozwijaną. Co należy wiedzieć? Czytelnikowi przyda się ogólna wiedza na temat relacyjnych baz danych. Powinien też znać podstawy PHP. Co obiecujemy? Z artykułu czytelnik dowie się, jak zbudować aplikację bazodanową w oparciu o a, z uwzględnieniem takich cech jak transakcyjność, wyzwalacze czy blokady na poziomie wierszy. Powiemy też, dlaczego a w przeciwieństwie do MySQL-a można uważać za w pełni relacyjną bazę danych. 44
3 Początki Dostępny jest na wielu różnych platformach, począwszy od Linuksa, poprzez szereg innych systemów uniksowych i Microsoft Windows, a na Mac OS X kończąc. Przyjrzyjmy się bliżej jego możliwościom. Potęga ognistego ptaka Niewątpliwie za jedną z większych zalet a można uznać jego łatwość obsługi. Instalacja pod Windows sprowadza się do kilku kliknięć myszką, natomiast w systemach uniksowych wystarczy uruchomić odpowiedni skrypt instalacyjny. Baza potrzebuje bardzo niewielu zasobów systemowych, zarówno jeśli chodzi o miejsce na dysku jak i pamięć operacyjną. Wynika to stąd, że silnik Interbase projektowany był w czasach, gdy komputery nie miały jeszcze tak dużej mocy obliczeniowej jak obecnie. Nie oznacza to, że baza jest prymitywna - wręcz przeciwnie, funkcjonalnością dorównuje wielu komercyjnym i drogim odpowiednikom. Pliki bazy danych mogą być rozmieszczone w wielu różnych miejscach na dysku i nic nie stoi na przeszkodzie, aby przechowywać je na osobnych partycjach. Jest to niewątpliwą zaletą, jeśli spodziewamy się, że nasza baza może w przyszłości osiągnąć duży rozmiar. Kolejną cechą a jest niemal pełna zgodność ze standardami SQL: zaimplementowano w niej większość cech SQL-89, SQL-92 oraz część właściwości SQL-99. System posiada pełną obsługę złączeń warunkowych i bezwarunkowych (ang. inner join, left join, right join, outer join), unie (ang. unions) i perspektywy (ang. views). Dla użytkowników MySQL-a nowością będzie możliwość korzystania z podzapytań (ang. subqueries). Dodatkowo wsparcie dla pól wyliczanych (ang. calculated fields), procedur składowanych (ang. stored procedures), wyzwalaczy (ang. triggers), wyzwalaczy na perspektywach, więzów (ang. constraints) czy też lokalizacji sprawia, że bazę można uznać za w pełni profesjonalną. Generatory Każda baza danych posiada swój mechanizm nadawania unikalnych identyfikatorów. Przykładowo w MySQL możemy korzystać z pól typu autoincrement, a w Oracle z sekwencji. W zie wykorzystuje się generatory. Generator nie jest ściśle powiązany z żadną kolumną, ani nawet z żadną tabelą. Może się zdarzyć, że jeden generator będzie obsługiwał wszystkie tabele naszej bazy. Zwykle jednak przyjmuje się, że istnieje osobny generator dla każdej tabeli, która posiada klucz główny (ang. primary key). Aby stworzyć generator, wystarczy wykonać polecenie: CREATE GENERATOR nazwa_generatora; Następnie, aby nadawanie unikalnych numerów odbywało się automatycznie, można na tabelę założyć wyzwalacz: :SET TERM!! ; CREATE TRIGGER SET_UNIQUE_ FOR OUR_TABLE BEFORE INSERT AS BEGIN IF (NEW. IS NULL) THEN NEW. = GEN_(OUR_TABLE_GENERATOR, 1); END!! SET TERM ;!! W tym wypadku przed wstawieniem wiersza do tabeli, jeśli pole ma wartość NULL nadawana jest mu kolejna wartość generatora. Nie jest jednak konieczne używanie wyzwalaczy. Wartość generatora można również pobrać i wstawić do bazy ręcznie za pomocą funkcji: GEN_(nazwa_generatora, skok). Bardzo ważną cechą generatorów jest to, że nie są transakcyjne. Jeśli rozpoczniemy transakcję, pobierzemy kolejną wartość z generatora, a następnie anulujemy transakcję, generator nie cofnie się do poprzedniej wartości. Wbrew pozorom jest to olbrzymia zaleta, ponieważ daje nam stuprocentową pewność, że otrzymamy unikalne. Dla webdeweloperów świetnie nadaje się do tworzenia dynamicznych serwisów WWW. Ciężko podać przypadek, w którym nie sprostałby naszym wymaganiom. Jeśli potrzebujemy bazy prostej w administracji, wieloplatformowej, mającej niewielkie wymagania sprzętowe, a do tego darmowej, wybór może być tylko jeden. Istnieje oczywiście Postgre- SQL, lecz uruchomienie go na systemach innych niż Linux jest dość trudne. PostgreSQL ma też zdecydowanie większe wymagania, jeśli chodzi o zasoby systemowe oraz przestrzeń na dysku, a jego konfiguracja i administracja jest znacznie bardziej skomplikowana. Warto dodać, że tempo rozwoju a jest zawrotne, a kolejne wersje przynoszą coraz większą funkcjonalność i wydajność systemu. Praktyka Zalety a można mnożyć bardzo długo. Przejdźmy jednak do konkretów. Załóżmy, że tworzymy serwis wymagający wysokiej niezawodności, bezpieczeństwa oraz kontroli integralności danych. Potrzebujemy więc bazy z doskonałą obsługą transakcyjności. Transakcja to zbiór operacji, których wykonanie musi zakończyć się sukcesem. W przypadku niepowodzenia którejkolwiek z nich wszystkie powinny być anulowane. Transakcje opisuje zasada AC Atomicity, Consistency, Isolation, and Durability: Atomicity transakcja może być wykonana tylko w całości albo wcale, Consistency stan bazy danych zawsze przedstawia stan przed lub po transakcji. Zapytania do systemu w czasie wykonywania transakcji muszą pokazywać stan bazy przed transakcją, Isolation transakcja zachodzi niezależnie od innych wykonywanych operacji, w tym od innych transakcji, Durability w przypadku awarii całego systemu bazodanowego transakcje pozostają kompletne. W naszym projekcie MySQL niestety się nie sprawdzi, ponieważ transakcje w tej bazie są dopiero w powijakach. Jeśli dodatkowo system ma być dostępny na różnych platformach systemowych, nie mamy zbyt wielkiego wyboru. Pokażemy teraz, jak w praktyce wygląda wykorzystanie a z poziomu PHP. Spróbujemy wykorzystać transakcyjność za pomocą funkcji wbudowanych 45
4 Początki Listing 1. Tworzymy tabelę INVOICE DROP TABLE INVOICE; CREATE TABLE INVOICE( INTEGER NOT NULL PRIMARY KEY, NUMBER varchar(30) default '', DOC_DATE date, SALE_DATE date, CONTRACTOR varchar(250) default '', NETTO NUMERIC(15,2) default 0, VAT NUMERIC(15,2) default 0, GROSS_SUM NUMERIC(15,2) default 0 ); DROP GENERATOR INVOICE_GEN; CREATE GENERATOR INVOICE_GEN; w PHP oraz zastosować wyzwalacze i procedury składowane. Zacznijmy więc od podstaw, czyli od instalacji. Instalacja Wersja dla Microsoft Windows rozpowszechniana jest w postaci standardowego instalatora. Jedyna opcja, którą warto zaznaczyć, to copy client library to <system> directory, co spowoduje, że biblioteka FBCLIENT.DLL zostanie skopiowana do katalogu systemowego. Na koniec należy jeszcze zadecydować, czy ma być uruchamiany jako usługa (Win XP, Win 2000) czy jako aplikacja (Win 9x). Po kilku minutach mamy zainstalowaną i gotową do użycia bazę danych. W przypadku Linuksa po pobraniu i rozpakowaniu pakietu należy z poziomu użytkownika root uruchomić skrypt install.sh, który cały proces instalacji wykona automatycznie. Nasza baza zostanie zainstalowana w katalogu /opt/firebird/. Wszystkie niezbędne narzędzia administracyjne znajdują się w katalogu instalacyjnym, w podkatalogu bin/. Będziemy jeszcze poproszeni o podanie standardowego hasła masterkey dla domyślnego użytkownika SYSDBA (administratora bazy danych). Oczywiście można korzystać z ustawień domyślnych, co pozbawia nas wszelkich dodatkowych czynności administracyjnych, ale nie jest to bezpieczne. Warto zmienić domyślne hasło oraz założyć nowego użytkownika. W tym celu należy skorzystać z polecenia gsec z podkatalogu bin/:./gsec -user SYSDBA -pass masterkey Listing 2. Tworzymy tabelę POSITIONS oraz generator DROP TABLE POSITIONS; CREATE TABLE POSITIONS( id INTEGER NOT NULL PRIMARY KEY, _INVOICE INTEGER, ITEM VARCHAR(20) default '', QUANTITY NUMERIC(15,3) default 0, NETTO NUMERIC(15,2) default 0, VAT_RATE NUMERIC(5,2) default 0); DROP GENERATOR POSITIONS_GEN; CREATE GENERATOR POSITIONS_GEN; SET TERM!!; create trigger POSITIONS_GEN_ for POSITIONS BEFORE INSERT POSITION 0 AS BEGIN NEW.id = GEN_(POSITIONS_GEN,1); END!! SET TERM ;!! Następnie możemy zmienić hasło administratora: GSEC>modify SYSDBA S -pw nowe_hasło oraz dodać nowego użytkownika foo z hasłem bar: GSEC>add foo -pw bar GSEC>quit Po tych czynnościach możemy utworzyć nową bazę danych, której właścicielem będzie użytkownik foo. Można to zrobić z poziomu konsoli isql:./isql SQL>CREATE DATABASE 'invoice.gdb's USER 'foo' PASSWORD 'bar'; Na dysku została utworzona baza danych plik invoice.gdb. pozwala dodatkowo na skopiowanie tego pliku w dowolne miejsce na dysku stanowi to jego olbrzymią zaletę. Wystarczy, że w ścieżce do bazy podczas połączenia wpiszemy: localhost:/sciezka/do/pliku/s invoice.gdb i baza zostanie poprawnie otwarta (zakładając oczywiście, że nadane są prawa do odczytu/zapisu pliku). W ten sposób możemy utworzyć kilka różnych baz danych i rozmieścić je na osobnych partycjach. Daje to nam dużą elastyczność i pewność, że w razie braku miejsca na jednej z partycji, możemy umieścić plik z bazą na nowo dodanym dysku zmieniając jedynie ścieżkę dostępu. W dalszej części artykułu zakładamy, że użytkownik korzysta z systemu Linux (w przypadku systemu Windows zmiany będą niewielkie w większości wypadków wystarczy jedynie zmodyfikować ścieżki dostępu) oraz że plik invoice.gdb znajduje się w katalogu /opt/firebird. Przykład z życia Załóżmy, że piszemy skrypt do wystawiania faktur VAT. Tworzymy więc pliki invoice.sql (Listing 1) oraz positions.sql (Listing 2) i wykonujemy dodając do bazy nowe tabele: /opt/firebird/bin/isql -u foo S -p bar /opt/firebird/ invoices.gdb<invoice.sql /opt/firebird/bin/isql -u foo S -p bar /opt/firebird/s invoices.gdb<positions.sql Zakładamy, że użytkownik wprowadził już dane. Pora wykorzystać PHP i połączyć się z em spójrzmy zatem na Listing 3. Do nawiązania połączenia służy funkcja ibase _ connect(). Teraz musimy zapisać dane do tabel. Aby mieć pewność, że dane zostały zapisane poprawnie, musimy w tym miejscu rozpocząć transakcję: $tr = ibase_trans($dbh);s Po tej czynności możemy przejść do właściwych operacji, czyli zapisu danych. Zakładamy, że dane faktury znajdują się w tablicy asocjacyjnej, której pola mają takie same nazwy jak pola tabeli w bazie danych. Na początku musimy zapisać ogólne dane dotyczące faktury do tabeli INVOICE. W tym celu należy najpierw pobrać wartość generatora przypisanego do tej tabeli za pomocą zapytania: select GEN_(INVOICE_GEN, 1)S FROM RDB$DATABASE Teraz możemy wstawić do bazy dane faktury. Należy wspomnieć, że znaną praktyką jest wstawianie wartości do 46
5 Początki tabeli przed pobraniem wygenerowanego identyfikatora przy pomocy funkcji MAX(nazwa _ pola). W przypadku aplikacji WWW postępowanie takie jest bardzo niebezpieczne, ponieważ może się okazać, że otrzymaliśmy identyfikator rekordu, który w międzyczasie wstawił ktoś inny. Wtedy zapisywane w kolejnym kroku pozycje dopisalibyśmy do zupełnie innej faktury. Bezpieczeństwo tego typu operacji w znacznej mierze zależy od stosowanego przez bazę danych poziomu izolacji (ang. isolation level). Dla a domyślnie jest to poziom snapshot (transakcja ma dostęp do wszystkich tabel, lecz nie do zmian wprowadzonych i zatwierdzonych przez inne, rozpoczęte później transakcje), w którym moglibyśmy skorzystać z funkcji MAX() do pobrania identyfikatora ostatnio dodanej pozycji, lecz jeśli przełączylibyśmy poziom izolacji np. na read commited (transakcja ma dostęp do wszystkich tabel i zmian wprowadzonych oraz zatwierdzonych przez inne transakcje) mogłoby się okazać, że nasz program w niektórych przypadkach nie działa poprawnie. Mamy zatem pobrane wcześniej faktury możemy zapisać do bazy wszystkie pozycje tablicy POSITIONS z tym identyfikatorem jako kluczem obcym. Jeśli w trakcie wystąpi błąd zapisu którejkolwiek pozycji, powinniśmy wycofać wszystkie operacje (wraz z zapisaniem danych ogólnych) oraz wyświetlić odpowiedni komunikat błędu. Wyzwalacze Wyzwalacz (ang. trigger) to specjalna procedura, uruchamiana automatycznie podczas zajścia operacji na bazie danych. W zie można tworzyć wyzwalacze uruchamiane przed lub po wstawianiu (INSERT), modyfikacji (UPDATE) lub skasowaniu (DELETE) rekordu. Wyzwalacze nie służą jedynie go generowania unikalnych identyfikatorów. Można je wykorzystać do wielu różnych celów na przykład do obsługi pól automatycznie wyliczanych, jednak głównym ich zadaniem jest zapewnienie spójności danych w bazie. Na przykład, po skasowaniu faktury, powinny również zostać usunięte wszystkie jej pozycje. W tym celu możemy stworzyć odpowiedni wyzwalacz, który pobierze identyfikator usuniętego rekordu i skasuje wszelkie pozycje z takim kluczem obcym Listing 4. Po dodaniu takiego wyzwalacza Listing 3. Łączymy się z em i wstawiamy dane do bazy <?php $host = 'localhost:/opt/firebird/invoice.gdb'; $username = 'foo'; $password ='bar'; $dbh = ibase_connect($host, $username, $password); if (!$dbh) die ("error connecting to database"); $tr = ibase_trans( $dbh); $invoice = array("number"=>"2/04/2004", "DOC_DATE"=>" ","SALE_DATE"=>" ", "CONTRACTOR"=>"Jan Kowalski Sp. z o.o", "NETTO"=>"100","VAT"=>"22","GROSS_SUM"=>"122"); $poz= array( array( "ITEM"=>"Drukarka", "QUANTITY"=>"2", "NETTO"=>"400","VAT_RATE"=>"0.22"), array("item"=>"monitor", "QUANTITY"=>"1", "NETTO"=>"1200","VAT_RATE"=>"0.22")); // pobieramy wartość pola id przed wstawieniem do bazy $query = 'select GEN_(INVOICE_GEN, 1) FROM RDB$DATABASE'; $sth = ibase_query($tr, $query); if (!$sth) database_error ("Błąd przy pobieraniu ", $tr); $row = ibase_fetch_row($sth); $id = $row[0]; $query = "INSERT INTO INVOICE (, NUMBER, DOC_DATE, SALE_DATE, CONTRACTOR, NETTO, VAT, GROSS_SUM) VALUES('$id', '${invoice[number]}','${invoice[doc_date]}', '${invoice[sale_date]}','${invoice[contractor]}', '${invoice[netto]}','${invoice[vat]}','${invoice[gross_sum]}')"; // wstawiamy fakturę do bazy $sth = ibase_query($tr, $query); if (!$sth) database_error ("Błąd przy wstawianiu faktury", $tr); // wstawiamy kolejno wszystkie pozycje faktury for ($a = 0; $a<count( $poz ); $a++) { $query = "INSERT INTO POSITIONS (_INVOICE, ITEM, QUANTITY, NETTO) VALUES($id,'".$poz[$a][ITEM]."','".$poz[$a][QUANTITY]."', '".$poz[$a][netto]."')"; $sth = ibase_query($tr, $query); if (!$sth) database_error ("Błąd przy wstawianu pozycji", $tr); } // wszystko poszło OK. Zatwierdzamy transakcję. ibase_commit($tr); echo ("Fakturę dodano pomyślnie"); // funkcja obsługująca błędy function database_error ($error, $transaction) { // wycofujemy transakcję ibase_rollback($transaction); }?> // i kończymy działanie skryptu komunikatem o błędzie die($error); 47
6 Początki Listing 4. Wyzwalacz, który usunie wszystkie pozycje faktury z danym kluczem obcym DROP trigger delete_invoice; SET TERM!!; create trigger delete_invoice for invoice AFTER DELETE AS BEGIN delete from positions where id_invoice=old.; END!! SET TERM ;!! działa zupełnie inaczej. Domyślnie każda transakcja widzi swoją wersję rekordu z chwili, kiedy została rozpoczęta. Zmiany wprowadzone przez inne transakcje nie są widoczne, dopóki transakcje nie zostaną zatwierdzone (commit). Najlepiej zobrazuje to poniższy przykład: Otwieramy pierwszą sesję, która modyfikuje pozycję z tabeli BOOK: Session #1: SQL> select * from book; 1 Lord of the rings Widać, że każda z sesji posiada odrębne wersje rekordów widoczne w ramach swojej transakcji. Zatwierdźmy teraz wprowadzone zmiany: Session #1: SQL> commit; Session #2: SQL> commit; SQL> select * from book; możemy wejść do konsoli isql i usunąć ręcznie jedną z wstawionych wcześniej faktur. Przekonamy się, że pozycje będą kasowane automatycznie. Procedury składowane Użytkownicy mający doświadczenie w pracy z dużymi środowiskami bazodanowymi zapewne nieraz korzystali z procedur składowanych (ang. stored procedures). Są to procedury pisane w wewnętrznym języku bazy danych, parsowane i kompilowane jednorazowo przed pierwszym wykonaniem. Zastosowanie ich znacząco odciąży naszą aplikację, przyspieszy jej działanie i zwiększy bezpieczeństwo. W zie również możemy pisać takie procedury przy użyciu języka PSQL, który, choć może mniej rozbudowany od swoich odpowiedników w ORACLE czy PostgreSQL, spełnia wymagania większości użytkowników. Dodatkowo, pozwala na tworzenie funkcji UDF (User Defined Functions). Są one pisane w zewnętrznym języku (np. C/C++ lub Delphi), a następnie kompilowane do postaci bibliotek współdzielonych (*.dll lub *.so). Biblioteki te ładowane są do bazy danych, po czym można z nich korzystać z poziomu SQL-a. Procedury składowane w połączeniu z funkcjami UDF mogą przerzucić część ciężaru czasochłonnych operacji na silnik bazy danych, a co za tym idzie dodatkowo zwiększyć wydajność aplikacji. Blokady na poziomie wierszy MySQL domyślnie oferuje blokady wyłącznie na poziomie tabel. W przypadku bardzo obciążonych serwisów metoda taka jest dalece nieefektywna. Mechanizm transakcji w zie 1 Lord of the rings SQL> update book set title = 'Harry Potter' where id = 1; SQL> select * from title; 1 Harry Potter Na poziomie tej sesji, zawartość tabeli została zmodyfikowana. Otwieramy drugą sesję, która odwołuje się do tej samej tabeli: Session #2: SQL> select * from book; 1 Harry Potter Jak widać. niezatwierdzona transakcja z sesji pierwszej nie zabroniła dostępu do danych transakcji z sesji drugiej, jednakże widoczne były nieuaktualnione (stare) dane. Innym bardzo ważnym mechanizmem blokowania dostępu do rekordów jest select for update. Ta metoda gwarantuje, że żadna inna sesja nie zmieni wybranych danych, dopóki sesja blokująca nie zakończy ich przetwarzania (czyli nie zatwierdzi transakcji). Spójrzmy na poniższy przykład: Session #1: SQL> select * from book where id = 1 for update Pseudorelacyjność kontra MySQL Klucze obce służą do tworzenia połączeń relacyjnych (relacji stąd właśnie pochodzi nazwa relacyjna baza danych) pomiędzy tabelami. W większości przypadków dopasowywane pola to: klucz podstawowy (primary key) z głównej tabeli, który dostarcza unikatowego identyfikatora, dla klucza obcego z każdego rekordu w drugiej tabeli. Weźmy bazę danych dokumentów z księgowości tabele dokumenty i kontrahenci: tabela dokumenty zawiera m. in. kolumny id _ dokumentu (klucz główny), numer, data, kontrahent, a tabela kontrahenci: kolumny id _ kontrahenta (klucz główny), nazwisko, adres, telefon, , itp. Kolumna dokumenty.kontrahent może być kluczem obcym odnoszącym się do kolumny kontrahenci.id _ kontrahenta. Unika się w ten sposób powielania tych samych danych w różnych tabelach, co m. in. ułatwia utrzymanie zgodności pomiędzy zawartością bazy danych, a stanem faktycznym. Nic nie stoi na przeszkodzie, aby taką relację stworzyć bez kluczy głównych/obcych, lecz wtedy nie będzie zachowana pełna integralność danych. Dzięki kluczom silnik bazy danych dba o to, aby do tabeli podrzędnej możliwe było wstawienie jedynie rekordów, które mają przyporządkowany wpis w tabeli głównej. Niemożliwe będzie również usunięcie rekordu z tabeli głównej, jeśli nie zostały wcześniej usunięte wszystkie przyporządkowane mu rekordy z tabeli podrzędnej. MySQL nie posiada pełnego wsparcia dla mechanizmu kluczy głównych, dlatego często bywa nazywany pseudorelacyjną bazą danych. Częściowa implementacja dostępna jest jedynie dla tabel typu InnoDB. oferuje pełne wsparcie dla kluczy obcych, wraz ze sprawdzaniem więzów integralności. 48
7 Początki with lock; 1 Lord of the rings Session #2: SQL> update book set title = 'PHP Solutions' where id = 1; (Blokada) Jak widać, w tym wypadku druga sesja nie może modyfikować nawet swojej wersji rekordu. Może tego dokonać dopiero po zatwierdzeniu transakcji w obu sesjach. Należy zaznaczyć, że takie sterowanie dostępem do rekordów równie dobrze możemy zastosować z poziomu PHP. MySQL nie oferuje tak rozbudowanego mechanizmu obsługi transakcji, nawet jeśli korzystamy z tabel typu InnoDB. Abstrakcyjny dostęp do a Wielu webmasterów przyzwyczaiło się już do korzystania z abstrakcyjnych metod dostępu do bazy danych. Nie ma w tym nic dziwnego, jako że w PHP obsługa każdej bazy danych odbywa Listing 5. Przykład połączenia z bazą przy użyciu biblioteki PEAR <?php?> require_once("pear.php"); require_once("db.php"); $dsn = array( 'phptype' => 'ibase', 'username' => 'foo', 'password' => 'bar', 'hostspec' => 'localhost', 'database' => '/opt/ firebird/invoice.gdb', ); $options = array( 'persistent' => true ); $db = DB::connect($dsn,$options); $sql = "select * from invoice"; $result = $db->query($sql); $row = $result->fetchrow(); print_r ($row); $db->disconnect(); Listing 6. Przykład połączenia z bazą przy użyciu biblioteki ADOdb <? include("adodb.inc.php"); $db = NewADOConnection('firebird'); $db->connect("localhost", "foo", "bar", "/opt/firebird/.gdb"); $result = $db->execute("select * FROM POSITONS"); if ($result === false) die("błąd"); while (!$result->eof) { for ($i=0, $max=$result->fieldcount(); $i < $max; $i++) print $result->fields[$i].' '; $result->movenext(); print "<br>"; }?> się za pomocą osobnych funkcji. Jeśli potrzebujemy przenośności kodu oraz niezależności od bazy danych, powinniśmy skorzystać z bibliotek takich jak AdoDB czy PEAR:DB. Zobaczmy, jak interfejsy te radzą one sobie z em. i PEAR:DB PEAR to zbiór bibliotek i rozszerzeń PHP będących odpowiednikiem perlowskiego CPAN, dzięki którym budowa nawet skomplikowanej aplikacji staje się o wiele prostsza. PEAR dołączany jest do każdej oficjalnej dystrybucji PHP, dzięki czemu pisany przez nas kod staje się w pełni przenośny. Jednym z komponentów tej biblioteki jest również klasa DB, która zapewnia zunifikowane API obsługi baz danych. Wśród wielu wspieranych baz jest również /Interbase. Jeśli wcześniej tworzyliśmy swoje projekty przy użyciu tej biblioteki można modyfikując kilka linijek kodu dostosować je do współpracy z em. Na Listingu 5 przedstawiliśmy przykład połączenia z bazą przy użyciu biblioteki PEAR. Wygląda ono podobnie, jak w przypadku innych baz danych. Tworzymy DSN (Data Source Name) i wypełniamy go odpowiednimi parametrami. W przypadku a (Interbase) dobrze jest przekazać DSN w postaci obiektu, a nie łańcucha. W przeciwnym wypadku mogą wystąpić problemy z połączeniem. Następnie tworzymy obiekt $options, który do prawidłowego połączenia z bazą danych musi zawierać pole: persistent => true; Do danych odwołujemy się w identyczny sposób jak w przypadku innych baz obsługiwanych przez PEAR:DB. i AdoDB Skrót ADODB oznacza Active Data Objects DataBase (Obiektowa Baza Danych). W uproszczeniu można powiedzieć, że jest odpowiednikiem PEAR:DB. Również ta biblioteka wśród szerokiej gamy obsługiwanych baz oferuje dostęp do a. Na Listingu 6 przedstawiliśmy prosty przykład połączenia z bazą danych. Jeśli ktoś korzystał już z tej biblioteki, na pewno nie będzie miał problemów z przesiadką na a. Wszystkich spragnionych dodatkowej wiedzy na temat AdoDB odsyłamy do artykułu AdoDB interfejsowa alternatywa z numeru 4/2004, gdzie bardzo dokładnie opisywaliśmy implementację aplikacji bazodanowej w oparciu o interfejs AdoDB. Podsumowanie Jak pokazaliśmy w artykule, imponuje funkcjonalnością znaną niemal jedynie z komercyjnych baz takich jak ORACLE czy SyBase. Jego licencja (IPL) pozwala na dowolne wykorzystanie programu również w projektach komercyjnych. Prostota instalacji i administracji, niewielkie wymagania sprzętowe oraz wysoka wydajność i niezawodność sprawiają, że przy rozpoczynaniu kolejnego projektu warto pomyśleć o zie jako dobrej alternatywie dla MySQL czy PostgreSQL. 49
Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK
Dostęp do baz danych z serwisu www - PHP Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK Bazy Danych I, 8 Grudzień 2009 Plan Trochę teorii Uwagi techniczne Ćwiczenia Pytania Trójwarstwowy
Bardziej szczegółowoDECLARE VARIABLE zmienna1 typ danych; BEGIN
Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;
Bardziej szczegółowoJęzyki programowania wysokiego poziomu. PHP cz.4. Bazy danych
Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł
Bardziej szczegółowoE.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze
Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie
Bardziej szczegółowoLaboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Bardziej szczegółowoPodstawy programowania III WYKŁAD 2
Podstawy programowania III WYKŁAD 2 Jan Kazimirski 1 Komunikacja z bazami danych 2 PHP i bazy danych PHP zapewnia dostęp do wielu popularnych baz danych. Kilka poziomów abstrakcji: Funkcje obsługujące
Bardziej szczegółowoProjektowanie baz danych za pomocą narzędzi CASE
Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software
Bardziej szczegółowoWyzwalacze (triggery) Przykład
Wyzwalacze (triggery) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę, a następnie trigger związany
Bardziej szczegółowoBlaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik
Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie
Bardziej szczegółowoInstrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.
Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN
Bardziej szczegółowoTrigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.
Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger
Bardziej szczegółowoPHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:
PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9
Wdrożenie modułu płatności eservice dla systemu Magento 1.4 1.9 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do
Bardziej szczegółowoWykład 5: PHP: praca z bazą danych MySQL
Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych
Bardziej szczegółowoWprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa
Wprowadzenie do projektowania i wykorzystania baz danych Katarzyna Klessa POWTÓRKA Z PIERWSZYCH ZAJĘĆ Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego
Bardziej szczegółowoWprowadzenie do Doctrine ORM
Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,
Bardziej szczegółowoKopie bezpieczeństwa NAPRAWA BAZ DANYCH
Kopie bezpieczeństwa NAPRAWA BAZ DANYCH Sprawdzanie spójności bazy danych Jednym z podstawowych działań administratora jest zapewnienie bezpieczeństwa danych przez tworzenie ich kopii. Przed wykonaniem
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x
Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Bardziej szczegółowoCREATE USER
Temat: Administrowanie użytkownikami bazy danych. Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość
Bardziej szczegółowoKowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami
Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592 Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Spis treści Założenia Projektowe...1 Schemat Bazy Danych...1
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Gekosale 1.4
Wdrożenie modułu płatności eservice dla systemu Gekosale 1.4 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do integracji...
Bardziej szczegółowoStruktura drzewa w MySQL. Michał Tyszczenko
Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5
Wdrożenie modułu płatności eservice dla systemu Zen Cart 1.3.9 1.5 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Bardziej szczegółowoĆwiczenia laboratoryjne nr 11 Bazy danych i SQL.
Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie
Bardziej szczegółowoCele. Definiowanie wyzwalaczy
WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa
Bardziej szczegółowoWprowadzenie do projektowania i wykorzystania baz danych Relacje
Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR
Bardziej szczegółowoPrzykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.
Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna
Bardziej szczegółowoBazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1
Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych
Bardziej szczegółowoTransakcje jednocześnie ACID
Transakcje Transakcja to zbiór operacji (u nas - instrukcji języka SQL), które mogą być wykonane jedynie wszystkie lub żadna. Nazwa takiego ciągu instrukcji pochodzi od operacji bankowych - przelew musi
Bardziej szczegółowoProjektowanie systemów baz danych
Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,
Bardziej szczegółowoSprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.
Za operacje na bazie odpowiada biblioteka mysqli (i jak improved). Posiada ona interfejs obiektowy jak i proceduralny. Podłączenie do bazy (obiektowo) mysqli:: construct() ([ string $host [, string $username
Bardziej szczegółowoOracle11g: Wprowadzenie do SQL
Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom
Bardziej szczegółowo15. Funkcje i procedury składowane PL/SQL
15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp
Bardziej szczegółowoBazy danych 9. SQL Klucze obce Transakcje
Bazy danych 9. SQL Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Klucze obce Klucze obce powiazanie indeksowanej kolumny jakiejś tabeli z indeksowana kolumna
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze
Bardziej szczegółowostrukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych
SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych
Bardziej szczegółowoInżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl
Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych Paweł Paduch paduch@tu.kielce.pl 06-04-2013 Rozdział 1 Wstęp Na dzisiejszych zajęciach zajmiemy się projektem bazy danych.
Bardziej szczegółowoPrzykładowa baza danych BIBLIOTEKA
Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych
Bardziej szczegółowoWykład 8. SQL praca z tabelami 5
Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu
Bardziej szczegółowoAutor: Joanna Karwowska
Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.
Bardziej szczegółowoSystem. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.
System FOKUS Instalacja bazy danych MySQL Autor : Piotr Zielonka tel. 601 99-73-79 pomoc@zielonka.info.pl Piotrków Tryb., sierpień 2018r. W wersji 2018.7.0 systemu FoKus wprowadzono funkcje umożliwiające
Bardziej szczegółowoPaweł Cieśla. Dokumentacja projektu
Paweł Cieśla Dokumentacja projektu Projekt Project1 został utworzony i skompilowany na próbnej wersji Delphi XE 4. Po uruchomieniu programu należy kliknąć przycisk Wczytaj plik tekstowy, następnie wskazać
Bardziej szczegółowoSQL 4 Structured Query Lenguage
Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...
Bardziej szczegółowoWyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie
Bardziej szczegółowo2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH
PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika
Bardziej szczegółowo77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.
77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele
Bardziej szczegółowoInstrukcjaaktualizacji
Instrukcja Instrukcjaaktualizacji aktualizacji oprogramowania oprogramowaniainpro InProBMS BMS SPIS TREŚCI 1. AKTUALIZACJA 3 1.1. ARCHIWIZACJA BAZY DANYCH...3 1.1.1. AUTOMATYCZNA...3 1.1.2. RĘCZNA...4
Bardziej szczegółowoInternetowe bazy danych
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Typy tabel MySQL domyślny MyISAM inne możliwe:
Bardziej szczegółowoUstawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).
POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane
Bardziej szczegółowoInstalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads
Instalacja MySQL Baza MySQL tworzona jest przez Szwedzką firmę MySQL AB strona domowa projektu to: www.mysql.com Wersję bezpłatną (różniącą się od komercyjnej brakiem wsparcia technicznego, nośnika i podręcznika)
Bardziej szczegółowoUruchamianie bazy PostgreSQL
Uruchamianie bazy PostgreSQL PostgreSQL i PostGIS Ten przewodnik może zostać pobrany jako PostgreSQL_pl.odt lub PostgreSQL_pl.pdf Przejrzano 10.09.2016 W tym rozdziale zobaczymy, jak uruchomić PostgreSQL
Bardziej szczegółowoAspekty aktywne baz danych
Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać
Bardziej szczegółowoBazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8
Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika
Bardziej szczegółowoBazy danych. Polecenia SQL
Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony
Bardziej szczegółowoPracownia internetowa w szkole ZASTOSOWANIA
NR ART/SBS/07/01 Pracownia internetowa w szkole ZASTOSOWANIA Artykuły - serwery SBS i ich wykorzystanie Instalacja i Konfiguracja oprogramowania MOL Optiva na szkolnym serwerze (SBS2000) Artykuł opisuje
Bardziej szczegółowoPawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność
Bardziej szczegółowoOgólne informacje o Systemie Archiwizacji ZEUS
Ogólne informacje o Systemie Archiwizacji ZEUS System Archiwizacji ZEUS przeznaczony jest do opracowywania zasobów archiwalnych. Oprogramowanie powstało w wyniku wielomiesięcznej analizy potrzeb jednego
Bardziej szczegółowoJęzyk SQL, zajęcia nr 1
Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze
Bardziej szczegółowoWykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze
Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej
Bardziej szczegółowoDatabase Connectivity
Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie
Bardziej szczegółowoNaprawa uszkodzonej bazy Interbase/Firebird
Naprawa uszkodzonej bazy Interbase/Firebird W przypadku, gdy podczas pracy programu KS-Apteka Windows pojawiają się błędy jak na rysunku 1, (takie błędy w szczegółach zaczynają się od słów: internal gds
Bardziej szczegółowoAutor: Joanna Karwowska
Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,
Bardziej szczegółowoBazy Danych i Usługi Sieciowe
Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z
Bardziej szczegółowoPawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p
Bardziej szczegółowokoledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,
Celem ćwiczeń jest zaprojektowanie oraz utworzenie na serwerze bazy danych przechowującej informacje na temat danych kontaktowych. Celem jest również zapoznanie z podstawowymi zapytaniami języka SQL służącymi
Bardziej szczegółowo1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3
cur.executescript(""" DROP TABLE IF EXISTS uczen; CREATE TABLE IF NOT EXISTS uczen ( Uniwersytet Technologiczno-Przyrodniczy im. J.J. Śniadeckich w Bydgoszczy Instrukcja do ćwiczeń laboratoryjnych Przedmiot
Bardziej szczegółowoPODSTAWY BAZ DANYCH 13. PL/SQL
PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących
Bardziej szczegółowoPrzykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;
Temat: Funkcje, procedury i wyzwalacze. Oprócz tabel i widoków w bazach danych możemy tworzyć własne funkcje, procedury i specjalny typ procedur, które będą automatycznie wywoływanie przez MySQL w memencie
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste
Bardziej szczegółowoWprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.
Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie
Bardziej szczegółowoProjektowanie aplikacji w modelu MVC opartej o framework CodeIgniter
Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Konfiguracja i przygotowanie przykładowej aplikacji opartej o model Model-View- Controller Konfiguracja frameworka Zainstaluj na serwerze
Bardziej szczegółowoINSTRUKCJA NAPRAWA BAZY DANYCH FIREBIRD ISO 9001:2008 Dokument: 2011.01.11 Wydanie: 1 Waga: 90
NAPRAWA USZKODZONEJ BAZY INTERBASE/FIREBIRD W przypadku, gdy podczas pracy programu KS-APTEKA Windows pojawiają się błędy jak na rysunku 1, (takie błędy w szczegółach zaczynają się od słów: internal gds
Bardziej szczegółowoWyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz
Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych
Bardziej szczegółowoIntegralność danych Wersje języka SQL Klauzula SELECT i JOIN
Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Integralność danych Aspekty integralności
Bardziej szczegółowoKOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED
KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED Podręcznik użytkownika Katowice 2010 Producent programu: KAMSOFT S.A. ul. 1 Maja 133 40-235 Katowice Telefon: (0-32) 209-07-05 Fax:
Bardziej szczegółowoPodstawowe wykorzystanie Hibernate
Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia
Bardziej szczegółowoAplikacje WWW - laboratorium
Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami
Bardziej szczegółowoWdrożenie do projektu
Wdrożenie do projektu Zaczynamy od stworzenia zwykłego projektu Java. Środowisko z jakiego korzystam to Netbeans IDE w wersji 8.1. Możesz wykorzystywać inne IDE, bylebyś stosował analogiczne kroki w swoim
Bardziej szczegółowoBAZY DANYCH. Transakcje. opracowanie: Michał Lech
BAZY DANYCH Transakcje opracowanie: Michał Lech Plan wykładu 1. Transakcje - co to jest? 2. Mechanizmy transakcji 3. Reguły ACID 4. Niekorzystne zjawiska 5. Poziomy izolacji 6. Polecenia PostgreSQL transakcji
Bardziej szczegółowoSIECI KOMPUTEROWE I BAZY DANYCH
KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II Cel laboratorium
Bardziej szczegółowoOdnawialne Źródła Energii I rok. Tutorial PostgreSQL
Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym
Bardziej szczegółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Bardziej szczegółowoBazy danych - wykład wstępny
Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,
Bardziej szczegółowoFirebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres
Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres Artur Kozubski Software Development GigaCon Warszawa 2008 Plan Historia projektu Firebird Architektura serwera Administracja
Bardziej szczegółowoInstalacja SQL Server Express. Logowanie na stronie Microsoftu
Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy
Bardziej szczegółowoProcedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1
Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoRozdział 17. Zarządzanie współbieżnością zadania dodatkowe
Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste
Bardziej szczegółowoTypy tabel serwera MySQL
Typy tabel serwera MySQL Kopie zapasowe baz danych Zabezpieczanie serwera MySQL Zakładanie konta użytkownika z określonymi uprawnieniami Zarządzanie kontem i bazą danych Kilka kolejnych informacji na temat
Bardziej szczegółowoBazy danych i usługi sieciowe
Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z
Bardziej szczegółowo3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota
Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)
Bardziej szczegółowoRozdział 17. Zarządzanie współbieżnością zadania
Rozdział 17. Zarządzanie współbieżnością zadania Transakcja DML 1. Uruchom narzędzie Oracle SQL Developer i przyłącz się do bazy danych. Następnie rozpocznij nową transakcję, zmieniając pracownikowi o
Bardziej szczegółowoT-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15
T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest
Bardziej szczegółowoAKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji. www.as.tylda.pl
AKTYWNY SAMORZĄD Instrukcja instalacji, aktualizacji i konfiguracji TYLDA Sp. z o.o. 65-001 Zielona Góra ul. Wazów 6a tel. 68 324-24-72 68 325-75-10 www.tylda.pl tylda@tylda.pl wersja 1.0 2013.04.12 2
Bardziej szczegółowoSQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści
SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, 2017 Spis treści O autorze 9 Wprowadzenie 11 Lekcja 1. Zrozumieć SQL 15 Podstawy baz danych 15 Język SQL
Bardziej szczegółowoPodstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko
Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych
Bardziej szczegółowo