You can access multiple databases in a single query:
<syntaxhighlight pre lang="'xquery"'>
for $i in 1 to 100
return db:get('books' || $i)//book/title
</syntaxhighlightpre>
If the {{Option|DEFAULTDB}} option is turned on, the path argument of the {{Code|fn:doc}} or {{Code|fn:collection}} functions will first be resolved against the globally opened database.
The {{Code|fn:document-uri}} and {{Code|fn:base-uri}} functions return URIs that can also be reused as arguments for the {{Code|fn:doc}} and {{Code|fn:collection}} functions. As a result, the following example query always returns {{Code|true}}:
<syntaxhighlight pre lang="'xquery"'>
every $c in collection('anyDB')
satisfies doc-available(document-uri($c))
</syntaxhighlightpre>
If the argument of {{Code|fn:doc}} or {{Code|fn:collection}} does not start with a valid database name, or if the addressed database does not exist, the string is interpreted as URI reference, and the documents found at this location will be returned. Examples:
If the API you use does not support binary output (which is e.g. the case for various [[Clients|Client]] language bindings), you can convert your binary data to its string representation before returning it to the client:
<syntaxhighlight pre lang="'xquery"'>
string(db:get-binary('multimedia', 'sample.avi'))
</syntaxhighlightpre>
==XQuery Values==
With {{Function|Database|db:get-value}}, XQuery values can be retrieved. In the following example, we assume that an XQuery map {{Code|cities}} was stored in an {{Code|indexes}} database:
<syntaxhighlight pre lang="'xquery"'>
let $city-map := db:get-value('indexes', 'cities')
return $city-map?Chile
</syntaxhighlightpre>
=Update Resources=
You can also use functions from the [[Database Module]] to add, replace, or delete XML documents:
<syntaxhighlight pre lang="'xquery"'>
db:add('documents', '/path/to/xml/resources/')
</syntaxhighlightpre>
Function from other modules, such as the [[File Module]], can be utilized to filter the input. With the following code, all files that contain numbers in the filename are selected, and stored as XML. If an input file contains no well-formed XML, it is stored as binary resource, and the error message is stored as a string value:
<syntaxhighlight pre lang="'xquery"'>
let $db := 'documents'
let $root := '/path/to/resources/'
db:put-value($db, $err:description, $path || '.error')
}
</syntaxhighlightpre>
The error messages can e.g. be analyzed in a second step:
<syntaxhighlight pre lang="'xquery"'>
let $errors := db:get-value('documents')
for $filename in map:keys($errors)
where ends-with($filename, '.error')
return $filename || ': ' || $errors?($filename)
</syntaxhighlightpre>
=Export Database=
If a BaseX server is started, and if a database is created in its context at startup time, e.g., with the [[Command-Line Options|command-line option -c]] and a {{Command|CREATE DB}} call, BaseX clients can then access and update this database:
<syntaxhighlight pre lang="perl">
# Server
basexserver -c"SET mainmem on" -c"CREATE DB mainmem document.xml"
1876462
Query executed in 0.97 ms.
</syntaxhighlightpre>
Additional notes: