Dost p do baz danych

Podobne dokumenty
Programowanie obiektowe w Perlu

Wykład 5. SQL praca z tabelami 2

Projektowanie systemów baz danych

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

Database Connectivity

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

SIECI KOMPUTEROWE I BAZY DANYCH

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

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

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

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

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Bazy danych, 4. wiczenia

Język SQL, zajęcia nr 1

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Baza danych - Access. 2 Budowa bazy danych

Internetowe bazy danych

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Bazy Danych i Usługi Sieciowe

Wykład 8. SQL praca z tabelami 5

Bazy danych. Polecenia SQL

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

Relacyjne bazy danych. Podstawy SQL

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

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych i usługi sieciowe

Podstawy programowania III WYKŁAD 2

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

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

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

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

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

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Bazy danych. Dr inż. Paweł Kasprowski

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

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

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Struktura drzewa w MySQL. Michał Tyszczenko

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

SIECI KOMPUTEROWE I BAZY DANYCH

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Wykład 05 Bazy danych

Subversion - jak dziaªa

Bazy danych 10. SQL Widoki

PODSTAWY BAZ DANYCH 13. PL/SQL

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy danych - Materiały do laboratoriów VIII

Instalacja MySQL.

SQL (ang. Structured Query Language)

Dziaª utrzymania ruchu aplikacja wspomagaj ca zarz dzanie

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Administracja bazami danych

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

Programowanie w Ruby

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

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

1. Wprowadzenie do C/C++

Oracle PL/SQL. Paweł Rajba.

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

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

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Podstawowe wykorzystanie Hibernate

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

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Kurs. Podstawy MySQL

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

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

SIECI KOMPUTEROWE I BAZY DANYCH

Oracle PL/SQL. Paweł Rajba.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"

Aspekty aktywne baz danych

Hurtownia Świętego Mikołaja projekt bazy danych

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

Listy i operacje pytania

Wzorce projektowe kreacyjne

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

Bazy danych Podstawy teoretyczne

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Język SQL : przyjazny podręcznik / Larry Rockoff. Wyd. 2. Gliwice, cop Spis treści

Wstęp do relacyjnych baz danych. Jan Bartoszek

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Transkrypt:

Dost p do baz danych Piotr Wydrych http://kt.agh.edu.pl/~wydrych/ Wydziaª Elektrotechniki, Automatyki, Informatyki i Elektroniki Katedra Telekomunikacji 14 maja 2009 1/42

DBI podstawowe informacje DataBase Interface. Standardowy interfejs dost pu do bazy danych niezale»ny od systemu zarz dzania relacyjn baz danych. 5/42

DBD DataBase Driver. Niezale»ne sterowniki do poszczególnych systemów (baz danych). Przykªadowo: DBD::mysql, DBD::Oracle, DBD::Pg. Obecnie (listopad 2008) okoªo 200 ró»nych dost pnych do pobrania z CPAN. 6/42

Zasada dziaªania DBI ródªo: Alligator Descartes, Tim Bunce: Programming the Perl DBI. O'Reilly, 2000. ISBN 1-56592-699-4. 7/42

Sk d wzi DBI i DBD Niektóre systemy operacyjne instaluj DBI razem z Perlem. Debian, Ubuntu pakiety libdbi-perl oraz libdbd- -perl. FreeBSD, OpenBSD p5-dbi oraz p5-dbd-. Solaris CSWpmdbi oraz CSWpmdbd. Ogólnie dbi.perl.org. 8/42

Plik tekstowy Wady i zalety + Šatwo zinterpretowa goªym okiem. + Bez instalowania dodatkowych moduªów. Ka»dy skrypt musi zna dokªadn struktur danych. Utrudniona aktualizacja. Brak transakcji. Brak powi za«, kluczy obcych, zª cze«. 11/42

Plik tekstowy Przykªad struktury i operacji Przykªad root:x:0:0:super-user:/root:/bin/bash Dodawanie danych: open F, >> /etc/passwd and printf F %s:..., @user{login,...}; Pobieranie danych: open F, < /etc/passwd and %data = map { /(\w+):.../? ($1 => {uid => $2,...}) : () } <F>; Usuwanie, aktualizacja = pobranie + zapis caªo±ci. 12/42

Data::Dumper Wady i zalety. Przykªady operacji + Šatwo zinterpretowa goªym okiem. + Bez instalowania dodatkowych moduªów. + Šatwe zapisywanie i pobieranie danych. Wady jak dla zwykªego pliku. Zapisywanie danych: open D, > data.dump and print D Data::Dumper->Dump([$data], [ data ]); Pobieranie danych: open D, < data.dump and eval join, <D>; 14/42

DBI Wady i zalety Wady i zalety DBI wady i zalety baz danych. + Transakcje, zªo»enia, klucze, widoki itd. + Bezpiecze«stwo i wydajno±. Konieczno± instalowania dodatkowego oprogramowania... +... które cz sto i tak instalujemy! Wniosek use DBI; 16/42

connect Podª czanie do bazy danych $dbh = DBI->connect($data_source, $user, $auth) or die $DBI::errstr; $dbh = DBI->connect($data_source, $user, $auth, \%attr) or die $DBI::errstr; $data_source adres ¹ródªa danych zaczynaj cy si od dbi:sterownik:, np. dbi:mysql:database=mydb:host=sunum. $user i $auth nazwa u»ytkownika i hasªo. \%attr wªa±ciwo±ci poª czenia: Przykªadowo { PrintError => 0 }. Podstawowe w dokumentacji DBI. Peªna lista zale»na od u»ytego DBD. 19/42

Zapytania bez zwracania danych do $rows = $dbh->do($statement) or die $dbh->errstr; $rows = $dbh->do($statement, \%attr) or die $dbh->errstr; $rows = $dbh->do($statement, \%attr, @bind_values) or die $dbh->errstr; Przygotowuje i wykonuje zapytanie. Zwraca liczb wierszy (np. skasowanych). Nie nadaje si do zapyta«select. $statement zapytanie do wykonania. @bind_values je»eli zapytanie zawiera pytajniki, zamiast nich wstawiane s w bezpieczny sposób kolejne warto±ci z tablicy. 21/42

Zapytania bez zwracania danych Prosty przykªad Przykªad $sql = CREATE TABLE dbmss ( name VARCHAR(20) PRIMARY KEY, newest_version VARCHAR(20) NOT NULL, web_page VARCHAR(255) ); ; $dbh->do($sql) or die $dbh->errstr; 22/42

Zapytania bez zwracania danych Przykªad z wykorzystaniem @bind_values Przykªad $sql = UPDATE dbmss SET newest_version =? WHERE name =?; ; $dbh->do($sql, undef, 5.1, "MySQL ( C.Ed. )") or die $dbh->errstr; Rzeczywi±cie wykonane zapytanie UPDATE dbmss SET newest_version = 5.1 WHERE name = MySQL (\ C.Ed.\ ) ; 23/42

Zapytania z pobieraniem danych Dwie metody: z odr bnym przygotowaniem zapytania, bez odr bnego przygotowania zapytania (czyli ze zintegrowanym przygotowaniem). 25/42

Przygotowywanie zapytania prepare $sth = $dbh->prepare($statement) or die $dbh->errstr; $sth = $dbh->prepare($statement, \%attr) or die $dbh->errstr; Przygotowuje zapytanie do pó¹niejszego (by mo»e wielokrotnego) wykonania. Zwraca uchwyt do przygotowanego zapytania. $statement zapytanie do wykonania. 27/42

Wykonywanie przygotowanego zapytania execute $rv = $sth->execute or die $sth->errstr; $rv = $sth->execute(@bind_values) or die $sth->errstr; Rozpoczyna wykonywanie zapytania. Zwraca prawd je»eli zapytanie si powiodªo. Raz przygotowane zapytanie mo»na wykonywa wiele razy. Nie zwraca liczby wierszy...... poniewa» w momencie rozpocz cia wykonywania zapytania nie wiadomo ile ich b dzie! @bind_values u»ywane je»eli podczas przygotowywania zapytania u»yte zostaªy pytajniki. 28/42

Pobieranie danych W p tli while defined fetchrow_* $ary_ref = $sth->fetchrow_arrayref; $ary_ref = $sth->fetch; @ary = $sth->fetchrow_array; $hash_ref = $sth->fetchrow_hashref; $hash_ref = $sth->fetchrow_hashref($name); Zwracaj odpowiednio referencj do tablicy, tablic, referencj do hasha. Je»eli nie ma wi cej wierszy zwracaj warto± niezdeniowan. $name pozwala wybra wielko± liter w kluczach hasha. 29/42

Pobieranie danych W caªo±ci do pami ci fetchall_* $tbl_ary_ref = $sth->fetchall_arrayref; $tbl_ary_ref = $sth->fetchall_arrayref($slice); $tbl_ary_ref = $sth->fetchall_arrayref($slice, $max_rows); $hash_ref = $sth->fetchall_hashref($key_field); fetchall_arrayref zwraca referencj do tablicy referencji. $slice wybiera format wierszy (referencja do tablicy lub hasha) oraz ogranicza pobierane kolumny. fetchall_hashref zwraca referencj do hasha referencji do hashy. U»ywa $key_field jako klucza. 30/42

Zapytania z pobieraniem danych z odr bnym przygotowaniem zapytania prepare execute nowe warto±ci np. INSERT fetchall_* fetchrow_* N defined T 31/42

Zapytania z pobieraniem danych z odr bnym przygotowaniem zapytania przykªad prepare, execute, fetchrow $sth = $dbh->prepare( SELECT name, newest_version FROM dbmss WHERE name LIKE? ); $sth->execute( %SQL ) or die $sth->errstr; printf "%s %s\n", $ref->{name}, $ref->{newest_version} while $ref = $sth->fetchrow_hashref; 32/42

Zapytania z pobieraniem danych bez odr bnego przygotowania zapytania selectrow_* @ary = $dbh->selectrow_array($statement); @ary = $dbh->selectrow_array($statement, \%attr); @ary = $dbh->selectrow_array($statement, \%attr, @bind_values); $ary_ref = $dbh->selectrow_arrayref(...); $hash_ref = $dbh->selectrow_hashref(...); Pobiera jeden wiersz (jedn krotk ). prepare + execute + raz wykonane fetchrow_*. $statement mo»e by wcze±niej przygotowanym przez funkcj prepare zapytaniem. 34/42

Zapytania z pobieraniem danych bez odr bnego przygotowania zapytania selectcol_arrayref $ary_ref = $dbh->selectcol_arrayref($statement); $ary_ref = $dbh->selectcol_arrayref($statement, \%attr); $ary_ref = $dbh->selectcol_arrayref($statement, \%attr, @bind_values); Pobiera dane z jednej kolumny, ze wszystkich wierszy. prepare + execute + fetch w p tli. $statement mo»e by wcze±niej przygotowanym przez funkcj prepare zapytaniem. Atrybut Columns umo»liwia pobranie danych z innej ni» pierwsza kolumny, a tak»e z wi cej ni» jednej kolumny (nadal do jednej tabeli!) 35/42

Zapytania z pobieraniem danych bez odr bnego przygotowania zapytania selectall_* $ary_ref = $dbh->selectall_arrayref($statement); $ary_ref = $dbh->selectall_arrayref($statement, \%attr); $ary_ref = $dbh->selectall_arrayref($statement, \%attr, @bind_values); $hash_ref = $dbh->selectall_hashref($statement, $key_field); $hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr); $hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr, @bind_values); prepare + execute + fetchall_*. U»ywaj c atrybut Slice pozwala wybra format wierszy. 36/42

Dobre zwyczaje $sth->finish Informuje serwer,»e z danego zapytania nie b d pobierane ju»»adne dane. Tylko je»eli skrypt nie pobraª wszystkich krotek. $dbh->disconnect or warn $dbh->errstr Rozª cza poª czenie z baz danych. Je»eli AutoCommit jest wyª czone dziaªanie jest zale»ne od silnika bazy danych. Powinno zosta poprzedzone $dbh->commit lub $dbh->rollback. http://search.cpan.org/~timb/dbi/dbi.pm 38/42

Bibliograa T. Bunce. DBI - Database independent interface for Perl. http://search.cpan.org/~timb/dbi/dbi.pm. A. Descartes and T. Bunce. Programming the Perl DBI. O'Reilly, 2000. 39/42