Bazy danych Ćwiczenia projektowe Przygotował: Piotr Hajder Katedra Informatyki Stosowanej i Modelowania Wydział Inżynierii Metali i Informatyki Przemysłowej, AGH
Agenda 01. Powtórka 02. Interfejs CRUD 03. Przykłady DQL 04. Przykłady DML 05. Zadania
01 : Powtórka DDL, ograniczenia
Powtórka z poprzednich zajęć Polecenia DDL i ograniczenia Składnia (CREATE) Składnia (ALTER) Przykład (CREATE) Przykład (ALTER) CREATE TABLE table_name ( column1 datatype [ NULL NOT NULL ], column2 datatype [ NULL NOT NULL ],..., CONSTRAINT constraint_name PRIMARY KEY (column1, column2,... column_n) ); ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column1, column2,..., column_n) REFERENCES parent_table (column1, column2,..., column_n); CREATE TABLE supplier ( supplier_id numeric(10) NOT NULL, supplier_name varchar2(50) NOT NULL, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name) ); ALTER TABLE suppliers ADD CONSTRAINT check_supplier_name CHECK (supplier_name IN ('IBM', 'Microsoft', 'NVIDIA'));
02 : Interfejs CRUD Modyfikacja danych
Interfejs CRUD Tworzenie Dodawanie Przeszukiwanie Przeglądanie Wyświetlanie CREATE READ DELETE UPDATE Usuwanie Wyłączanie Aktualizacja Modyfikacja
03 : Przykłady DQL Zapytania typu SELECT
Przykłady DQL Proste zapytanie SELECT Składnia Przykład Przykład 2 SELECT expressions FROM tables [WHERE conditions]; SELECT * FROM Home WHERE bathrooms >= 2; SELECT home_id, home_type, bathrooms FROM homes WHERE home_id < 500 AND home_type = 'two-storey'
Przykłady DQL Klauzula ORDER BY Składnia Przykład 1 Przykład 2 = Przykład 1 Przykład 3 SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC DESC ]; SELECT supplier_city FROM suppliers WHERE supplier_name = 'Microsoft ORDER BY supplier_city; SELECT supplier_city FROM suppliers WHERE supplier_name = 'Microsoft ORDER BY supplier_city ASC; SELECT supplier_city FROM suppliers WHERE supplier_name = 'Microsoft ORDER BY supplier_city DESC; Sortowanie
Przykłady DQL Warunek LIKE Zastosowanie Składnia Znaki specjalne Przykład Przykład 2 Przykład 3 Warunek LIKE używany jest podczas sprawdzenia warunku klauzuli WHERE, która występuje w połączeniu z poleceniami: SELECT, INSERT, UPDATE oraz DELETE. Pozwala na dokonanie dopasowania ciągu znaków do zdefiniowanej ścieżki. expression LIKE pattern [ ESCAPE 'escape_character' ] % - pozwala na dopasowanie dowolnej liczby znaków _ - pozwala na dopasowanie dokładnie jednego znaku escape_character pozwala na podanie znaku zastępczego dla ww. symboli SELECT last_name FROM customers WHERE last_name LIKE 'Ap%'; SELECT last_name FROM customers WHERE last_name LIKE '%er%'; SELECT * FROM suppliers WHERE account_number LIKE '92314_';
04 : Przykłady DML Realizacja CRUD w BD
Przykłady DML INSERT Składnia Przykład INSERT INTO table ( column1, column2,..., column_n ) VALUES ( expr1, expr2,..., expr_n ); INSERT INTO suppliers ( supplier_id, supplier_name ) VALUES ( 5000, 'Apple );
Przykłady DML INSERT ALL Składnia Przykład INSERT ALL INTO mytable (col1, col2, col_n) VALUES (expr1, expr2, expr_n) INTO mytable (col1, col2, col_n) VALUES (expr1, expr2, expr_n) INTO mytable (col1, col2, col_n) VALUES (expr1, expr2, expr_n) SELECT 1 FROM dual; INSERT ALL INTO suppliers (supplier_id, supplier_name) VALUES (1000, 'IBM ) INTO suppliers (supplier_id, supplier_name) VALUES (2000, 'Microsoft ) INTO customers (customer_id, customer_name, city) VALUES (999999, 'Anderson Construction', 'New York ) SELECT 1 FROM dual;
Przykłady DML INSERT..SELECT Składnia Przykład Rozbudowany przykład INSERT INTO table ( column1, column2,..., column_n ) SELECT expr1, expr2,..., expr_n FROM source_table [WHERE conditions]; INSERT INTO suppliers ( supplier_id, supplier_name ) SELECT account_no, name FROM customers WHERE customer_id > 5000; INSERT INTO clients ( client_id, client_name, client_type ) SELECT 10345, 'IBM', 'advertising FROM dual WHERE NOT EXISTS ( SELECT * FROM clients WHERE clients.client_id = 10345 );
Przykłady DML UPDATE Składnia Przykład Rozbudowany przykład UPDATE table SET column1 = expression1, column2 = expression2,..., column_n = expression_n [WHERE conditions]; UPDATE customers SET state = 'California, customer_rep = 32 WHERE customer_id > 100; UPDATE customers c SET c_details = ( SELECT contract_date FROM suppliers s WHERE s.supplier_name = c.customer_name ) WHERE customer_id < 1000;
Przykłady DML DELETE Składnia Przykład Rozbudowany przykład DELETE FROM table [WHERE conditions]; DELETE FROM customers WHERE last_name = 'Smith'; DELETE FROM suppliers s WHERE EXISTS ( SELECT c.customer_name FROM customers c WHERE c.customer_id = s.supplier_id AND customer_id > 25 ); Przed wykonaniem polecenia DELETE warto dla potwierdzenia poprawności wybrać rekordy poleceniem SELECT Przykład SELECT count(*) FROM customers WHERE last_name = 'Smith'; Zliczenie rekordów, w których nazwisko to Smith
05 : Praca własna Zadania
Praca własna Zadania Lp. 1 2 3 4 5 6 Treść Stwórz tabelę użytkowników sklepu internetowego, dodając do niej pola: identyfikator, imię, nazwisko, numer telefonu oraz wiek Dodaj do tabeli kilka (np. 5) przykładowych rekordów, korzystając z jednego z wymienionych podczas zajęć poleceń INSERT Ustaw numer telefonu na wartość NULL dla osób, które nie ukończyły 18 roku życia Stwórz tabelę klientów, składającą się z pól: imię, nazwisko oraz numer telefonu, uzupełniając ją rekordami z tabeli Użytkownicy, wybierając wyłącznie pełnoletnie osoby Sprawdź, ilu użytkowników w dowolnej z tabel posiada numer telefonu rozpoczynający się od cyfry 5 Usuń wszystkich użytkowników, których numer telefonu rozpoczyna się od cyfry 5
Dziękuję!