Bazy danych Ćwiczenia projektowe Przygotował: Piotr Hajder Katedra Informatyki Stosowanej i Modelowania Wydział Inżynierii Metali i Informatyki Przemysłowej, AGH
Agenda 01. Wprowadzenie 02. Plan zajęć 03. Warunki zaliczenia 04. Motywacja 05. Stanowisko pracy 06. Typy danych, język SQL
01 : Wprowadzenie
O mnie mgr inż. Piotr Hajder Katedra Informatyki Stosowanej i Modelowania (http://www.isim.agh.edu.pl/) Wydział Inżynierii Metali i Informatyki Przemysłowej, AGH E-mail: phajder@agh.edu.pl Strona domowa: http://home.agh.edu.pl/~phajder/ Telefon: +48 12 617-27-60 Pokój: B5 607
O mnie Czym się zajmuję?
02 : Plan zajęć
Plan zajęć Tematy Lp. Data Temat Opis 1 26-28.02.2018 Wprowadzenie do DDL, typy danych i obiekty Typy danych w bazach danych na przykładzie Oracle XE (11g), podstawowe polecenia z zakresu DDL (create, drop, alter) 2 05-07.03.2018 DDL, constraints, sekwencje Tworzenie kluczy głównych i obcych, unikalność, tworzenie sekwencji 3 12-14.03.2018 Diagramy ERD Projektowanie baz danych z wykorzystaniem diagramów ERD 4 19-21.03.2018 DML i DQL - Zapytania z jednej tabeli Manipulacja danymi: dodawanie, usuwanie, modyfikacja; podstawy zapytań select, klauzule order by, like 5 26-28.03.2018 Projekt 1 6 09-11.04.2018 DQL - Zapytania z wielu tabel 7 16-18.04.2018 Operacje na wielu zbiorach Algebra relacji, klauzula join, typy złączeń (wewnętrzne, zewnętrzne, lewoi prawostronne) Klauzule intersect, except, union, zapytania zagnieżdżone (any, all, exists), zapytania skorelowane 8 23-25.04.2018 Zapytania agregacyjne Operatory agregacji, klauzula group by, having 9 07-09.05.2018 Projekt 2 10 14-16.05.2018 Transakcje 11 21-23.05.2018 Widoki, tabele tymczasowe, CTE cz. 1 12 28-30.05.2018 Widoki, tabele tymczasowe, CTE cz.2 13 04-06.06.2018 Triggery, procedury, funkcje 14 11-13.06.2018 Projekt 3, wystawienie ocen
Plan zajęć Przebieg spotkania Omówienie tematu Praca własna Pytania 30-60 minut Zadanie Dotyczące zajęć Aspekt teoretyczny + wykorzystanie Praca nad projektem Dotyczące projektów
Plan zajęć? 21,8%!
03 : Warunki zaliczenia
Warunki zaliczenia Ćwiczenia projektowe >11 obecności Informacje Projekty w grupach Stosowanie Ocena końcowa Min. 3x 3.0 dwuosobowych Grupa wybiera temat Ocenęmożna poprawić na konsultacjach (nie na zajęciach!) Konsultacje Aktywność Aktywność = bonus Wykorzystanie = bonus (np. Java)
Warunki zaliczenia Ćwiczenia projektowe Projekt 1 Tworzenie własnego schematu bazy danych, Wykorzystanie poleceń DDL języka SQL, Tworzenie zapytań modyfikujących rekordy w bazie. Projekt 2 Stworzenie zapytań wybierających wielotabelowych, Wykorzystanie funkcji agregujących, Przygotowanie pod tworzenie widoków. Projekt 3 Tworzenie widoków, bazujących na wielu tabelach, Operacje na bazie, realizowane przy pomocy funkcji/triggerów, Wykorzystanie mechanizmu transakcji.
Warunki zaliczenia Kwestie organizacyjne Możliwość odrobienia zajęć na innej grupie (z tego samego tematu; nie dotyczy zajęć, na których oddawane są projekty!) Konsultacje: do uzgodnienia Dokumentacja: https://docs.oracle.com/en/database/oracle/oracle-database/index.html Oracle SQL: https://www.techonthenet.com/oracle/ Projekt Egzamin
04 : Motywacja
Motywacja Czym są bazy danych? DBMS (Database Management System) Zbiór logicznie połączonych ze sobą danych Modelowanie rzeczywistości, Pozyskiwanie informacji. Odzwierciedla rzeczywistość Encje studenci, nauczyciele, przedmioty, Relacje student uczy się na przedmiot, nauczyciel uczy studenta. Narzędzie/system do przechowywania i zarządzania danymi Aplikacja nie musi wiedzieć, jak i gdzie przechowywane są dane.
Motywacja Dlaczego bazy danych? http://www.bigdatalandscape.com
Motywacja Dlaczego bazy danych? Zatrudnienie Nauka Biznes, Startup Coś z niczego Przemysł, branża IT Podstawa Computer Science
05 : Stanowisko pracy
Stanowisko pracy Oracle XE 11g SQLDeveloper
Stanowisko pracy Instalacja Oracle XE http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html
Stanowisko pracy Instalacja Oracle XE
Stanowisko pracy SQLDeveloper
Stanowisko pracy VirtualBox
Stanowisko pracy Gotowy obraz http://www.oracle.com/technetwork/apps-tech/sdp-vm-2121008.html
Stanowisko pracy Odblokowanie schematu hr 1. Uruchom polecenie sqlplus 2. Zaloguj się na konto system z hasłem podanym podczas instalacji 3. Wykonaj polecenie oznaczone literą a 4. Wykonaj polecenie oznaczone literą b, w miejsce liczby 12345 wstawiając własne hasło 5. Wyjdź z konsoli poleceniem exit a b
Stanowisko pracy Stworzenie nowego użytkownika 1. Zaloguj się jako użytkownik system w konsoli przez sqlplus 2. Wykonaj poniższe polecenia (stworzenie użytkownika i nadanie odpowiednich uprawnień) 3. Wyjdź poleceniem exit SQL> create user chris identified by <password-for-chris>; SQL> grant CREATE SESSION, ALTER SESSION, CREATE DATABASE LINK, - CREATE MATERIALIZED VIEW, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, - CREATE ROLE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, - CREATE TRIGGER, CREATE TYPE, CREATE VIEW, UNLIMITED TABLESPACE - to chris; https://docs.oracle.com/cd/e17781_01/admin.112/e18585/toc.htm
Stanowisko pracy Połączenie przez SQLDeveloper
06 : Typy danych, Język SQL
Typy danych Na przykładzie Oracle XE Znakowe Numeryczne Data i czas Long Objects (LOB) CHAR NUMBER (precision, scale) DATE BLOB VARCHAR, VARCHAR2 TIMESTAMP CLOB BINARY_FLOAT NCLOB NCHAR, NVARCHAR2 TIMESTAMP WITH TIMEZONE BFILE Floating-point numbers LOB znakowy BINARY_DOUBLE TIMESTAMP WITH LOCAL TIMEZONE LONG https://docs.oracle.com/cd/e11882_01/server.112/e41084/sql_elements001.htm
Typy danych Numeryczne, 123.45 p precyzja, wartość z zakresu 1; 38, określa liczbę znaczących cyfr s skala, wartość z zakresu 84; 127, określa liczbę znaczących cyfr po przecinku p precyzja, określa dokładność od 1 do 126 cyfr w zapisie binarnym 3 123 6, 2 100 4,2 2,5 CREATE TABLE float_demo ( f1 FLOAT(1), f2 FLOAT(4), f3 FLOAT(7) ); błąd błąd _ Czterobajtowa liczba zmiennoprzecinkowa Min 1.17549e-38F Max 3.40282e38F _ Ośmiobajtowa liczba zmiennoprzecinkowa Min Max 2.22507e-308 1.79769e308
Typy danych Znakowe CHAR[(size [BYTE CHAR])] Typ znakowy o stałej długości (size), Domyślna długość 1 bajt, maksimum 2000 bajtów (lub znaków), Ciąg znaków krótszy niż podana długość zostanie uzupełniony pustymi znakami. NCHAR[(size)] Typ znakowy o stałej długości (size), Domyślna długość 1 znak, maksimum 2000 znaków, Fizyczny rozmiar zależny od podanego przy tworzeniu bazy kodowania znaków, Krótszy ciąg znaków -> j.w. VARCHAR2(size [BYTE CHAR]) Ciąg znaków zmiennej długości fizyczny rozmiar zależny od wejścia, Rozmiar w bajtach/znakach z zakresu 1; 4000. NVARCHAR2(size) Ciąg znaków zmiennej długości, Rozmiar podawany w znakach, max 4000, Fizyczny rozmiar zależy od zdefiniowanego kodowania.
Typy danych Data i czas Drugie lub trzecie zajęcia
Polecenia DDL CREATE CREATE TABLE table_name ( column_1 datatype [ NULL NOT NULL ], column_2 datatype [ NULL NOT NULL ],, column_n datatype [ NULL NOT NULL ] ); Objaśnienie: table_name nazwa tabeli (obiektu), column_x nazwa kolumny, datatype typ danych, Ponadto, można określić, czy parametr może przyjmować wartość NULL. Nazwy tabel w bazie muszą być unikalne Nazwy kolumn w tabeli muszą być unikalne Przy tworzeniu tabeli można dodawać ograniczenia nazwy również unikalne Ewentualne braki można uzupełnić, modyfikując tabelę poleceniem ALTER CREATE TABLE customers ( customer_id number(10) NOT NULL, customer_name varchar2(50) NOT NULL, city varchar2(50), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Polecenia DDL DROP DROP TABLE [schema_name].table_name [ CASCADE CONSTRAINTS ] [ PURGE ]; DROP TABLE customers; Objaśnienie: schema_name nazwa schematu, który zawiera podaną tabelę, table_name nazwa tabeli do usunięcia, CASCADE CONSTRAINTS usunięcie tabeli wraz zdotyczącymi jej ograniczeniami, PURGE całkowite usunięcie tabeli (z pominięciem kosza). Służy do usuwania obiektów (tabel, schematów, Często stosowany w połączeniu z Może zadziałać również na obiekty Przykłady użytkowników, ograniczeń) poleceniem ALTER powiązane
Polecenia DDL ALTER Składnia ALTER TABLE table_name ADD column_name column definition; ALTER TABLE table_name MODIFY column_name column_type; ALTER TABLE table_name DROP COLUMN column_name; ALTER TABLE table_name RENAME COLUMN old_name TO new_name; ALTER TABLE table_name RENAME TO new_table_name; Przykład ALTER TABLE customers ADD (customer_name varchar2(45), city varchar2(40) DEFAULT 'Seattle'); ALTER TABLE customers MODIFY city varchar2(75) NOT NULL; ALTER TABLE customers DROP COLUMN customer_name; ALTER TABLE customers RENAME COLUMN customer_name TO cname; ALTER TABLE customers RENAME TO contacts; Pozwala na modyfikowanie stworzonych obiektów Tabela musi być pusta, aby zmienić kolumnę Pozwala na modyfikację ograniczeń Głównie (ale nie tylko) dla tabel!
Praca własna Zadanie Lp. Treść zadania Stwórz tabelę suppliers, zawierającą pola: supplier_id unikalny identyfikator liczbowy, 1 supplier_name nazwa dostawcy (np. imię i nazwisko), address adres dostawcy. 2 Zmień nazwę tabeli stworzonej w p.1 tablicy na supps. 3 Dodaj nową kolumnę do tabeli: supplier_cost kosztdostawy. Zmodyfikuj kolumnę supplier_cost i supplier_name, zmieniając ich 4 typy danych (np. zmniejsz maksymalną długość typu znakowego, czy precyzję typu numerycznego). 5 Usuń kolumnę supplier_cost, a następnie całą tabelę. Podpowiedź: użyj polecenia DESC nazwa_tablicy, aby podglądnąć strukturę tabeli.
Pytania?