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

Podobne dokumenty
Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Język SQL, zajęcia nr 1

Wykład 05 Bazy danych

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

Wykład 5. SQL praca z tabelami 2

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

Wykład 8. SQL praca z tabelami 5

Bazy danych. Polecenia SQL

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

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

Bazy danych. dr inż. Arkadiusz Mirakowski

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

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

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

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Relacyjne bazy danych. Podstawy SQL

Autor: Joanna Karwowska

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

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

Struktura drzewa w MySQL. Michał Tyszczenko

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

Imię i Nazwisko Data Ocena. Laboratorium 7

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

Wykład 6. SQL praca z tabelami 3

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

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

Relacyjne bazy danych. Podstawy SQL

Projektowanie systemów baz danych

Hurtownia Świętego Mikołaja projekt bazy danych

SQL (ang. Structured Query Language)

SQL 4 Structured Query Lenguage

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

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

Autor: Joanna Karwowska

Oracle PL/SQL. Paweł Rajba.

BAZA DANYCH SIECI HOTELI

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Struktura bazy danych

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

Bazy danych Ćwiczenia projektowe

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Instalacja MySQL.

Kurs. Podstawy MySQL

Programowanie w języku Java. Bazy danych SQLite w Javie

Bazy danych 7. SQL podstawy

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

SQL :: Data Definition Language

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Bazy danych. Dr inż. Paweł Kasprowski

15. Funkcje i procedury składowane PL/SQL

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Aspekty aktywne baz danych

znaleźć wszystkie rekordy dotyczące adresów przy ulicy Hożej (dowolnego miasta!);

Bazy danych. dr Radosław Matusik. radmat

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

ACESS- zadania z wykorzystaniem poleceń SQL

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

akademia androida Składowanie danych część VI

Język SQL, zajęcia nr 2

Bazy danych 10. SQL Widoki

Bazy danych i usługi sieciowe

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Podstawy technologii WWW

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Multimedialne bazy danych - laboratorium

Oracle11g: Wprowadzenie do SQL

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

Fizyczna struktura bazy danych w SQL Serwerze

Ćwiczenia 2 IBM DB2 Data Studio

Paweł Rajba

Bazy danych - Materiały do laboratoriów VIII

Programowanie w Ruby

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

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

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

Database Connectivity

Widok Connections po utworzeniu połączenia. Obszar roboczy

Oracle PL/SQL. Paweł Rajba.

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Transkrypt:

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 Nr Temat Studia 5 Bazy danych w SP-1 Ćwiczenie 1. Tworzenie bazy danych w ie z wykorzystaniem interpretera sqlite 1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. 3 # utworzenie połączenia z bazą przechowywaną na dysku lub w pamięci (':memory:') con = sqlite3.connect('test1.db') # dostęp do kolumn przez indeksy i przez nazwy con.row_factory = sqlite3.row # utworzenie obiektu kursora, istotne aby móc wykonywać operacje na bazie cur = con.cursor() 2. Model bazy danych. Prawidłowe wykonywanie relacji na bazie danych, typu: Create, Read, Update, Delete wymaga utworzenia tabel i relacji między nimi, wg ustalonego schematu. Do podanego powyżej kodu należy dodać: # tworzenie tabel cur.execute("drop TABLE IF EXISTS klasa;") cur.execute(""" CREATE TABLE IF NOT EXISTS klasa ( id INTEGER PRIMARY KEY ASC, nazwa varchar(250) NOT NULL, profil varchar(250) DEFAULT '' )""")

id INTEGER PRIMARY KEY ASC, imie varchar(250) NOT NULL, nazwisko varchar(250) NOT NULL, klasa_id INTEGER NOT NULL, FOREIGN KEY(klasa_id) REFERENCES klasa(id) )""") Pojedyncze polecenia SQL-a wykonujemy za pomocą metody.execute() obiektu kursora. Wiele instrukcji wykonujemy z wykorzystaniem metody.executescript(). Powyższe polecenia SQLa tworzę dwie tabele. Pierwszą o nazwie klasa, gdzie zawarto nazwę i profil klasy. Drugą o nazwie uczeń, która zawiera pola imię, nazwisko, identyfikator klasy. Między tabelami zachodzi relacja jeden-do-wielu., co oznacza, że do jednej klasy może przystępować wielu uczniów. Po wykonaniu wprowadzonego kody w katalogu ze skryptem powinien się pojawić plik test.db, czyli utworzona baza danych. Jej zawartość będziemy omawiać przy użyciu interpretera sqlite3. 3. Interpreter sqlite3. sandra@ami ~/Pulpit $ sqlite3 test1.db SQLite version 3.8.2 2013-12-06 14:53:30 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>.schema sqlite>.database seq name file --- --------------- ---------------------------------------------------------- 0 main /home/sandra/pulpit/test1.db 1 tem sqlite>.schema

sqlite> CREATE TABLE klasa (...> id INTEGER PRIMARY KEY ASC,...> nazwa varchar(250) NOT NULL,...> profil varchar(250) DEFAULT''...> ); sqlite> CREATE TABLE uczeń(...> id INTEGER PRIMARY KEY ASC,...> imie varchar(250) NOT NULL,...> klasa_id INTEGER NOT NULL,...> FOREIGN KEY(klasa_id) REFERENCES klasa(id)...> ); sqlite>.tables klasa uczeń sqlite>.quite 4. Wstawianie danych. Do utworzonego już skryptu dodajemy poniższy kod: # wstawiamy jeden rekord danych cur.execute('insert INTO klasa VALUES(NULL,?,?);', ('1A', 'matematyczny')) cur.execute('insert INTO klasa VALUES(NULL,?,?);', ('1B', 'humanistyczny')) # wykonujemy zapytanie SQL, które pobierze id klasy "1A" z tabeli "klasa". cur.execute('select id FROM klasa WHERE nazwa =?', ('1A',)) klasa_id = cur.fetchone()[0] # rekord "uczniowie" zawiera pola z danymi poszczególnych uczniów uczniowie = ( (None, 'Tomasz', 'Nowak', klasa_id), (None, 'Jan', 'Kos', klasa_id), (None, 'Piotr', 'Kowalski', klasa_id) )

# wstawiamy wiele rekordów cur.executemany('insert INTO uczen VALUES(?,?,?,?)', uczniowie) # zatwierdzamy zmiany w bazie con.commit() Wstawianie pojedynczych rekordów następuje z wykorzystaniem odpowiednim poleceń SQLa uznawanych za argumenty omawianej wcześniej metody.execute(). Wiele rekordów dodajemy analogicznie posługując się funkcją:.executescript(). Wartości pól nie należy umieszczać bezpośrednio w zapytaniu SQL! W ich miejsce wstawiono tzw. placeholder. Metoda.commit() zatwierdza wprowadzone dane, tzn. zapisuje je w bazie danych. 5. Pobieranie danych. Wymaga zastosowania polecenia SELECT. Do utworzonego już kodu dopisujemy funkcję, która wyświetli listę uczniów oraz klas, do których należą: def czytajdane(): # Funkcja wybiera dane wszystkich uczniów z bazy i wyświetla je. cur.execute( 'SELECT uczen.id,imie,nazwisko,nazwa FROM uczen,klasa WHERE uczen.klasa_id=klasa.id') uczniowie = cur.fetchall() for uczen in uczniowie: print uczen['id'], uczen['imie'], uczen['nazwisko'], uczen['nazwa'] print "" czytajdane() Funkcja czytajdane() wykonuje zapytanie SQL pobierające wszystkie dane z dwóch powiązanych tabel uczen i klasa. Wydobywamy dzięki temu id ucznia, imię i nazwisko, a także nazwę klasy na podstawie warunku w klauzuli WHERE. Metoda.fetchall() zwraca wynik, czyli pasujące rekordy do zapytania, które zapisywane są do zmiennej uczniowie, gdzie będą przechowywane. Elementy w niej zawarte odczytujemy w pętli for, jako listę uczen.

6. Modyfikacje i usuwanie danych. Do skryptu dodaj następujący kod: # zmiana klasy ucznia o identyfikatorze 2 cur.execute('select id FROM klasa WHERE nazwa =?', ('1B',)) klasa_id = cur.fetchone()[0] cur.execute('update uczen SET klasa_id=? WHERE id=?', (klasa_id, 2,)) # usunięcie ucznia o identyfikatorze 3 cur.execute('delete FROM uczen WHERE id=?', (3,)) czytajdane() con.close() Modyfikowanie zawartych w klasie danych ucznia wymaga znajomości jego identyfikatora. Proces ten odbywa się z wykorzystaniem metody.execute() i odpowiednim poleceniem SELECT SQLa. Później konstruujemy zapytanie UPDATE aby nadać jej nowe wartości. Usuniecie danych ucznia następuje z wykorzystaniem polecenia SQL DELETE. Proces zamyka metoda.close(). Ćwiczenie 2. Tworzenie bazy danych w ie bez interpretera. 1. Połączenie z bazą danych. Dwie możliwości zapisu danych pamięć/plik w danym katalogu. Prawidłowe wykonanie zadania zwróci w efekcie końcowym Opened database successfully ; 2. Utworzenie tabeli o nazwie Company. Nadanie jej podstawowych cech.

conn.execute('''create TABLE IF NOT EXISTS COMPANY (ID INT PRIMARY KEY ASC, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print "Table created successfully"; Prawidłowe wykonanie zadania zwróci w efekcie końcowym Opened database successfully oraz Table created successfully ; 3. Funkcja INSERT. Wypełnienie rekordów w bazie danych. conn.execute("insert INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )"); conn.execute("insert INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )"); conn.execute("insert INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )"); conn.execute("insert INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit() print "Records created successfully"; Prawidłowe wykonanie zadania zwróci w efekcie końcowym dwie linie: Opened Opened database successfully Records Table created successfully 4. Funkcja SELECT. Wybór z bazy pracowników po ID. cursor = conn.execute("select id, name, address, salary from COMPANY") for row in cursor: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operation done successfully"; 5. Funkcja UPDATE uaktualnia dane zawarte w tabeli, wymaga znajomości ID.

conn.execute("update COMPANY set SALARY = 25000.00 where ID=1") conn.commit print "Total number of rows updated :", conn.total_changes cursor = conn.execute("select id, name, address, salary from COMPANY") for row in cursor: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operation done successfully"; 6. Funkcja DELETE usuwa rekordy z tabeli, wymaga znajomości ID.

conn.execute("delete from COMPANY where ID=2;") conn.commit print "Total number of rows deleted :", conn.total_changes cursor = conn.execute("select id, name, address, salary from COMPANY") for row in cursor: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operation done successfully"; Zadanie problemowe. Utwórz bazę osób zawierającą: id, imię, datę urodzenia, zarobki. Napisz program z wykorzystaniem pętli, w którym zawrzesz następujące polecenia: 1 wyświetlenie osób posortowanych alfabetycznie po imieniu 2 dodanie nowej osoby 3 modyfikowanie wpisu (np. zmiana daty urodzenia? zarobków? - dowolnie) 4 usunięcie osoby 5 wyświetlenie osób, które mają wiek w konkretnym przedziale 6 wyświetlenie najwyższych zarobków 7 pomysł własny 8 wyjście