# TypeQL

TypeQL is the declarative, strongly-typed, and intuitive query language used by TypeDB.

This section aims to develop a deeper, intuitive understanding of TypeQL. It provides an overview of the language - focusing on explaining the core concepts and leaving the details to the [TypeQL reference](../../typeql-reference/index.md). The relevant sections of the reference are linked at the end of each page.

[Entities, Relations, Attributes](entities-relations-attributes/index.md)

A gentle introduction to the PERA data model - Entities, relations, attributes and what it means to "own" attributes and "play" roles in relations.

[Constraining Data](constraining-data/index.md)

Covers advanced typing constraints available in TypeQL: cardinality & restrictions on attribute values.

[Schema & Data](schema-data/index.md)

A schema is the blueprint of a database. How does TypeDB ensure the data conforms to it?

[Query Variables and Patterns](query-variables-patterns/index.md)

Builds up the syntax and semantics of the TypeQL language - from constraints & variables to patterns.

[Query Clauses & Pipelining](query-clauses/index.md)

Shows how various TypeQL clauses can be chained to form complex query & data modification pipelines.

[Queries as Functions](queries-as-functions/index.md)

TypeQL functions bring the familiar abstraction from programming languages to databases.

[Advanced: Invalid Patterns](invalid-patterns/index.md)

A deeper look at invalid patterns involving disjoint variable reuse

[Glossary](glossary/index.md)

Short definitions of terms used throughout the guide, with links to the section which introduces them.

[Horizontal Scaling](../typedb/horizontal-scaling/index.md) [Entities, Relations, Attributes](entities-relations-attributes/index.md)

[Edit on GitHub](https://github.com/typedb/typedb-docs/edit/3.x-development/core-concepts/modules/ROOT/pages/typeql/index.adoc) Edit this page on GitHub.