> For the complete documentation index, see [llms.txt](https://fanny.gitbook.io/memo-cda/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fanny.gitbook.io/memo-cda/vocabulaire-cda/sql-postgresql.md).

# SQL / PostgreSQL

### Commandes terminal `psql`

| Commande                 | Utilité                                   |
| ------------------------ | ----------------------------------------- |
| `psql -U user -d dbname` | Se connecter à une base                   |
| `\l`                     | Lister les bases de données               |
| `\c dbname`              | Se connecter à une base                   |
| `\dt`                    | Lister les tables                         |
| `\d nom_table`           | Décrire une table (colonnes, types, clés) |
| `\du`                    | Lister les utilisateurs/rôles             |
| `\q`                     | Quitter psql                              |

### Langage SQL

| Terme          | Définition                        |
| -------------- | --------------------------------- |
| `SELECT`       | Sélectionner des données          |
| `FROM`         | Préciser la table source          |
| `WHERE`        | Filtrer les lignes                |
| `INSERT INTO`  | Ajouter une ligne                 |
| `UPDATE`       | Modifier des données existantes   |
| `DELETE`       | Supprimer des lignes              |
| `CREATE TABLE` | Créer une table                   |
| `ALTER TABLE`  | Modifier la structure d'une table |
| `DROP TABLE`   | Supprimer une table               |

### Clés & contraintes

| Terme           | Définition                                                                |
| --------------- | ------------------------------------------------------------------------- |
| **PRIMARY KEY** | Identifiant unique de chaque ligne                                        |
| **FOREIGN KEY** | Clé qui référence la clé primaire d'une autre table (lien entre tables)   |
| **UNIQUE**      | Impose une valeur non dupliquée                                           |
| **NOT NULL**    | Interdit les valeurs vides                                                |
| **DEFAULT**     | Valeur automatique si rien n'est fourni                                   |
| **CHECK**       | Condition que la valeur doit respecter                                    |
| **SERIAL**      | Entier auto-incrémenté (PostgreSQL)                                       |
| **Contrainte**  | Règle imposée sur une colonne/table pour garantir l'intégrité des données |

### Relations & jointures

| Terme                         | Définition                                                              |
| ----------------------------- | ----------------------------------------------------------------------- |
| **INNER JOIN**                | Ne garde que les lignes correspondant dans les deux tables              |
| **LEFT JOIN**                 | Garde toutes les lignes de la table de gauche + correspondances         |
| **RIGHT JOIN**                | Garde toutes les lignes de la table de droite + correspondances         |
| **FULL JOIN**                 | Garde toutes les lignes des deux tables                                 |
| **One-to-many**               | Une ligne liée à plusieurs autres (ex: un client → plusieurs commandes) |
| **Many-to-many**              | Plusieurs liées à plusieurs, via une table de jointure                  |
| **Table de jointure (pivot)** | Table intermédiaire pour gérer le many-to-many                          |

### Divers

| Terme                 | Définition                                        |
| --------------------- | ------------------------------------------------- |
| **GROUP BY**          | Regrouper des lignes pour agréger (COUNT, SUM...) |
| **HAVING**            | Filtrer après un GROUP BY                         |
| **ORDER BY**          | Trier les résultats                               |
| **DISTINCT**          | Supprimer les doublons                            |
| **Index**             | Structure pour accélérer les recherches           |
| **Transaction**       | Ensemble d'opérations exécutées "tout ou rien"    |
| **COMMIT / ROLLBACK** | Valider / annuler une transaction                 |
| **Schéma**            | Organisation logique des tables dans une base     |

***

<p align="center"><a href="/pages/1wilKCVQ9npFi94g0HUD"><img src="https://img.shields.io/badge/-PR%C3%89C%C3%89DENT-2E86AB?style=for-the-badge" alt="Précédent"></a> <a href="/pages/13uxSKv7XYwnXeh3NnUr"><img src="https://img.shields.io/badge/-SUIVANT-2E86AB?style=for-the-badge" alt="Suivant"></a></p>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://fanny.gitbook.io/memo-cda/vocabulaire-cda/sql-postgresql.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
