ullman159 (2)

ullman159 (2)



5. JljZYK. BAZ DANYCH SQL

3.    listy atrybutów relacji R ujętej w nawiasy,

4.    słowa kluczowego VALUES,

5.    wyrażenia krotkowego, które jest ujętą w nawiasy listą wartości, po jednej wartości dla każdego atrybutu z listy z punktu (3).

A więc postać tej instrukcji ma następujący schemat:

INSERT INT^ R(AhA2,...,An) VAL-rJES (vj.....v„);

Nowa krotka relacji R ma wartości v. dla atrybutów A, przy / =1, 2,...» n. Jeśli lista atrybutów' instrukcji INSERT nie zawiera pewnych atrybutów relacji /?, to dla atrybutów pominiętych są wstawiane wartości domniemane. Wartości domniemane są omówione w p. 5.7.5. Najbardziej powszechną wartością domniemaną jest NULL, była już o tym mowa w p. 4.7.4, a wrócimy do tego tematu przy okazji omawiania SQL w podrozdziale 5.9. Na razie można traktować wartość nuli jako wartość tymczasow ą, gdy jeszcze nie jest znana wartość składowej.

PRZYKŁAD 5.27

Załóżmy, że do listy' gwiazd filmu Sokół Maltański należy dołączyć Sydncya Greenslrccta. W SQL wyraża się to jako następująca instrukcja:

1)    INSERT INTO GwiazdyW(tytułFilmu, rokFilmu,

na zwi skoGw i a zdy)

2)    VALUES ('Sokół Maltański/, 1942, 'Sydney

Greenstreet');

W wyniku wykonania tej instrukcji do relacji GwiazdyW zostanie dołączona krotka o trzech składowych, które są wymienione wr klauzuli VALUSS. Nie trzeba w tym przypadku dołączać składowych domniemanych, ponieważ wszystkie atrybuty relacji GwiazdyW zostały wymienione w klauzuli insert 1NTC. Wartości z w iersza 2) dokładnie pasują do listy atrybutów z wiersza 1), a zatem „Sokół Maltański" będzie w tej krotce wartością atrybutu tytuł Filmu itd.

Jeśli zdarza się tak jak w przykładzie 5.27, że lista atrybutów w klauzuli insert TN70 pokrywa się z listą atrybutów relacji, to w instrukcji INSERT można listę atrybutów pominąć. A więc w naszym przykładzie możemy instrukcję INSERT zapisać w skróconej postaci:

INSERT INTO GwiazdyW

VALUES ('Sokół Maltański', 1942, 'Sydney Greenstreet/ );

Jednakże, jeśli korzystamy z tego wariantu, to musimy pamiętać, jaki jest standardowy porządek atrybutów w relacji, i w tej samej kolejności podać wartości wstawiane do nowej krotki. W podrozdziale 5.7 poznamy sposób określania schematu relacji w SQL i przekonamy się, że obejmuje on określenie porządku atrybutów. Jeśli w instrukcji INSERT lista atrybutów jest pominięta, to wartości są przypisywane do atrybutów według kolejności ustalonej w definicji schematu. Jeśli ktoś nie pamięta kolejności standardowej, to lepiej aby korzystał z postaci klauzuli INSERT, w której umieszcza się listę atrybutów', i tam można je wymienić w dowolnym porządku.

Przedstawiona powyżej instrukcja INSERT ma prostą postać, która umożliwia dołączenie do relacji jednej krotki. Można jednak również w jednej instrukcji INSERT opisać szereg krotek, które mają zostać wstawione do relacji, a korzysta się w tym celu z podzapytań. Podzapytanie występuje wówczas zamiast klauzuli VALUES.

PRZYKŁAD 5.2$

Załóżmy, że do relacji:

Studio(nazwa, adres, prezC#) należy wstaw ić te studia filmowe, które występują w relacji:

Film(tytuł, rok, długość, czyKolor, nazwaStudia, producenrC#)

ale nie występują w relacji Studio. Ponieważ w takiej sytuacji nic ma możliwości określenia adresu studia ani jego prezesa, więc jako składowa tych atrybutów' do relacji Studio będziemy wstawiać wartości NULL. Sposób zapisu w SQL takiego wstawiania przedstawiono na rys. 5.12.

1)    INSERT INTO Studio(nazwa)

2)    SELECT DISTINCT nazwaStudia

3)    EROM Film

4)    WHERE nazwaStudia NOT IN

5)    (SELECT nazwa

6)    FROK Studio);

RYSUNEK 5.12 Dołączanie nowych studiów

Tak samo jak większość zagnieżdżonych instrukcji SQL, także i instrukcję przedstaw ioną na rys. 5.12 najłatwiej jest analizować w kierunku od środka na zewnątrz. W wierszach 5) i 6) następuje wygenerowanie nazw studiów z relacji Studio. W wierszu 4) sprawdza się, że żadna z tych nazw nie pokrywa się z daną nazwą z. relacji Fi lm.


Wyszukiwarka

Podobne podstrony:
ullman146 (2) 5. JĘZYK BAZ DANYCH SQL zmienną krotkową i kropką. A więc zmienna krotkowa jest inną n
70987 ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrz
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrzec, że
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman176 (2) 5. jęZYK. BAZ DANYCH SQL Złączenie naturalne w języku $QL2 ma dokładnie takie same wła
ullman165 (2) 5. JEŻYK BAZ DANYCH SOL Teraz deklarując schemat relacji Film, możemy /.definiować atr
53669 ullman151 (2) 308 5. JEŻYK BAZ DANYCH SQL T5.3.2. Warunki obejmujące relacje W języku SQL
73749 ullman167 (2) 5. JĘZYK MA7. DANYCH SQL d) Schemat relacji Rezultat. c) Stosowną definicję dzie
69806 ullman184 (2) 374    5 JI-ZYK BAZ DANYCH SQL Ćwiczenie 5.10.2. W ćwiczeniu 4.4.
ullman140 (2) 286 $. jąZYK BAZ DANYCH SQL PRZYKŁAD 5.3 Poniższy przykład dotyczy lego samego zapytan

więcej podobnych podstron