1
0
Fork 0
arangodb/Documentation/Books/AQL
Jan 99f176bed5 Feature/add search keyword (#6166)
* added SEARCH keyword

* fixes jslint errors

* add incompatibility notice

* remove VIEW keyword (does not work yet!!)

* add initial support for SEARCH keyword to optimizer rules

* replace FILTER with SEARCH keyword in tests

* removed VIEW keyword, make shell_server_aql tests pass again in single server

* cleanup

* handle SEARCH clause for views

* make SEARCH a non-keyword

* fixed an issue with duplicate variables

* fixed 3 tests

* fix SEARCH statement support for views

* minor refactoring

* fix integration tests

* optimize SEARCH conditions a bit more

* fix jslint error

* fixed wrong comments and typo in class name

* fix documentation

* adjust recovery tests to use SEARCH instead of FILTER

* fix another failing test
2018-08-18 20:22:58 +03:00
..
Advanced
Examples Feature/misc spelling corrections (#5164) 2018-07-13 13:06:20 +02:00
ExecutionAndPerformance make optimizer rule "patch-update-statements" fire for REPLACE too (#6181) 2018-08-17 08:45:40 +02:00
Extending Bug fix/more sparsung (#6177) 2018-08-17 08:47:45 +02:00
Functions Bug fix/more sparsung (#6177) 2018-08-17 08:47:45 +02:00
Fundamentals Feature/add search keyword (#6166) 2018-08-18 20:22:58 +03:00
Graphs
Invocation Feature/misc spelling corrections (#5164) 2018-07-13 13:06:20 +02:00
Operations
Tutorial Doc - Update tutorial on Traversal: figure shows Ned as father of Jon (#5990) 2018-07-26 23:53:19 +02:00
Views Feature/add search keyword (#6166) 2018-08-18 20:22:58 +03:00
styles Doc - Add example anchors (#5752) 2018-07-06 16:19:36 +02:00
CommonErrors.md Bug fix/more sparsung (#6177) 2018-08-17 08:47:45 +02:00
DataQueries.md
FOOTER.html
Operators.md
README.md Doc - single link per line (#5904) 2018-07-20 10:46:27 +02:00
SUMMARY.md Doc - New section for query profiler + fresh examples (#6070) 2018-08-08 10:51:09 +02:00
book.json

README.md

Introduction

The ArangoDB query language (AQL) can be used to retrieve and modify data that are stored in ArangoDB.

{% hint 'info' %} Want to learn AQL for the first time? Be sure to check out the Tutorial before you head off to the in-depth documentation! {% endhint %}

The general workflow when executing a query is as follows:

  • A client application ships an AQL query to the ArangoDB server. The query text contains everything ArangoDB needs to compile the result set
  • ArangoDB will parse the query, execute it and compile the results. If the query is invalid or cannot be executed, the server will return an error that the client can process and react to. If the query can be executed successfully, the server will return the query results (if any) to the client

AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be human-readable and therefore uses keywords from the English language. Another design goal of AQL was client independency, meaning that the language and syntax are the same for all clients, no matter what programming language the clients may use. Further design goals of AQL were the support of complex query patterns and the different data models ArangoDB offers.

In its purpose, AQL is similar to the Structured Query Language (SQL). AQL supports reading and modifying collection data, but it doesn't support data-definition operations such as creating and dropping databases, collections and indexes. It is a pure data manipulation language (DML), not a data definition language (DDL) or a data control language (DCL).

The syntax of AQL queries is different to SQL, even if some keywords overlap. Nevertheless, AQL should be easy to understand for anyone with an SQL background.

For some example queries, please refer to the chapters Data Queries, Usual query patterns and Tutorial.