Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Podobne dokumenty
PLAN WYKŁADU BAZY DANYCH ETAPY PRZETWARZANIA ZAPYTANIA OPTYMALIZACJA ZAPYTAŃ

Wykład XII. optymalizacja w relacyjnych bazach danych

Systemy GIS Tworzenie zapytań w bazach danych

Technologie baz danych

SQL (ang. Structured Query Language)

Przestrzenne bazy danych Podstawy języka SQL

Autor: Joanna Karwowska

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

3. Podzapytania, łączenie tabel i zapytań

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

Relacyjne bazy danych. Podstawy SQL

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Oracle11g: Wprowadzenie do SQL

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Teoretyczne podstawy informatyki

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Relacyjne bazy danych. Podstawy SQL

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

Technologie baz danych

Optymalizacja poleceń SQL Wprowadzenie

Optymalizacja poleceń SQL Metody dostępu do danych

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

Wprowadzenie do baz danych

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

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Wprowadzenie do języka SQL

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

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

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

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Podstawy języka SQL cz. 2

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

Administracja i programowanie pod Microsoft SQL Server 2000

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

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Model relacyjny. Wykład II

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

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Podstawowe zapytania SELECT (na jednej tabeli)

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

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

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Wykład 6. SQL praca z tabelami 3

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Bazy danych. Dr inż. Paweł Kasprowski

SZKOLENIE: Administrator baz danych. Cel szkolenia

1 Wstęp do modelu relacyjnego

Model relacyjny. Wykład II

Indeksowanie w bazach danych

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Optymalizacja poleceń SQL

Wykład 5. SQL praca z tabelami 2

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

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Ćwiczenie zapytań języka bazy danych PostgreSQL

sprowadza się od razu kilka stron!

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

Struktura drzewa w MySQL. Michał Tyszczenko

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

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

SQL Structured Query Language

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

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

Autor: Joanna Karwowska

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Fizyczna struktura bazy danych w SQL Serwerze

WPROWADZENIE DO BAZ DANYCH

Microsoft SQL Server Podstawy T-SQL

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Paweł Rajba

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Język SQL. Rozdział 2. Proste zapytania

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Technologie baz danych

Grupowanie i funkcje agregujące

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Zadania z SQLa (MS SQL Server)

Wykład 2. Relacyjny model danych

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Fazy przetwarzania zapytania zapytanie SQL. Optymalizacja zapytań. Klasyfikacja technik optymalizacji zapytań. Proces optymalizacji zapytań.

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

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

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

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

Autor: Joanna Karwowska

Transkrypt:

Plan wykładu Bazy danych Wykład 12: Optymalizacja zapytań. Język DDL, DML (cd) Etapy przetwarzania zapytania Implementacja wyrażeń algebry relacji Reguły heurystyczne optymalizacji zapytań Kosztowa optymalizacja zapytań Małgorzata Krętowska Katedra Oprogramowania e-mail: m.kretowska@pb.edu.pl Język DML, DDL (cd) 2 Przetwarzanie zapytań Etapy przetwarzania zapytania Zapytanie wyrażone w wysokopoziomowym języku zapytań, takim jak SQL, musi najpierw zostać odczytane, poddane analizie składniowej i zweryfikowane. Czytnik (ang. Scanner) - identyfikuje elementy języka (słowa kluczowe SQL, nazwy atrybutów, nazwy relacji ) w tekście zapytania Analizator składniowy (ang. Parser) - sprawdza składnię zapytania w celu określenia czy sformułowano je zgodnie z regułami gramatyki języka zapytań. Drzewo zapytania - wewnętrzna reprezentacja zapytania, w postaci drzewiastej struktury Strategia wykonania zapytania - określana jest przez SZBD i określa strategię pobrania wyników zapytania z plików bazy danych. Proces wyboru najlepszej strategii określa się mianem optymalizacji zapytania. Zapytanie w języku wysokiego poziomu ODCZYT, ANALIZA SKŁADNIOWA I WERYFIKACJA Zapytanie w postaci pośredniej OPTYMALIZATOR ZAPYTAŃ Plan wykonania GENERATOR KODU ZAPYTAŃ Kod wykonania zapytania WYKONAWCZY PROCESOR BAZY DANYCH Wynik zapytania 3 4 Strategie optymalizacji zapytań Reguły heurystyczne - sprawdzają się z większości sytuacji, ale nie gwarantują poprawnego działania w każdym przypadku Reguły z systematycznym szacowaniem - szacowany jest koszt różnych strategii wykonania zapytania. Wybierany jest plan o najniższym szacowanym koszcie. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji Zapytanie języka SQL jest tłumaczone na równoważne mu wyrażenie algebry relacji - reprezentowane jako struktura danych drzewa zapytania - które podlega optymalizacji. Zapytania SQL są rozkładane na bloki zapytania, które stanowią podstawową jednostkę, jaka może być tłumaczona na operatory algebraiczne i optymalizowana Blok zapytania stanowi pojedyncze wyrażenie SELECT- FROM- WHERE, jak również klauzule GROUP BY I HAVING. Wyrażenia algebry relacji: - operacje teoriomnogościowe (suma, przecięcie, różnica, iloczyn kartezjański) rzutowanie (projekcja) Π selekcja σ złączenie agregacja (zastosowanie funkcji agregujących) I 5 6

Przykład Algorytmy sortowania zewnętrznego Select nazwisko, id_a from where pensja > (select ma(pensja) from where nr_departamentu=5) Blok wewnętrzny ma postać: select ma(pensja) from where nr_departamentu=5 Zapis w postaci wyrażenia algebry relacji: I ma pensja (σ nr_departamentu=5 ()) Blok zewnętrzny ma postać: Select nazwisko, id_a from where pensja > C Zapis w postaci wyrażenia algebry relacji:, id_a (σ pensja>c ()) Jedne z najważniejszych algorytmów używanych w czasie przetwarzania zapytań, wykorzystywany wówczas gdy zapytanie zawiera klauzulę order by opcję distinct w klauzuli select przy złączaniu tabel sortowanie można uniknąć, jeżeli istnieje odpowiedni indeks, umożliwiający uzyskanie uporządkowanego dostępu do rekordów Sortowanie zewnętrzne odnosi się do algorytmów sortowania odpowiednich dla dużych plików rekordów składowanych na dysku, które nie mieszczą się w pamięci głównej 7 8 Algorytmy sortowania zewnętrznego Implementacja operacji SELECT Typowy algorytm sortowania zewnętrznego wykorzystuje strategię sortującoscalającą: Faza sortowania: jednostki pliku, które mieszczą się w dostępnej przestrzeni bufora, są wczytywane do pamięci, sortowane przy użyciu algorytmu sortowania wewnętrznego i zapisywane z powrotem na dysku jako tymczasowe posortowane podpliki. Liczba jednostek początkowych n r zależy od liczby bloków pliku (b) oraz dostępnej przestrzeni bufora n B : n R =ceil (b/n B ). Faza scalania: posortowane jednostki są scalane w czasie jednego lub większej liczby przebiegów. Stopień scalenia d M jest liczbą jednostek, które można scalić w każdym przebiegu. W każdym przebiegu potrzebny jest jest jeden blok bufora w celu przechowywania jednego bloku z każdej ze scalanych jednostek i jeden blok do przechowywania każdego bloku wyniku scalenia. d M jest mniejszą spośród wartości (n B -1) i n R ; liczba przebiegów wynosi ceil(log dm (n R )). Liczba operacji dostępu do bloków: (2*b)+(2*(b*log dm n R )) Metody wyszukiwania w przypadku prostych operacji wybierania σ nr_departamentu=5 () ; σ id_a>3 () algorytmy te można podzielić na tzw. przeglądy plików (przeglądają rekordy w pliku w celu wyszukania i pobrania odpowiednich rekordów) oraz przeglądy indeksu (wyszukiwania uwzględniające użycie indeksu). wyszukiwanie liniowe- pobieramy każdy rekord z pliku i sprawdzamy, czy wartość jego atrybutu spełnia warunek wyboru wyszukiwanie binarne - warunek wyboru zawiera porównanie równowartościowe na atrybucie klucza, względem którego uporządkowany jest plik użycie indeksu głównego (lub klucza haszującego) jeżeli warunek zawiera porównanie równowartościowe na atrybucie klucza z indeksem głównym warunek ten powoduje wybranie najwyżej jednego rekordu 9 10 Implementacja operacji SELECT Implementacja operacji SELECT użycie indeksu głównego w celu pobrania wielu rekordów warunek porównania jest >,>=,< lub <= na polu klucza z indeksem głównym używamy indeksu w celu znalezienia rekord spełniającego odpowiedni warunek, a następnie pobieramy wszystkie kolejne rekordy z uporządkowanego pliku użycie indeksu drugorzędnego (B + -drzewa) na porównaniu równościowym - metoda może być użyta w celu pobrania pojedynczego rekordu, jeżeli pole indeksujące jest kluczem lub w celu pobrania wielu rekordów, jeżeli pole indeksujące nie jest kluczem. Można jej używać w przypadku porównań uwzględniających relacje >; >=;<; <=. Metody wyszukiwania w przypadku złożonych operacji wyboru σ nr_departamentu=5 and nazwisko= C% () Wybór koniunktywny przy użyciu pojedynczego indeksu - jeżeli atrybut związany z dowolnym pojedynczym warunkiem prostym jest kluczem,możemy użyć jednej z metod dla prostych operacji wybierania, a następnie sprawdzamy, czy każdy pobrany rekord spełnia pozostałe warunki proste. Wybór koniunktywny przy użyciu indeksu złożonego - jeżeli warunki równości dotyczą dwóch lub więcej atrybutów i na połączonych polach istnieje indeks złożony możemy bezpośrednio użyć takiego indeksu Wybór koniunktywny poprzez przecięcie zbiorów wskaźników na rekordy jeżeli na więcej niż jednym polu związanym z warunkami prostymi istnieją indeksy drugorzędne oraz jeżeli indeksy zawierają wskaźniki na rekordy wówczas każdy indeks może zostać użyty w celu pobrania zbioru wskaźników rekordów, które spełniają pojedyncze warunki. Przecięcie tych zbiorów daje w wyniku wskaźniki rekordów spełniające warunek koniunktywny. Jeżeli tylko niektóre warunki posiadają odpowiednie indeksy, wówczas każdy pobrany rekord jest dodatkowo sprawdzany w celu określenia czy spełnia pozostałe warunki. 11 12

Implementacja operacji SELECT σ nr_departamentu=5 or nazwisko= C% () Implementacja operacji NATURAL JOIN R A=B S np. nr_departamentu=nr_departamentu departament alternatywy logiczne stanowią sumę teoriomnogościową rekordów spełniających poszczególne warunki stąd niewielkie pole manewru w zakresie optymalizacji jeżeli któryś z warunków nie posiada indeksu należy wykorzystać wyszukiwanie liniowe tylko wówczas gdy indeks istnieje na każdym warunku można zoptymalizować wybór, pobierając rekordy spełniające każdy z warunków a następnie zastosować operację sumy teoriomnogościowej w celu wyeliminowania duplikatów 13 Złączenie pętli zagnieżdżonych - dla każdego rekordu t w pliku R (pętla zewnętrzna) pobieramy każdy rekord s z pliku S (pętla wewnętrzna) i sprawdzamy, czy oba rekordy spełniają warunek złączenia Złączenie z pętlą pojedynczą - jeżeli na jednym z atrybutów podlegających złączeniu - np. B w pliku S - istnieje indeks pobieramy każdy rekord t z pliku R, po jednym naraz, a następnie używamy struktury dostępowej w celu bezpośredniego pobrania wszystkich pasujących rekordów s z pliku S, spełniających warunek złączenia. Złączenie sortująco - scalające jeżeli rekordy plików R i S są uporządkowane według wartości atrybutów złączenia -> implementacja złączenia najwydajniejsza; oba pliki są przeglądane w kolejności atrybutów złączenia i dopasowujemy rekordy mające odpowiednio takie same wartości atrybutów złączenia jeżeli rekordy nie są posortowane można tego dokonać przy użyciu sortowania zewnętrznego. 14 Algorytmy operacji rzutowania Π <lista atrybutów> (R) Prosty do implementacji, jeżeli lista atrybutów zawiera klucz relacji R -> wynik operacji ma tę samą liczbę krotek co relacji R, ale zawiera w każdej krotce tylko wartości atrybutów należących do listy. Jeżeli lista atrybutów nie zawiera klucza relacji R, należy wyeliminować duplikaty -> dokonuje się tego zwykle przez posortowanie wyniku operacji, a następnie usunięcie duplikatów krotek, które występują teraz obok siebie Algorytmy operacji teoriomnogościowych iloczyn kartezjański - operacja kosztowna, stąd istotną rzeczą jest jej unikanie poprzez zastępowanie jest równoważnymi operacjami w czasie optymalizacji suma, przecięcie, różnica technika sortująco-mieszająca - dwie relacje zostają posortowane względem tych samych atrybutów i jednokrotne przejrzenie każdej z nich wystarczy do utworzenia wyniku (np. przecięcie - zachowanie w pliku scalonym tylko tych krotek, które występują w obu relacjach) 15 16 Implementacja operacji agregujących Select ma(pensja) from jeżeli na atrybucie pensja relacji istnieje indeks (rosnący), optymalizator może zdecydować o jego użyciu w celu uzyskania największej wartości. Największa wartość będzie to ostatni wpis indeksu. Count, avg, sum można użyć indeksu, jeżeli jest to indeks zagęszczony tzn występuje w nim wpis dla każdego rekordu z pliku głównego. Indeksu niezagęszczonego można użyć tylko dla operacji count distinct. Wówczas odpowiedni obliczenia wykorzystują tylko wartości w indeksie. Klauzula GROUP BY operator agregujący musi być zastosowany oddzielnie dla każdej grupy krotek najpierw tabela musi być podzielona na podgrupy względem atrybutu grupującego często stosowane jest najpierw albo sortowanie albo haszowanie na atrybutach grupujących. Implementacja złączenia zewnętrznego Select id_a, nazwisko, nazwa from left join departament on nr_departamentu; złączenie zewnętrzne można określić modyfikując jeden z algorytmów złączeniowych, takich jak złączenie pętli zagnieżdżonych lub złączenie z pętlą pojedynczą: w przypadku operacji left join relacja występująca po lewej stronie musi się znaleźć w pętli zewnętrznej (lub pojedynczej), ponieważ każda krotka z tej relacji musi się znaleźć w wyniku jeżeli w relacji po prawej stronie nie ma odpowiednich krotek to wartości uzupełnia się wartościami null. 17 18

Implementacja złączenia zewnętrznego Rozwiązanie alternatywne polega na wykonaniu kombinacji algebry relacji: 1. Określamy złączenie wewnętrzne tabel i departament temp1 Π id_a, nazwisko, nazwa ( nr_departamentu=nr_departamentu departament) 2. Znajdujemy w tabeli krotki, które nie występują w wyniku złączenia wewnętrznego temp2 Π id_a, nazwisko () Π id_a, nazwisko (temp1) 3. Uzupełniamy każdą krotkę polem nazwa o wartości null temp2 temp2 NULL 4. Wykonujemy operację sumy na temp1 i temp2 wynik temp1 temp2 Mechanizm potokowy Zapytanie w języku SQL jest przekształcane na wyrażenia algebry relacji, które jest sekwencją operacji relacyjnych wykonywanie po jednej operacji generuje pliki tymczasowe na dysku, co jest czasochłonne i może być niepotrzebne, ponieważ pliki te są natychmiast wykorzystywane jako dane wejściowe do kolejnej operacji w celu zredukowania liczby plików tymczasowych często generuje się kod zapytania, który odpowiada algorytmom łączenia operacji w zapytaniu. Jest to tzw. przetwarzanie potokowe. 19 20 Reguły heurystyczne optymalizacji zapytań Heurystyczna technika optymalizacji wykorzystuje reguły heurystyczne w celu modyfikowania wewnętrznej reprezentacji zapytania (drzewa zapytania) w celu zwiększenia oczekiwanej wydajności działania Analizator składniowy najpierw generuje początkową reprezentację wewnętrzną, która jest optymalizowana zgodnie z regułami heurystycznymi (np. stosowanie operacji selekcji i projekcji przed operacją złączenia) Przykład Select nazwisko from,, where nazwa= wodnik and.id_a=.id_a and.nr_u=.nr_u and data_zatrudnienia> 1998-12-31 ; Początkowe drzewo zapytań: nazwa= wodnik and.id_a=.id_a and.nr_u=.nr_u and data_zatrudnienia> 1998-12-31 Otrzymujemy końcowe drzewo zapytania a następnie generuje się plan wykonania zapytania w celu wykonania grup operacji 21 22 Przykład cd Przeniesienie operacji select w dół drzewa Przykład cd Zastosowanie bardziej restrykcyjnej operacji select jako pierwszej σ nr_u=nr_u σ id_a=id_a σ id_a=id_a σ nr_u=nr_u σ data_zatrudnienia> 1998-12-31 σ data_zatrudniena> 1998-12-31 23 24

Przykład cd Zastąpienie iloczynu kartezjańskiego i select operacją join Przykład cd Redukcja liczby atrybutów id_a=id_a id_a=id_a Π id_a Π id_a, nazwisko nr_u=nr_u σ data_zatrudnienia> 1998-12-31 nr_u=nr_u σ data_zatrudnienia> 1998-12-31 Π nr_projekru Π nr_u, id_a 25 26 Wykorzystanie oszacowań kosztu w optymalizacji zapytań Optymalizator zapytań nie powinien polegać wyłącznie na regułach heurystycznych, ale również uwzględniać oszacowania i porównywać koszty wykonania zapytania przy użyciu różnych strategii wykonania, wybierając strategię o najniższym oszacowanym koszcie. Takie podejście określa się mianem kosztowej optymalizacji zapytań i wykorzystuje ono tradycyjne techniki optymalizacji przeszukujące przestrzeń rozwiązania problemu w celu znalezienia rozwiązania, które będzie minimalizować funkcję kosztu. Składowe kosztu wykonania zapytań Składowe kosztu wykonania zapytań: koszt dostępu do drugorzędnych mechanizmów składowania danych koszt wyszukania, odczytania i zapisania bloków danych przechowywanych na dysku koszt zależy od struktur dostępu utworzonych dla danego pliku: uporządkowanie, haszowanie, indeksy koszt składowania - koszt przechowywania wszelkich plików pośrednich generowanych w ramach strategii wykonania zapytania Koszt obliczeniowy - koszt dokonywania obliczeń w pamięci na buforach danych w czasie wykonywania zapytania np. wyszukiwanie, sortowanie, scalanie rekordów, obliczenia na wartościach pól koszt zużycia pamięci - koszt zależny od liczby buforów pamięci potrzebnych w czasie wykonywania zapytania koszt komunikacji - koszt zawiązany z przesłaniem zapytania i jego wyników z bazy danych do węzła lub terminalu, z którego zostało przesłane żądanie 27 28 Wstawianie wierszy UPDATE Polecenie wstawiania nowych wierszy do tabeli: INSERT INTO nazwa_tabeli [(lista_kolumn)] VALUES (lista_wartości);) Wstawianie wierszy wybieranych w zapytaniu: INSERT INTO nazwa_tabeli [(lista_kolumn)] SELECT lista_wyrażeń FROM...; Polecenie UPDATE służy do zmiany wartości w istniejących wierszach: UPDATE tabela [alias] SET kolumna= {wyrażenie podzapytanie } [, kolumna= {wyrażenie podzapytanie }]... [WHERE warunek] Parametryzowane polecenie INSERT INSERT INTO nazwa_tabeli [(lista_kolumn)] VALUES(&wartość1, &wartość2,...) Przykład: INSERT INTO dept (deptno, dname, loc) VALUES (&d_numer, &d_nazwa, &d_miasto) Przykład: Zmienić dane w wierszu a Nazwisko2: UPDATE SET job= SPRZEDAWCA, data_zatrudnienia=trunc(sysdate), pensja=pensja*1.1 WHERE nazwisko= Nazwisko2 ; 29 30

Przykład Załóżmy, że mamy informacje o dodatkowych prowizjach dla części ów. Są one umieszczone w tabeli prowizje(id_a, prowizja). Dokonać aktualizacji tabeli Pracownik na podstawie informacji zawartej w tabeli prowizje. UPDATE p SET prowizja=(select c.prowizja+p.prowizja from prowizje c where c.id_a = p.id_a) WHERE id_a in (select id_a from prowizje); DELETE Polecenie DELETE służy do usuwania jednego lub wielu wierszy z tabeli. DELETE [FROM] tabela [WHERE warunek]; warunek WHERE określa, które wiersze należy usunąć jeżeli pominiemy klauzulę WHERE wszystkie wiersze zostaną pominięte. 31 32