Basiques du langage
Créer une nouvelle table
On peut créer une nouvelle table avec l'instruction CREATE TABLE, en spécifiant le nom de la table, suivi du nom de toutes les colonnes et de leur type :
CREATE TABLE weather (
city varchar(80),
temp_lo integer,
temp_hi integer,
prcp real,
observed_on date
);TIP
Toutes les instructions SQL doivent se terminer par ; pour être exécutées.
Remplir une table
L'instruction INSERT est utilisée pour remplir une table avec des lignes. Les constantes qui ne sont pas des valeurs numériques simples doivent être entourées par des guillemets simples.
INSERT INTO weather
VALUES ('Paris', 21, 32, 0.25, '2020-07-22');Une syntaxe alternative permet de lister les colonnes dans un ordre différent si on le souhaite, et d'en omettre certaines :
INSERT INTO weather (observed_on, city, temp_hi, temp_lo)
VALUES ('2021-04-26', 'Lyon', 14, 8);On peut aussi utiliser COPY pour charger de grandes quantités de données depuis un fichier texte, avec les valeurs séparées par des tabulations :
COPY weather FROM '/home/user/weather.txt';Paris 21 32 0.25 2020-07-22
Lyon 8 14 \N 2021-04-26Interroger une table
Pour retrouver les données d'une table, on l'interroge avec l'instruction SELECT. L'instruction est divisée en liste de sélection (la partie qui liste les colonnes à retourner), une liste de tables (la partie qui liste les tables à partir desquelles les données seront retrouvées) et une qualification optionnelle (la partie qui spécifie les restrictions). Par exemple, pour retrouver toutes les lignes de la table weather :
SELECT city, temp_lo, temp_hi, prcp, observed_on FROM weather;
-- ou encore :
SELECT * FROM weather;TIP
* est un raccourci pour toutes les colonnes mais n'est pas recommandé en production car l'ajout d'une colonne dans la table peut modifier les résultats et nuire aux performances.
On peut aussi écrire des expressions dans la liste de sélection :
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, observed_on FROM weather;TIP
La clause AS est utilisée pour renommer la sortie d'une colonne.
Une requête peut être qualifiée en ajoutant une clause WHERE qui spécifie les lignes souhaitées. La clause WHERE contient une expression booléenne et seules les lignes pour lesquelles l'expression booléenne est vraie sont renvoyées. Les opérateurs booléens habituels AND, OR et NOT sont autorisés.
SELECT * FROM weather
WHERE city = 'Marseille' AND prcp > 0.0;L'instruction ORDER BY permet de recevoir les résultats d'une requête dans un ordre trié :
SELECT * FROM weather
ORDER BY city; -- tri alphabétique
SELECT * FROM weather
ORDER BY city, temp_lo; -- tri alphabétique puis numériqueOn peut également utiliser DISTINCT pour supprimer les lignes dupliquées du résultat d'une requête :
SELECT DISTINCT city
FROM weather;Mises à jour
On peut mettre à jour une ligne existante en utilisant l'instruction UPDATE :
UPDATE weather
SET temp_hi = temp_hi - 2, temp_lo = temp_lo - 2
WHERE observed_on > '2000-01-01';Suppressions
Les lignes peuvent être supprimées de la table avec l'instruction DELETE :
DELETE FROM weather WHERE city = 'Brest';TIP
Faire très attention aux instructions de la forme DELETE FROM table_name;. Sans une qualification, DELETE supprimera toutes les lignes de la table donnée, la laissant vide. Le système le fera sans demander de confirmation !
Pour supprimer une table on utilise l'instruction DROP TABLE :
DROP TABLE table_name;Commentaires
Pour rédiger un commentaire sur une seule ligne on emploie -- :
SELECT * FROM weather; -- commentaire sur une lignePour des commentaires sur plusieurs lignes, on utilise /* et */ :
/* ceci est un commentaire
sur plusieurs lignes */
SELECT * FROM weather;