# Overview
A declarative programming language... #flashcard
requires the user to describe (i.e., declare) the end result desired, but does not give the user the ability to dictate how the result is achieved. The declarative language passes the instructions to an optimizer that can decide how to reach the result, such as what indexes to use and in what order to execute operations.
<!--ID: 1751507777704-->
# Key Considerations
# Pros #flashcard
- Provides a concise and simpler language that hides the implementation details of how a final result is achieved. Trust me, you should be happy you're not worrying about how SQL's database query engine works.
- This abstraction also allows for modifications directly on a database or query engine that will then benefit all queries, rather than tuning the specific queries themselves.
- Reliance on the optimization engine allows for a more direct path to [[Concurrency and Parallelism]] in processing, since the user is not defining the actual algorithm used to determine results
<!--ID: 1751507777708-->
# Cons
# Use Cases
# Related Topics
- [[Imperative]]