Język SQL. Rozdział 8. Język manipulowania danymi DML

Podobne dokumenty
Język SQL. Rozdział 8. Język manipulowania danymi DML zadania

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Ćwiczenie 6 - DML. Tworzenie, modyfikacja i usuwanie krotek. Podstawy poleceń COMMIT i ROLLBACK. Ćwiczenie 6 DML. Wymagania: Bazy Danych

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Baza danych inside. Biologiczne Aplikacje Baz Danych

Podstawy SQL. 1. Wyświetl całość informacji z relacji ZESPOLY. 2. Wyświetl całość informacji z relacji PRACOWNICY

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

SQL do zaawansowanych analiz danych część 1.

ACESS- zadania z wykorzystaniem poleceń SQL

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

Laboratorium Bazy danych SQL 3 1

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Paweł Rajba

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Ćwiczenie zapytań języka bazy danych PostgreSQL

Relacyjny model danych. Relacyjny model danych

Oracle PL/SQL. Paweł Rajba.

Język SQL. Rozdział 2. Proste zapytania

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

Klasyczna Analiza Danych

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Technologie baz danych WYKŁAD 7: Wyjątki

Bazy Danych i Usługi Sieciowe

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Widok Connections po utworzeniu połączenia. Obszar roboczy

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Typy Oracle atrybutów relacji Typ NUMBER (1)

Typy Oracle atrybutów relacji Typ NUMBER (1)

Wykład 5. SQL praca z tabelami 2

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Język PL/SQL. Rozdział 2. Kursory

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

bazy danych - heterogeniczność producenci funkcjonalność modele danych protokoły komunikacyjne

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Zaawansowane bazy danych i hurtownie danych semestr I

Bazy danych i usługi sieciowe

Przestrzenne bazy danych Podstawy języka SQL

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

Ćwiczenie 4 - połączenia

Wykład 8. SQL praca z tabelami 5

Relacyjne bazy danych. Podstawy SQL

Oracle11g: Wprowadzenie do SQL

Ćwiczenie 8 DDL. Sekwencje, indeksy, perspektywy. Ćwiczenie 8 DDL. Wymagania: Bazy Danych

Laboratorium Bazy danych SQL 2

Bazy Danych i Usługi Sieciowe

Optymalizacja poleceń SQL Metody dostępu do danych

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Relacyjne bazy danych. Podstawy SQL

Bazy danych 10. SQL Widoki

Aby stworzyć widok, należy mieć uprawnienia do wszystkich obiektów do których odnosi się widok.

Ćwiczenie 5 podzapytania

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

Optymalizacja poleceń SQL Wprowadzenie

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Bazy danych i usługi sieciowe

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

Aspekty aktywne baz danych

Bazy danych Język SQL część 2 Wykład dla studentów matem

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

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Struktura bazy danych

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

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

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

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

Zarządzanie bazą danych za pomocą poleceń języka SQL*Plus

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

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

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

Deklarowanie kursora

MongoDB. mini przewodnik. Instytut Informatyki, Politechnika Poznańska. v

SQL (ang. Structured Query Language)

Podstawy języka SQL cz. 2

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

Wprowadzenie do języka SQL

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

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących.

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

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

Język PL/SQL Procedury i funkcje składowane

MongoDB. mini przewodnik. Instytut Informatyki, Politechnika Poznańska. v

Wyzwalacze TWORZENIE WYZWALACZY

Transkrypt:

Język SQL. Rozdział 8. Język manipulowania danymi DML Wstawianie danych i polecenie INSERT, modyfikowanie danych i polecenie UPDATE, usuwanie danych i polecenie DELETE, połączenia modyfikowalne, sekwencje. 1

Wstawianie krotek do relacji (1) Wstawiając wartości do wszystkich atrybutów relacji można pominąć listę atrybutów. Wartości w klauzuli INSERT muszą występować w takiej samej kolejności, w jakiej występowały definicje atrybutów w poleceniu CREATE TABLE. W celu zwiększenia czytelności polecenia zaleca się podawanie listy nazw atrybutów. INSERT INTO nazwa_relacji VALUES (wartość 1 [ DEFAULT ] [ NULL ],..., wartość n ); INSERT INTO nazwa_relacji (atrybut 1,..., atrybut n ) VALUES (wartość 1,..., wartość n ); INSERT INTO zespoly VALUES (60, 'MULTIMEDIA', NULL); INSERT INTO zespoly (id_zesp,nazwa) VALUES (70, 'GRAFIKA'); 2

Wstawianie krotek do relacji (2) Wstawianie parametryzowane w narzędziach Oracle (SQL Developer oraz SQL*Plus): INSERT INTO zespoly (id_zesp, nazwa, adres) VALUES (&identyfikator, '&nazwa', '&adres'); Wstawianie krotek będących wynikiem zapytania: INSERT INTO nazwa_relacji [ (atrybut 1,..., atrybut n ) ] SELECT atrybut 1,..., atrybut n FROM... WHERE... ; INSERT INTO prac30 (numer_prac, nazwisko_prac, nazwa_zesp) SELECT id_prac, nazwisko, nazwa FROM pracownicy JOIN zespoly USING (id_zesp) WHERE id_zesp=30; 3

Wstawianie krotek do relacji (3) Dostarczenie wartości dla atrybutu przez podzapytanie: INSERT INTO pracownicy (id_prac, nazwisko, id_zesp) VALUES(400, 'KOWALSKI', (SELECT id_zesp FROM zespoly WHERE nazwa = 'ADMINISTRACJA')); podzapytanie umieszczamy w nawiasach, podzapytanie musi zwrócić dokładnie jedną wartość. 4

INSERT w standardzie SQL (1) Wstawianie krotki wypełnionej wartościami domyślnymi: INSERT INTO nazwa_relacji DEFAULT VALUES; Wstawianie wielu krotek w jednym poleceniu: INSERT INTO nazwa_relacji (atrybut 1,..., atrybut n ) VALUES (wartość_a 1,..., wartość_a n ), (wartość_b 1,..., wartość_b n ), (wartość_c 1,..., wartość_c n ); Uwaga! Powyższe polecenia nie są wspierane przez SZBD Oracle 5

INSERT w standardzie SQL (2) Alternatywa w Oracle: INSERT INTO nazwa_relacji (atrybut 1,..., atrybut n ) SELECT wartość_a 1,..., wartość_a n FROM dual UNION ALL SELECT wartość_b 1,..., wartość_b n FROM dual UNION ALL O; 6

Modyfikowanie krotek relacji (1) Polecenie UPDATE UPDATE relacja SET atrybut 1 = wartość [ DEFAULT ] [ NULL ], atrybut 2 = wartość [,...] [ WHERE warunek ]; Uwaga! Pominięcie klauzuli WHERE spowoduje, że zmodyfikowane zostaną wszystkie krotki w relacji (warunek w klauzuli WHERE będzie spełniony dla wszystkich krotek). UPDATE pracownicy SET etat = 'PROFESOR', placa_pod = placa_pod * 2.5 WHERE nazwisko = 'KOSZLAJDA'; 7

Modyfikowanie krotek relacji (2) Inną wersją polecenia UPDATE jest polecenie wykorzystujące podzapytania skorelowane i/lub zagnieżdżone. UPDATE relacja_a SET atrybuta 1 = ( SELECT wyrażenieb 1 FROM relacja_b [WHERE...] ) [WHERE...]; UPDATE relacja_a SET (atrybuta 1, atrybuta 2 ) = ( SELECT wyrażenieb 1, wyrażenieb 2 FROM relacja_b [WHERE...] ) [WHERE...]; 8

Modyfikowanie krotek - przykłady Zwiększ płacę podstawową do wartości równej 120% średniej płacy podstawowej w zespole pracownika oraz zwiększ płacę dodatkową do wartości równej maksymalnej płacy dodatkowej w zespole pracownika. Operacji dokonaj tylko dla pracowników zatrudnionych po 1992 roku. UPDATE pracownicy p SET (p.placa_pod, p.placa_dod) = (SELECT 1.2 * AVG(placa_pod), MAX(placa_dod) FROM pracownicy WHERE id_zesp = p.id_zesp) WHERE p.zatrudniony >= DATE '1993-01-01'; Pracownikom posiadającym podwładnych zwiększ płacę dodatkową o 10% sumy płac podstawowych podwładnych. UPDATE pracownicy s SET s.placa_dod = nvl(s.placa_dod,0) + 0.1 * (SELECT SUM(placa_pod) FROM pracownicy WHERE id_szefa = s.id_prac) WHERE EXISTS (SELECT * FROM pracownicy WHERE id_szefa = s.id_prac); 9

Polecenie DELETE DELETE [FROM] relacja [WHERE warunek]; Usuwanie krotek relacji Klauzula WHERE określa, które krotki należy usunąć z relacji. Jeżeli klauzula WHERE nie zostanie wyspecyfikowana, to usunięte zostaną wszystkie krotki z relacji. DELETE FROM pracownicy WHERE nazwisko IN ('BIAŁY', 'KONOPKA'); DELETE FROM pracownicy p WHERE p.placa_pod < (SELECT AVG(placa_pod) FROM pracownicy WHERE id_zesp = p.id_zesp); 10

Modyfikowanie i usuwanie wyniku połączenia (1) Relacja zachowująca klucz (key preserving table) w wyniku połączenia dwóch relacji jej klucz główny zachowuje swoje własności również w wyniku połączenia jej z inną relacją SELECT id_prac, nazwisko, z.id_zesp, nazwa FROM pracownicy p JOIN zespoly z ON p.id_zesp = z.id_zesp; ID_PRAC NAZWISKO ID_ZESP NAZWA 100 WEGLARZ 10 ADMINISTRACJA 110 BLAZEWICZ 40 ALGORYTMY 120 SLOWINSKI 30 SYSTEMY EKSPERCKIE 130 BRZEZINSKI 20 SYSTEMY ROZPROSZONE 140 MORZY 20 SYSTEMY ROZPROSZONE 150 KROLIKOWSKI 20 SYSTEMY ROZPROSZONE 160 KOSZLAJDA 20 SYSTEMY ROZPROSZONE 170 JEZIERSKI 20 SYSTEMY ROZPROSZONE 190 MATYSIAK 20 SYSTEMY ROZPROSZONE 180 MAREK 10 ADMINISTRACJA 200 ZAKRZEWICZ 30 SYSTEMY EKSPERCKIE 210 BIALY 30 SYSTEMY EKSPERCKIE 220 KONOPKA 20 SYSTEMY ROZPROSZONE Klucz relacji Pracownicy 230 HAPKE 30 SYSTEMY EKSPERCKIE Klucz relacji Zespoly 11

Modyfikowanie i usuwanie wyniku połączenia (2) Jeśli w połączeniu dwóch relacji kolumna pochodzi z relacji zachowującej klucz, to taka kolumna może być modyfikowana. UPDATE (SELECT nazwa, nazwisko, etat, placa_pod FROM pracownicy JOIN zespoly USING (id_zesp) WHERE adres = 'PIOTROWO 3A') SET placa_pod = 2000 WHERE etat = 'ASYSTENT'; DELETE FROM (SELECT etat FROM pracownicy NATURAL JOIN zespoly WHERE nazwa = SYSTEMY ROZPROSZONE ) WHERE etat = PROFESOR'; 12

Modyfikowanie i usuwanie wyniku połączenia (3) DELETE FROM (SELECT p.nazwisko AS pracownik, s.nazwisko AS szef FROM pracownicy p JOIN pracownicy s ON p.id_szefa = s.id_prac) WHERE szef = 'MORZY'; 13

Sekwencje Sekwencja to obiekt bazy danych generujący kolejne liczby. Zastosowanie: do generacji kolejnych wartości sztucznych identyfikatorów numerycznych rekordów. Tworzenie sekwencji: CREATE SEQUENCE nazwa_sekwencji [ START WITH n ] [INCREMENT BY m] [MAXVALUE x NOMAXVALUE] [MINVALUE y NOMINVALUE]; CREATE SEQUENCE myseq START WITH 300 INCREMENT BY 10; Modyfikowanie istniejącej sekwencji: ALTER SEQUENCE nazwa_sekwencji [INCREMENT BY m] [MAXVALUE x NOMAXVALUE] [MINVALUE y NOMINVALUE ]; ALTER SEQUENCE myseq INCREMENT BY 5; 14

Korzystanie z sekwencji Pseudokolumny sekwencji: NEXTVAL odczyt pseudokolumny powoduje generację kolejnego numeru z sekwencji, numer jest zwracany jako wartość pseudokolumny, CURRVAL jej wartość to ostatnio pobrany (przez użycie NEXTVAL lub CURRVAL) numer sekwencji; użycie nie generuje nowego numeru. Użycie sekwencji w poleceniach DML: INSERT INTO pracownicy (id_prac, nazwisko, etat) VALUES (myseq.nextval, 'BOROWIAK', 'DYREKTOR'); UPDATE pracownicy SET id_szefa = myseq.currval WHERE nazwisko = 'KONOPKA'; Usuwanie sekwencji: DROP SEQUENCE nazwa_sekwencji; 15

Dodatkowe informacje dot. sekwencji Uwagi: Sekwencja nie jest związana z konkretną relacją i może być wykorzystywana dla różnych atrybutów. Sekwencja jest odczytywana zawsze, nawet jeśli transakcja zostanie wycofana. Sekwencji nie można stosować w: podzapytaniach, zapytaniach z klauzulą DISTINCT, GROUP BY, ORDER BY, w klauzuli WHERE, w zapytaniach z operatorami zbiorowymi, w definicji perspektywy, w definicji wartości domyślnej DEFAULT (do Oracle 11g włącznie). 16

Słownik bazy danych (dot. Oracle) Klasy perspektyw słownikowych: USER_xxx informacje o obiektach użytkownika, ALL_xxx informacje o obiektach, do których użytkownik ma dostęp. Perspektywa Synonim Opis DICTIONARY DICT Lista dostępnych perspektyw słownikowe USER_SEQUENCES ALL_SEQUENCES Sekwencje należące do użytkownika Sekwencje dostępne dla użytkownika SELECT table_name FROM dict ORDER BY table_name; SELECT sequence_name FROM user_sequences; 17