DB2 XML w relacyjnych bazach danych wstęp do wprowadzenia. Kuba Pochrybniak



Podobne dokumenty
XML w bazie danych IBM DB2

Hurtownia Świętego Mikołaja projekt bazy danych

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

Przykładowy dokument XML

Wykład 05 Bazy danych

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

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

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

Zaawansowane bazy danych i hurtownie danych semestr I

Wykład 5. SQL praca z tabelami 2

BAZA DANYCH SIECI HOTELI

Język SQL, zajęcia nr 1

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

Wykład 8. SQL praca z tabelami 5

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

SQL :: Data Definition Language

Przykładowy dokument XML

Bazy danych i usługi sieciowe

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

PODSTAWY BAZ DANYCH 13. PL/SQL

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie. 6 października 2016

SQL 4 Structured Query Lenguage

Bazy Danych i Usługi Sieciowe

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Cechy języka XQUERY. o na wejściu dokument lub fragment względnie kolekcja dokumentów lub fragmentów o na wyjściu dokument lub fragment.

Oracle PL/SQL. Paweł Rajba.

Bazy danych. Polecenia SQL

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

Oracle PL/SQL. Paweł Rajba.

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

Relacyjne bazy danych. Podstawy SQL

ACESS- zadania z wykorzystaniem poleceń SQL

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Wstęp do relacyjnych baz danych. Jan Bartoszek

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

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Standard SQL/XML. Wprowadzenie do XQuery

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Grupowanie i funkcje agregujące

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

Relacyjne bazy danych. Podstawy SQL

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

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

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

Projektowanie systemów baz danych

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

XML extensible Markup Language 7

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

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Struktura drzewa w MySQL. Michał Tyszczenko

SQL (ang. Structured Query Language)

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

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

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

Paweł Rajba

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

Bloki anonimowe w PL/SQL

Bazy danych SQL Server 2005

Procedury i funkcje składowane

Operacja PIVOT w języku SQL w środowisku Oracle

Imię i Nazwisko Data Ocena. Laboratorium 7

2 Natywne bazy XML Języki zapytań XQuery Źródła 14

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

Cele. Definiowanie wyzwalaczy

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych dokumentów XML wykład 3 modyfikacja dokumentów

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

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

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

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

Komunikacja z bazą danych psql

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Widok Connections po utworzeniu połączenia. Obszar roboczy

SIECI KOMPUTEROWE I BAZY DANYCH

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Nowe technologie baz danych

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

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

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

Bazy danych 10. SQL Widoki

Obowiązuje od wersji

Obiektowe bazy danych

Bazy danych. dr Radosław Matusik. radmat

Relacyjne bazy danych a XML

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Transkrypt:

DB2 XML w relacyjnych bazach danych wstęp do wprowadzenia Kuba Pochrybniak

osoba id="137" imie Helena /imie

osoba id="137" imie Helena /imie imie Jagienka /imie

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld."

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld." uwagi="bywa w weekendy"

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld." uwagi="bywa w weekendy" ul 20. Pułku Piechoty im. Dzieci Warszawy /ul nr-domu 2B/IV /nr-domu

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld." uwagi="bywa w weekendy" ul 20. Pułku Piechoty im. Dzieci Warszawy /ul nr-domu 2B/IV /nr-domu nr-mieszk 20 /nr-mieszk kod 04-352 /kod miejscowosc Warszawa /miejscowosc /adres

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld." uwagi="bywa w weekendy" ul 20. Pułku Piechoty im. Dzieci Warszawy /ul nr-domu 2B/IV /nr-domu nr-mieszk 20 /nr-mieszk kod 04-352 /kod miejscowosc Warszawa /miejscowosc /adres adres typ="koresp." ul. Banacha 2, p. 2170, Warszawa /adres

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld." uwagi="bywa w weekendy" ul 20. Pułku Piechoty im. Dzieci Warszawy /ul nr-domu 2B/IV /nr-domu nr-mieszk 20 /nr-mieszk kod 04-352 /kod miejscowosc Warszawa /miejscowosc /adres adres typ="koresp." ul. Banacha 2, p. 2170, Warszawa /adres uwagi autor="zdzichu K." data="2006-07-02" Systematycznie się spóźnia. /uwagi uwagi autor="szef" data="2008-11-04" Zastanowić się nad premią za spóźnienia. /uwagi

osoba id="137" imie Helena /imie imie Jagienka /imie imie Scholastyka /imie imie-uzywane Jagienka /imie-uzywane nazwisko data-od="2001-07-13" Jackovsky /nazwisko nazwisko data-od="1997-03-16" data-do="2001-07-12" Ritter-Dücks /nazwisko nazwisko typ="panieńskie" data-do="1997-03-15" Ritter /nazwisko ksywa Czarna Mamba /ksywa plec K /plec ojciec idref="42"/ matka idref="24"/ adres typ="zameld." uwagi="bywa w weekendy" ul 20. Pułku Piechoty im. Dzieci Warszawy /ul nr-domu 2B/IV /nr-domu nr-mieszk 20 /nr-mieszk kod 04-352 /kod miejscowosc Warszawa /miejscowosc /adres adres typ="koresp." ul. Banacha 2, p. 2170, Warszawa /adres uwagi autor="zdzichu K." data="2006-07-02" Systematycznie się spóźnia. /uwagi uwagi autor="szef" data="2008-11-04" Zastanowić się nad premią za spóźnienia. /uwagi /osoba

Dlaczego XML, a nie relacyjna?

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości)

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra)

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra) kontrola schematów

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra) kontrola schematów opcjonalność (paczki b. różnych rozmiarów)

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra) kontrola schematów opcjonalność (paczki b. różnych rozmiarów) dynamika

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra) kontrola schematów opcjonalność (paczki b. różnych rozmiarów) dynamika rzeczy różnych typów w jednej kolumnie

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra) kontrola schematów opcjonalność (paczki b. różnych rozmiarów) dynamika rzeczy różnych typów w jednej kolumnie XML na wyjściu za darmo

Dlaczego XML, a nie relacyjna? intuicyjność (blisko rzeczywistości) elastyczność skomplikowane struktury (dekompozycja masakra) kontrola schematów opcjonalność (paczki b. różnych rozmiarów) dynamika rzeczy różnych typów w jednej kolumnie XML na wyjściu za darmo XSLT

Dlaczego aż BD?

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność prostota, czytelność

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność prostota, czytelność select distinct pracownik[not(preceding::pracownik/@grupa = @grupa)]/@grupa

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność prostota, czytelność select distinct pracownik[not(preceding::pracownik/@grupa = @grupa)]/@grupa BD vs. procesory XSLT/XPath/XQuery

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność prostota, czytelność select distinct pracownik[not(preceding::pracownik/@grupa = @grupa)]/@grupa BD vs. procesory XSLT/XPath/XQuery szybkość

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność prostota, czytelność select distinct pracownik[not(preceding::pracownik/@grupa = @grupa)]/@grupa BD vs. procesory XSLT/XPath/XQuery szybkość pamięć

Dlaczego aż BD? XQuery, SQL/XML vs. XSLT/XPath deklaratywność prostota, czytelność select distinct pracownik[not(preceding::pracownik/@grupa = @grupa)]/@grupa BD vs. procesory XSLT/XPath/XQuery szybkość pamięć łączenie ze strukturami relacyjnymi

Dlaczego często jednak nie?

Dlaczego często jednak nie? przyzwyczajenia, umiejętności

Dlaczego często jednak nie? przyzwyczajenia, umiejętności skomplikowane zapytania

Dlaczego często jednak nie? przyzwyczajenia, umiejętności skomplikowane zapytania mniejsza szybkość

XQuery FLWOR XQUERY for $x in db2-fn:xmlcolumn("osoby.dane")[/osoba/@id < 152] let $id := string($x/osoba/@id) let $imie := if (exists($x/osoba/imie-uzywane)) then ($x/osoba/imie-uzywane) else ($x/osoba/imie) where $x/osoba/@id mod 2 = 1 order by $x/osoba/nazwisko[1] return osoba id="{$id}" imie="{$imie}" nazwisko="{$x/osoba/nazwisko[1]}"/

XQuery przykład 2. XQUERY for $x in distinct-values (db2-fn:sqlquery ("SELECT dane FROM osoby WHERE id < 152") /osoba/nazwisko) return $x

SQL/XML

SQL/XML zwykły SQL + trzy funkcje

SQL/XML zwykły SQL + trzy funkcje xmlexists

SQL/XML zwykły SQL + trzy funkcje xmlexists xmlquery

SQL/XML zwykły SQL + trzy funkcje xmlexists xmlquery xmltable

XMLExists SELECT * FROM osoby WHERE XMLEXISTS( $x/osoba[nazwisko = "Chrząst-Wacht"] PASSING dane AS "x")

XMLExists SELECT * FROM osoby WHERE XMLEXISTS( $x/osoba[nazwisko = "Chrząst-Wacht"] PASSING dane AS "x") SELECT * FROM osoby WHERE XMLEXISTS( $DANE/osoba[nazwisko = "Chrząst-Wacht"] )

XMLQuery SELECT XMLQUERY( $DANE/osoba/tel ) FROM osoby WHERE id = 42

XMLQuery SELECT XMLQUERY( $DANE/osoba/tel ) FROM osoby WHERE id = 42 SELECT XMLQUERY( $DANE/osoba/tel[1] ) FROM osoby WHERE id = 42

Pełne XQuery w SQL SELECT XMLQUERY( for $t in $DANE/osoba/tel where $t/@typ = "k" order by $t/text() return $t ) FROM osoby WHERE id = 42

XMLTable zwykłe tabele z danych XML SELECT o.imie, o.nazwisko, o.adres FROM dane d, XMLTABLE( $DANE/osoba COLUMNS imie VARCHAR(20) PATH imie[1], nazwisko VARCHAR(30) PATH nazwisko[1], adres XML BY REF PATH adres )

Wyciąganie XML ze zwykłych pól SELECT XMLELEMENT (NAME "osoba", XMLATTRIBUTES(id AS "id"), XMLELEMENT(NAME "imie", imie), XMLELEMENT(NAME "nazwisko", nazwisko) ) FROM osoby

Wyciąganie XML ze zwykłych pól SELECT XMLELEMENT (NAME "osoba", XMLATTRIBUTES(id AS "id"), XMLELEMENT(NAME "imie", imie), XMLELEMENT(NAME "nazwisko", nazwisko) ) FROM osoby XMLAGG XMLFOREST

Update

Update zmiana wartości węzła

Update zmiana wartości węzła kasowanie węzła

Update zmiana wartości węzła kasowanie węzła zmiana nazwy węzła

Update zmiana wartości węzła kasowanie węzła zmiana nazwy węzła zastępowanie węzła innym

Update zmiana wartości węzła kasowanie węzła zmiana nazwy węzła zastępowanie węzła innym dodawanie węzła

Update zmiana wartości węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do replace value of $new/osoba/@id with $ID return $new )

Update zmiana wartości węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do replace value of $new/osoba/@id with $ID return $new ) Update kasowanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do delete $new/osoba/adres[2] return $new )

Update zmiana nazwy węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do rename $new/osoba/adres[2] as "adresisko" return $new )

Update zmiana nazwy węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do rename $new/osoba/adres[2] as "adresisko" return $new ) Update zastępowanie węzła innym UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do replace $new/osoba/adres[2] with adres typ="letnisko" Tuchlin 153, Tuchlin /adres return $new )

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new )

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new ) Opcje:

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new ) Opcje: into

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new ) Opcje: into as last into

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new ) Opcje: into as last into as first into

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new ) Opcje: into as last into as first into after

Update dodawanie węzła UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do insert tel 55-44-000 /tel after $new/osoba/adres[last()] return $new ) Opcje: into as last into as first into after before

Update wiele rzeczy na raz UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify do replace $new/osoba/adres[2] with adres Peryferia Dzbądza /adres, do delete $new/osoba/uwagi return $new )

Update uwagi

Update uwagi zmieniane elementy muszą istnieć

Update uwagi zmieniane elementy muszą istnieć po zmianie poprawny XML

Update uwagi zmieniane elementy muszą istnieć po zmianie poprawny XML węzeł jednoznacznie

Update uwagi zmieniane elementy muszą istnieć po zmianie poprawny XML węzeł jednoznacznie wiele węzłów na raz tylko delete (lub z for)

Update wiele węzłów na raz UPDATE osoby SET dane = XMLQUERY( copy $new := $DANE modify for $u in $new/osoba/uwagi do replace value of $u with "uwagi wycofane" return $new )