# Update et delete

La **manipulation** de nos données suite à la logique business se fait par les 3 clauses : `insert`, `update`, `delete`. L'ensemble de ses commandes forme ce qu'on appelle le Data Manipulation Language (DML).

## Insertion

On ajoute des lignes à une table en précisant le nom de la table, les colonnes qu'on va adresser, ensuite les valeurs à utiliser pour la nouvelle ligne.

Par exemple :

```sql
insert into films (film_id, title, rental_rate)
values (45, "Gone with the wind", 5.99)
```

{% hint style="success" %}
Pour simplifier nos insertions, on peut omettre les valeurs suivantes :

* pour les colonnes où `null` est autorisé
* pour les colonnes où un `default` est précisé
* pour les colonnes remplies automatiquement par un trigger
  {% endhint %}

## Mise à jour

On peut mettre à jour une ou plusieurs lignes d'une table avec la commande `update` :

```sql
update cours 
set prix = 3000
where cours_id = "Angular";
```

La clause `set` est une liste d’affectations, séparés par des virgules :

```sql
update table
set x = 1, y = 2, z = 3
where id = 'some id';
```

La clause `where` est identique à celle de la phrase `select`, et peut contenir des sous-requêtes.

{% hint style="warning" %}
Attention à bien préciser votre clause `where` ! Sinon, vous risquez de modifier par erreur plus de lignes que prévu !
{% endhint %}

## Suppression

On supprime les lignes avec la commande `delete` :

```sql
delete from cours 
where cours_id = "Angular";
```

{% hint style="warning" %}
Attention à bien spécifier votre clause `where` ! Sinon, vous risquez de supprimer par erreur plus de lignes que prévu !
{% endhint %}
