Zarzadzanie transakcjami. Transakcje

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

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

Bazy danych 10. SQL Widoki

Wykład 8. SQL praca z tabelami 5

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

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

SQL (ang. Structured Query Language)

Oracle11g: Wprowadzenie do SQL

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

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

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

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Paweł Rajba

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

Wykład 5. SQL praca z tabelami 2

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

Cele. Definiowanie wyzwalaczy

Oracle PL/SQL. Paweł Rajba.

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

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

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

Bloki anonimowe w PL/SQL

Oracle PL/SQL. Paweł Rajba.

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

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych - Materiały do laboratoriów VIII

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

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Wprowadzenie. Tworzenie widoków

Widok Connections po utworzeniu połączenia. Obszar roboczy

Przykładowa baza danych BIBLIOTEKA

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

Obiekty bazy danych DB2

Bazy danych 6. Klucze obce. P. F. Góra

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

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

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

Pakiety podprogramów Dynamiczny SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Systemy GIS Tworzenie zapytań w bazach danych

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

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

1. Wyzwalacze BD (ang. triggers)

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

Microsoft SQL Server Podstawy T-SQL

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Zarządzanie obiektami bazy danych Oracle11g

Bazy danych SQL Server 2005

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

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

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

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

Administracja i programowanie pod Microsoft SQL Server 2000

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

Wyzwalacze TWORZENIE WYZWALACZY

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

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

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

3. Podzapytania, łączenie tabel i zapytań

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Bazy danych 7. SQL podstawy

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

Internetowe bazy danych

Projektowanie systemów baz danych

ACESS- zadania z wykorzystaniem poleceń SQL

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.

PL/SQL. Zaawansowane tematy PL/SQL

Język SQL, zajęcia nr 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

PODZAPYTANIE (SUBSELECT)

Transakcje jednocześnie ACID

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

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

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

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Relacyjne bazy danych. Podstawy SQL

Wykład 05 Bazy danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Oracle PL/SQL. Paweł Rajba.

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Grupowanie i funkcje agregujące

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

Transkrypt:

Transakcje Transakcja: ciąg zawierający jedno lub wiele poleceń SQL, zgrupowanych razem jako jedna logiczna jednostka działań, której nie można podzielić. Logiczna jednostka działań to zbiór logicznych zmian w bazie danych, które należy albo wprowadzić wszystkie albo nie wprowadzać żadnej. Mechanizm transakcji zapewnia pozostawanie bazy w spójnym (poprawnym) stanie pomimo wystąpienia błędu gdziekolwiek w systemie (np. przerwa w zasilaniu) lub w samej transakcji. Reguła ACID opisuje, jakie cechy powinna mieć transakcja: Niepodzielna (Atomic) Spójna (Consistent) Odizolowana (Isolated) Trwała (Durable) Zarzadzanie transakcjami Wszystkie operacje na bazie danych realizowane są w postaci ciągu transakcji. Transakcyjność zapewnia bezpieczeństwo i stabilną pracę bazy danych. Wszystkie instrukcje w ramach jednej transakcji zostają wykonane w całości lub w całości zostają wycofane. Dzięki temu nie powstaje sytuacja, w której tylko część danych modyfikowanych w przerwanej transakcji zostaje zmieniona. Dane, które podlegają zmianie, są odizolowane od innych użytkowników i procesów pracujących na bazie danych do czasu zakończenia transakcji. Transakcja jest zatwierdzana i kończy się w chwili wykonania instrukcjicommit. Wówczas wszystkie modyfikacje danych zostają zapisane w bazie. Uwaga. W przypadku wykonania którejkolwiek z instrukcji należącej do grupy DDL (np. CREATE, ALTER, DROP) wykonywany jest niejawny COMMIT. Uwaga. Edytory SQL mają często ustawioną domyślnie opcję autocommit. Transakcje w takim wypadku zatwiedzane są bez wykonania przez nas instrukcji COMMIT, tylko automatycznie po wykonaniu każdej instrukcji SQL. InstrukcjaROLLBACK wycofuje wszystkie modyfikacje danych w ramach jednej transakcji. Możemy ją zastosować jeśli się np. pomylimy. Ta instrukcja nie zadziała, jeśli wcześniej wykonamy COMMIT. Transakcja w takim wypadku została już zakończona. InstrukcjaSAVEPOINT pozwala utworzyć punkty przywracania. W przypadku pomyłki możemy wrócić do miejsca zapisania SAVEPOINT bez straty tych instrukcji, które zostały wykonane przed nim, dzięki temu nie ma konieczności wykonywania wszystkich operacji od początku. Aby założyć nowy savepoint stosujemy: SAVEPOINT NAZWA_SAVEPOINTA; Aby przywrócić stan do określonego savepointa stosujemy: ROLLBACK TO NAZWA_SAVEPOINTA;

Instrukcja INSERT Najprostsza forma poleceniainsert. INSERT INTO NAZWA_TABELI VALUES (WARTOŚĆ1, WARTOŚĆ2); Przy powyższym musimy podać wartości dla wszystkich kolumn uzupełnianej tabeli. Jeśli chcemy dodać wartość tylko do niektórych kolumn musimy zastosować poniższą konstrukcję: INSERT INTO NAZWA_TABELI (NAZWA_KOLUMNY1, NAZWA_KOLUMNY2) VALUES (WARTOŚĆ1, WARTOŚĆ2); Insert danych pochodzących z zapytania. Do tabeli możemy dodać również wiele wierszy jednocześnie, pochodzących z innego zapytania. Warunkiem powodzenia jest zgodność ilości oraz typów kolumn w tabeli źródłowej i docelowej, np. INSERT INTO JOBS SELECT TEST.NEXTVAL, JOB_TITLE, MIN_SALARY, MAX_SALARY FROM JOBS; Usuwanie danych: DELETE i TRUNCATE Aby skasować wszystkie wiersze z tabeli stosujemy konstrukcję: DELETE FROM NAZWA_TABELI; Możemy też skasować tylko część wierszy z tabeli stosując WHERE, np. DELETE FROM NAZWA_TABELI WHERE ID=1000; Kasowanie danych TRUNCATE Tabelę można również wyczyścić całkowicie przy pomocy polecenia TRUNCATE, np. TRUNCATE TABLE JOBS; Nie możemy tutaj w przeciwieństwie do DELETE zastosować WHERE. Możemy wyczyścić tylko całość tabeli. Tej operacji nie da się odwrócić za pomoca instrukcjirollback. Modyfikowanie danych: UPDATE Podstawowa forma modyfikacji danych: UPDATE NAZWA_TABELI SET KOLUMNA=WARTOŚĆ; Możemy zmieniać wiele kolumn naraz dodając je po przecinku: UPDATE NAZWA_TABELI SET KOLUMNA=WARTOŚĆ, SET KOLUMNA2=WARTOŚĆ2; Również tutaj możemy zastosować WHERE: UPDATE NAZWA_TABELI SET KOLUMNA=WARTOŚĆ, SET KOLUMNA2=WARTOŚĆ2 WHERE KOLUMNA=WARTOŚĆ; Instrukcja MERGE InstrukcjaMERGE umożliwia scalenie danych z dwóch tabel, czyli np. zamianę części danych w jednej tabeli na dane z innej tabeli. Przykład: zbieranie opłat za gaz. W tabeligazownia zapisane są stany liczników z danego miasta. Inkasent zbiera dane na temat stanów liczników od klientów z jednego rejonu (dane te są zapisane w tabeliinkasent_1). Następnie trzeba uaktualnić stany liczników w głównej tabeli Gazownia na podstawie danych w tabeliinkasent_1. Stosując MERGE można to zrobić za pomocą jednej instrukcji, nie trzeba wprowadzać każdej zmiany osobną instrukcją UPDATE.

Instrukcja MERGE InstrukcjaMERGE umożliwia scalenie danych z dwóch tabel, czyli np. zamianę części danych w jednej tabeli na dane z innej tabeli. Przykład: zbieranie opłat za gaz. W tabeligazownia zapisane są stany liczników z danego miasta. Inkasent zbiera dane na temat stanów liczników od klientów z jednego rejonu (dane te są zapisane w tabeliinkasent_1). Następnie trzeba uaktualnić stany liczników w głównej tabeli Gazownia na podstawie danych w tabeliinkasent_1. Stosując MERGE można to zrobić za pomocą jednej instrukcji, nie trzeba wprowadzać każdej zmiany osobną instrukcją UPDATE. MERGE INTO Gazownia g USING Inkasent_1 i ON(g.nr_klienta=i.nr_klienta) WHEN MATCHED THEN UPDATE SET g.stan_licznika=i.stan_licznika; MERGE INTO Gazownia g USING Inkasent_1 i ON(g.nr_klienta=i.nr_klienta) WHEN MATCHED THEN UPDATE SET g.stan_licznika=i.stan_licznika; W klauzulimerge INTO podajemy nazwę tabeli, w której mamy zmienić dane (czyli tabelę docelową, tu:gazownia). PoUSING: podajemy tabelę (widok lub podzapytanie), z której chcemy pobrać dane do zmiany (czyli tabelę źródłową, tu: Inkasent_1). Warunek poon określa, jak mają być dopasowane wiersze w obu tabelach, czyli na podstawie którego wiersza w tabeliinkasent_1 ma zostać zaktualizowany wiersz w tabeligazownia. WHEN MATCHED THEN UPDATE określa, co ma zostać wykonane dla wierszy tabeli docelowej spełniających warunek z klauzuli ON. Przykład: zbieranie danych o wynikach wyborów. W tabeliwyniki zapisane są liczby głosów oddanych na poszczególne komitety wyborcze w kraju. Dane z komisji są zapisane w tabelikomisja_nr_1, należy zaktualizować dane w tabeli Wyniki na podstawie danych z komisji, jeżeli któryś z komitetów wyborczych nie był jeszcze uwzględniony w tabeli z wynikami, należy go do niej dodać. MERGE INTO Wyniki w USING Komisja_nr_1 k ON(w.nr_komitetu=k.nr_komitetu) WHEN MATCHED THEN UPDATE SET w.liczba_głosów=w.liczba_głosów+ k.liczba_głosów WHEN NOT MATCHED THEN INSERT (w.nr_komitetu, w.liczba_głosów) VALUES(k.nr_komitetu, k.liczba_głosów); MERGE INTO Wyniki w USING Komisja_nr_1 k ON(w.nr_komitetu=k.nr_komitetu) WHEN MATCHED THEN UPDATE SET w.liczba_głosów=w.liczba_głosów+ k.liczba_głosów WHEN NOT MATCHED THEN INSERT (w.nr_komitetu, w.liczba_głosów) VALUES(k.nr_komitetu, k.liczba_głosów); W klauzulimerge INTO podajemy nazwę tabeli, w której mamy zmienić dane (czyli tabelę docelową, tu:wyniki). PoUSING: podajemy tabelę, z której chcemy pobrać dane do zmiany (czyli tabelę źródłową, tu:komisja_nr_1). ON określa, jak mają być dopasowane wiersze w obu tabelach. WHEN MATCHED THEN UPDATE określa, co ma zostać wykonane dla wierszy tabeli docelowej spełniających warunek z klauzuli ON. WHEN NOT MATCHED THEN INSERT określa czynność, która ma nastąpić gdy warunek ON nie jest spełniony, czyli wstawienie nowych wierszy.

Widoki w Oracle Widok (inaczej perspektywa) umożliwia zapisanie kryteriów tworzących zapytanie a następnie odwołanie się do tego zapytania w dowolnej chwili, bez konieczności ponownego wpisywania całej instrukcji. Widok definiujemy w oparciu o dowolne zapytanie SELECT. Tworzenie widoku CREATE [OR REPLACE] [FORCE] VIEW nazwa [(lista nazw kolumn)] AS SELECT... (dowolne zapytanie SELECT) [WITH READ ONLY] [WITH CHECK OPTION] CREATE VIEW osoby AS SELECT first_name, last_name, salary, hire_date FROM employees; Widok usuwamy za pomocą instrukcji DROP. DROP VIEW nazwa; CREATE VIEW osoby AS SELECT first_name, last_name, salary, hire_date FROM employees; Można dodatkowo określić nazwy używanych kolumn. Listę nazw kolumn należy podać koniecznie, gdy jakiekolwiek dwie kolumny w zapytaniu mają takie same nazwy lub znajduje się w nim nienazwane (poprzez AS) wyrażenie, np. CREATE VIEW osoby1(imie_nazw, zarobki, data) AS SELECT first_name last_name, salary, hire_date FROM employees; Widok jest obiektem bazy danych traktowanym w zapytaniach jako tablica. Do widoku odwołujemy się jak do tabeli, np. SELECT * FROM osoby;

Widok jest obiektem bazy danych traktowanym w zapytaniach jako tablica. Do widoku odwołujemy się jak do tabeli, np. SELECT * FROM osoby; Uwaga. Widok nie jest kopią zbioru danych. Jest zapisanym w bazie zapytaniem SELECT. Za każdym razem, gdy odwołujemy się do widoku, uruchamiane jest definiujące go zapytanie i zwracane są aktualne dane. Możliwe jest stosowanie w zapytaniach odwołujących się do widoku klauzul WHERE, GROUP BY, HAVING, ORDER BY, podzapytań, złączeń, funkcji, itp. Można także stosować zagnieżdżanie widoków. Widok jest obiektem bazy danych traktowanym w zapytaniach jako tablica. Do widoku odwołujemy się jak do tabeli, np. SELECT * FROM osoby; Uwaga. Widok nie jest kopią zbioru danych. Jest zapisanym w bazie zapytaniem SELECT. Za każdym razem, gdy odwołujemy się do widoku, uruchamiane jest definiujące go zapytanie i zwracane są aktualne dane. Możliwe jest stosowanie w zapytaniach odwołujących się do widoku klauzul WHERE, GROUP BY, HAVING, ORDER BY, podzapytań, złączeń, funkcji, itp. Można także stosować zagnieżdżanie widoków. Widok może być zdefiniowany z użyciem pewnych opcji. Opcja OR REPLACE spowoduje, że jeżeli widok o takiej nazwie istniał, to zostanie nadpisany przez właśnie utworzony. Opcja FORCE wymusza stworzenie widoku, nawet jeżeli w danym momencie jest niepoprawny, np. odwołuje się do tabeli lub widoku, który jeszcze nie został stworzony. Klauzula WITH READ ONLY widok zdefiniowany z tą opcją nie jest modyfikowalny. Widoki zastosowania Widoki zastosowania 1. Wygoda użytkowników. Ułatwienie pracy poprzez utworzenie widoków zawierających często używane lub skomplikowane zapytania. 2. Możliwość prezentowania danych w takiej postaci, która odpowiada danemu użytkownikowi (można w ten sposób zmienić nazwy kolumn na bardziej czytelne dla użytkownika, przeprowadzić na danych pewne wstępne operacje, np. dane liczbowe można zaokrąglić do wymaganej dokładności, usunąć zbędne spacje, itp.). 3. Ukrywanie efektów normalizacji poprzez tworzenie widoków zawierających złączenia tabel. 4. Ograniczenie dostępu do danych. Zamiast nadać użytkownikowi uprawnienia do tabeli, można nadać uprawnienia do korzystania z widoków zawierających tylko te dane, które są potrzebne danemu użytkownikowi, np. dla danej tabeli można stworzyć widok zawierający tylko wybrane kolumny (lub wiersze) i w ten sposób ukryć pozostałe dane przed użytkownikiem. 5. Zapewnienie danym bezpieczeństwa. Widoki mogą być użyte do stworzenia warstwy abstrakcji pomiędzy użytkownikiem a tabelami bazowymi, w oparciu o które zostały zbudowane.

Widoki modyfikowalne w Oracle W zapytaniach SELECT widoki funkcjonują jak tabele. Dla pewnych widoków, zwanych modyfikowalnymi, dopuszczalne jest przeprowadzanie operacji na danych: INSERT, UPDATE i DELETE. Poprzez widoki modyfikowalne mamy możliwość zmiany danych w tabelach bazowych. Aby to było możliwe, każdemu wierszowi widoku musi odpowiadać dokładnie jeden wiersz w tabeli. Warunki, jakie musi spełniać widok modyfikowalny: 1. dane pochodzą z jednej tabeli; 2. nie zawiera klauzuli DISTINCT; 3. nie zawiera GROUP BY; 4. nie zawiera funkcji agregacji (na liście SELECT); 5. nie zawiera skorelowanego podzapytania; 6. nie został stworzony z klauzulą WITH READ ONLY; 7. nie jest oparty o inny widok niemodyfikowalny. Widoki modyfikowalne w Oracle Aby poprzez widok można było modyfikować dane z użyciem operacji INSERT lub UPDATE, to oprócz podanych wcześniej warunków, widok nie może zawierać wyrażenia na liście SELECT; aby można było wykonać INSERT na widoku, to każda kolumna NOT NULL bez wartości domyślnej w tabeli, o którą oparty jest widok, musi być w tym widoku odwzorowana. Widoki modyfikowalne w Oracle Aby poprzez widok można było modyfikować dane z użyciem operacji INSERT lub UPDATE, to oprócz podanych wcześniej warunków, widok nie może zawierać wyrażenia na liście SELECT; aby można było wykonać INSERT na widoku, to każda kolumna NOT NULL bez wartości domyślnej w tabeli, o którą oparty jest widok, musi być w tym widoku odwzorowana. Uwaga. Jeżeli wykonujemy operację INSERT na widoku modyfikowalnym, to do tych kolumn, które nie są wymienione w widoku, zostaną wpisane ich wartości domyślne (o ile są zdefiniowane), NULL w przeciwnym przypadku. Widoki modyfikowalne w Oracle Aby poprzez widok można było modyfikować dane z użyciem operacji INSERT lub UPDATE, to oprócz podanych wcześniej warunków, widok nie może zawierać wyrażenia na liście SELECT; aby można było wykonać INSERT na widoku, to każda kolumna NOT NULL bez wartości domyślnej w tabeli, o którą oparty jest widok, musi być w tym widoku odwzorowana. Uwaga. Jeżeli wykonujemy operację INSERT na widoku modyfikowalnym, to do tych kolumn, które nie są wymienione w widoku, zostaną wpisane ich wartości domyślne (o ile są zdefiniowane), NULL w przeciwnym przypadku. Przykład widoku modyfikowalnego: CREATE VIEW programisci AS SELECT employee_id, first_name, last_name, email, hire_date, job_id, salary FROM employees WHERE job_id= IT_PROG ;

Widoki modyfikowalne z klauzula WITH CHECK OPTION Widoki modyfikowalne z klauzula WITH CHECK OPTION Jeżeli widok modyfikowalny został utworzony z klauzulą CHECK, to nie można dodać ani zmienić danych w tym widoku w taki sposób, że dane te nie będą już w tym widoku widoczne. Jeżeli widok modyfikowalny został utworzony z klauzulą CHECK, to nie można dodać ani zmienić danych w tym widoku w taki sposób, że dane te nie będą już w tym widoku widoczne. Zdefiniujmy widokprogramisci z opcją CHECK. CREATE OR REPLACE VIEW programisci AS SELECT employee_id, first_name, last_name, email, hire_date, job_id, salary FROM employees WHERE job_id= IT_PROG WITH CHECK OPTION; Statusy VALID i INVALID widoków oraz innych obiektów bazy Poniższa instrukcja modyfikuje dane w widoku programiści, nie naruszając warunku z klauzuli WHERE: UPDATE programisci SET salary=salary*1.05; Poprawnie skompilowane obiekty bazy mają status VALID (właściwy). Każda zmianie obiektu (np. tabeli, widoku, procedury), jak np. usunięcie lub dodaniu pól do tabeli, usunięcie widoku, powoduje, że wszystkie obiekty zależne od tego obiektu, w tym widoki, ulegają dekompilacji. Otrzymują status INVALID (niewłaściwy).

Podstawowe typy danych w Oracle Tekstowe: VARCHAR2(size) : dane tekstowe zmiennej długości, maksymalna długość 4000 bytów. CHAR(size): dane tekstowe stałej długości, maksymalna długość 2000 bytów, jeżeli nie podamy, domyślnie 1. Liczbowe: NUMBER (p, s) : liczby stałoprzecinkowe, o precyzji p (oznacza ilość cyfr w całej liczbie) i skali s (ilość miejsc po przecinku). NUMBER(p): liczby całkowite, p z zakresu 1..38. NUMBER : liczba zmiennoprzecinkowa. Daty: DATE : data, zakres od 1.1.4712 pne, do 31.12.9999 ne, zawiera pola YEAR, MONTH, DAY, HOUR, MINUTE, SECOND. TIMESTAMP : data i godzina, z ułamkowymi częściami sekund, domyślnie z dokładnością do 6 miejsc po przecinku. Uwaga. Tworzenie stałych: za pomocądate 1998-12-25 (bez części odpowiadającej godzinie) lubto_date( 1998-12-25 17:30, YYYY-MM-DD HH24:MI )