Indstilling af SQL/XML skov parameter til sand, vi får en XML-struktur som vist nedenfor. Hver række i BRUGERE tabellen er knyttet til en
|
U01
<; NAME> Tom Jones
B
|
U02
Mary Doe
A
...
<;/BRUGERE>
I tilfælde du er nysgerrig efter, hvorfor denne kortlægning mulighed er opkaldt SQL/XML skov, der er ikke en enkelt root element i dette scenario, det er det, vi kalder en XML skov og dermed navnet på denne mulighed. I slutningen der Er? t meget af en forskel mellem både kortlægning tilgange, en er ikke bedre end den anden. Det er mere et spørgsmål om smag end noget andet. Som XML-struktur er forskellige afhængigt af den kortlægning, vil det påvirke den måde, vores forespørgsler se ud. Overvej et simpelt eksempel, få en beskrivelse af elementet med itemno 1004,
U01
Tom Jones <;/NAME>
B
U02
Mary Doe
A
...
vælge BESKRIVELSEForudsættes SQL/XML skoven sat til true dette bliver,
fra ITEMS
hvor ITEMNO ='1004 '
for $ element i indsamling ( "poster")/ITEMSIndstil til falske vi er nødt til at skrive til forespørgslen således notere yderligere række skridt,
hvor $ post/ITEMNO = "1004"
return $ post/BESKRIVELSE
for $ element i indsamling ( "poster")/ITEMS/rækkeDataDirect XQuery understøtter både tilknytninger, standard for SQL/XML skov parameter er sandt. Alle fremtidige eksempler og brug tilfælde i denne serie vil påtage sig denne standard. Mapping NULL værdier SQL NULL værdier er kortlagt som fraværende elementer. Ligesom der er forskel på en tom streng og NULL i SQL, der er en forskel i XML mellem et tomt element og en fraværende element.
hvor $ post/ITEMNO = "1004"
return $ post/BESKRIVELSE
Lad Tom Jones? rating er NULL, og Mary Doe? s rating det den tomme streng. XML-repræsentation af vores brugere tabel vil være som følger,
Henter alle brugere, der har en rating i SQL,
U01
Tom Jones
U02
Mary Doe
...
vælge * fra brugereVi? ll forklare det mere indgående i en senere post, men XQuery variant er som følger,
, hvis rating er IKKE NULL
for $ bruger i indsamling ( " Brugere ")/USERSEn anden måde at repræsentere en NULL-værdi er ved hjælp af XML Schema xsi: nul mekanisme. Den BRUGERE tabellen ovenfor skitserede vil være struktureret således,
hvor $ bruger/rating
return $ bruger
Alle brugere med et bedømmelse er hentet som følger,
U01
Tom Jones
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" />
U02
Mary Doe
...
for $ bruger i indsamling ( "brugere")/USERSFor mig er det xsi: nul tilgang ser langt mere detaljeret. DataDirect XQuery repræsenterer SQL NULL gennem en fraværende element. Adgang til relationelle data via XQuery Vi Haven? t endnu forklaret i detaljer, hvordan man kan henvises til efterfølgende forespørgsel, en SQL tabellen i din XQuery. Som du har regnet ud allerede fra det foregående eksempler, vi reference en SQL tabel gennem indsamling () funktion, der passerer som argument SQL tabellen navn. Bemærk, at dette er en konvention specifikke for DataDirect XQuery . Som XQuery virker ikke? T tilbyde en standard måde at få adgang til din relationel database, andre produkter kunne have valgt en anden fremgangsmåde. Næste svarer SQL og XQuery forespørgsler,
hvor $ bruger/rating/@ xsi: nul = "true"
return $ bruger
vælge * fra brugereHvis du ønsker at søge en tabel i et særligt skema,
for $ u i indsamling ( "brugere")/USERS
return $ u
select * fra MYAUCTION.USERSOg selvfølgelig lignende, hvis du ønsker at søge en tabel i et bestemt katalog. XQuery Data Model I dette indlæg vi lærte at repræsentere relationelle data i XML, vi? ll bruge denne XML-repræsentation i hele vores efterfølgende stillinger i denne serie.
for $ u i indsamling ( "MYAUCTION.USERS")/USERS
return $ u
Men selvfølgelig, at der er meget mere at sige om XQuery Data Model. Men dette er uden for rækkevidde for i dag, vi? Ll pege på nogle af de vigtigste karakteristika i et senere indlæg i denne serie. Bemærk også, at der er forskellige gode bøger dækker emnet, eller tjek de XQuery 1.0 og XPath 2.0 Data Model . Næste vi? ll have en tættere undersøge slutter . Tech Tags: XQuery SQL