Kihagyás

XQuery

  • SQL-hez hasonlító lekérdezőnyelv
    • XPath kifejezéseket használ
  • Ugyanúgy tételek listája adatmotellt használ
  • XQuery egy funkcionális nyelv
  • Bárhol, ahol kifejezés szerepel, ott XQuery kifejezés is lehet helyette
    • Ugye SQL esetén nem mindenhol voltak az alkérdések használhatók (for a reason tho)
  • Előfordulhatnak listák listája
    • Ezeket a rendszer flat-eli

FLWR kifejezés (flower)

  1. Egy vagy több for és/vagy let záradék
  2. Opcionálisan utána egy where záradék
  3. Végül egy return záradék

  4. Minden FLWR for egy ciklust generál

    • A let a cikluson belüli hozzárendelést adja meg
  5. Ha van where, azt a ciklus minden iterációján ki kell értékelni
  6. Amikre a where-ben megadott feltétel telejsül, azokat a return a végeredményhez fűzi

For

  • for <változó> in <kifejezés>
  • Változót $ karakterrel kezdünk
  • A változó minden iterációban az aktív sorral egyenlő
  • Minden megadott tételen egyszer iterál
  • A nem nyers szövegek (értékek) {} zárójeleken belül kell megadni
  • Tagek vagy idézőjelek nélküli stringet nem adhat vissza a rendszer
    • for whatever reason ig
for $sor in /kocsmák/sör/@név return <sörNév>{$sor}</sörNév>

Let

let $d := document("kocsmák.xml")
let $sor := $d/kocsmák/sör/@név
return
    <sörNév>{$sor}</sörNév>

Itt az eredmény egyetlen <sörNév> tag lesz benne az összes sörnévvel...

Order By

  • return elé opcionálisan
    • opcionálisan ascending vagy descending megadható

Feltételek

  • Létezés megkövetelése egyszerűen extra feltétel nélkül
    • pl.: kocsmák/kocsma[@név]
      • Olyan kocsmák lesznek, amiknek van nevük
  • Szigorú összehasonlítások 2 karakteresek
    • eq, ne,le, ge, ge, gt
  • Ha az elem hozzátartozó értéke atomi, az egy másik értékkel összehasonlítható

Logikai műveletek

  • \(E_1 and E_2\), \(E_1 or E_2\), \(not(E)\) minden kifejezésre használható
    • Remember, everything can be xquery, so it has to work
    • not(3 eq 5 or 0) = TRUE
  • true() és false() paraméter nélküli függvények (😳), a TRUE és FALSE értéket adják vissaz
  • if (A) then B else C létezik
  • some $x in R satisfies B és every $x in R satisfies B
    • régi jó ALL és ANY módjára
  • dokumentum sorrend ellenőrizhető >> és <<-el
    • $d/kocsmák/sör[@név="Bud"] << $d/kocsmák/sör[@név="Miller"]
      • Akkor igaz, ha a Bud előbb szerepelt, mint a Miller (why would you ever?...)
  • Aggregátorok is vannak
    • count(), max(), min(), avg()

Összekapcsolások

Azt hitted, mi??! Lehet, ha te magad összekapcsolod feltételként lmao. such a useless thing