Créé dans les années 70 puis normalisé au cours des années 80, le langage SQL est le principal langage utilisé pour la création et la manipulation des données d'une base de données relationnelle
-- Création d'une table 'utilisateur'
CREATE TABLE utilisateur
(
id INT PRIMARY KEY NOT NULL, -- identifiant des utilisateurs (clé primaire)
nom VARCHAR(100), -- le nom (chaine de 100 caractères maximum)
prenom VARCHAR(100), -- le prénom (chaine de 100 caractères maximum)
email VARCHAR(255), -- email (chaine de 255 caractères maximum)
date_naissance DATE, -- la date de naissance (type date)
pays VARCHAR(255), -- le pays (chaine de 255 caractères maximum)
ville VARCHAR(255), -- la ville (chaine de 255 caractères maximum)
code_postal VARCHAR(5), -- le cp (chaine de 5 caractères maximum)
nombre_achat INT -- nombre achats (nombre entier)
)
-- On remarque l'utilisation de PRIMARY KEY pour l'id
-- qui veut dire que l'id sera la "clé primaire" de la table
-- utilisateurs : c'est le champ qui identifie un enregistrement
-- la clé primaire est forcément unique (il ne peut pas y avoir
-- plusieurs utilisateurs qui auraient l'id 3 par exemple)
-- Ajout d'un champ 'adresse_rue' sur la table 'utilisateur'
ALTER TABLE utilisateur
ADD adresse_rue VARCHAR(255) -- chaine de 255 caractères maximum
-- Suppression du champ nombre_achat sur la table 'utilisateur'
ALTER TABLE utilisateur
DROP nombre_achat
-- Modification du champ 'code_postal' sur la table 'utilisateur'
ALTER TABLE utilisateur
MODIFY code_postal INT
-- Modification du nom du champ 'code_postal' sur la table 'utilisateur'
-- en 'cp'
ALTER TABLE utilisateur
CHANGE code_postal cp INT
-- Suppression de la table 'utilisateur'
DROP TABLE utilisateur
-- Et oui, c'est tout.
-- Insertion de 4 enregistrements dans la table 'client'
INSERT INTO client (prenom, nom, ville, age)
VALUES
('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24),
('Aimée', 'Hebert', 'Marigny-le-Châtel', 36),
('Marielle', 'Ribeiro', 'Maillères', 27),
('Hilaire', 'Savary', 'Conie-Molitard', 58);
-- Remarques :
-- Pour la requête INSERT INTO, on spécifie quelle table (client)
-- puis entre parenthèses les champs que l'on souhaite affecter
-- Ensuite on spécifie les valeurs à insérer (VALUES)
-- Chaque enregistrement est contenu dans des parenthèses et est
-- séparé des autres par une virgule
-- Les valeurs à insérer doivent être écrites dans l'ordre dans
-- lequel les champs ont été désignés !
-- On peut aussi n'insérer qu'une seule ligne (enregistrement) :
INSERT INTO client (prenom, nom, ville, age)
VALUES
('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24);
-- ECRITURE ALTERNATIVE (ne fonctionne pas sur tous les SGBDR
-- marche sur MySQL)
INSERT INTO utilisateur SET
nom = 'Durand',
prenom = 'Jérome',
code_postal = '13011';
-- Remarques :
-- Pour la requête INSERT INTO, on spécifie quelle table (client)
-- puis il suffit de spécifier les champs et leur valeur
-- Cette syntaxe ressemble grandement à la syntaxe de mise à jour
-- de la requête UPDATE TABLE
-- Mise à jour de plusieurs champs sur un enregistrement de la table 'client'
UPDATE client
SET rue = '49 Rue Ameline', -- On modifie le champ 'rue'
ville = 'Saint-Eustache-la-Forêt', -- On modifie le champ 'ville'
code_postal = '76210' -- On modifie le champ 'code_postal'
WHERE id = 2 -- sur l'enregistrement qui a l'identifiant 2
-- Remarques : pour une requête UPDATE, on spécifie le nom de la table
-- Puis on spécifie les changements (SET) en nommant les champs à
-- modifier ainsi que les nouvelles valeurs à prendre en compte
-- Enfin, on peut décider de spécifier sur quelle(s) ligne(s) on applique la mise à jour
-- grâce au mot clé WHERE puis une condition
-- Mise à jour de toutes les lignes d'une table
UPDATE produit
SET prix = 120
-- Mise à jour de toutes les lignes de la table 'produit'
-- On change le prix de tous les produits à 120
-- Suppression d'une ligne dans la table 'utilisateur'
DELETE FROM utilisateur
WHERE id = 1
-- Remarques : pour la requête DELETE FROM, on spécifie la table dans laquelle
-- on souhaite supprimer des données
-- On peut soumettre la requête à une condition (WHERE) afin de spécifier
-- les lignes à supprimer
-- Suppression de tous les utilisateurs inscrits avant le 10/04/2012
DELETE FROM utilisateur
WHERE date_inscription < '2012-04-10'
-- Suppression de tous les utilisateurs
DELETE FROM utilisateur
-- On veut afficher les villes de tous les clients
SELECT ville FROM client
-- On veut sélectionner le prénom et le nom de tous les clients
SELECT prenom, nom FROM client
-- On veut sélectionner toutes les données de tous les clients
SELECT * FROM client
-- Ensemble des possibilités de la requête SELECT
SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
OFFSET start
-- On veut afficher la ville du client n°220
SELECT ville FROM client WHERE id = 220
-- On veut sélectionner le prénom et le nom de tous les clients
-- de la ville de Marseille
SELECT prenom, nom FROM client
WHERE ville = 'Marseille'
-- On veut sélectionner toutes les données de tous les clients
-- qui ont moins de 30 ans
SELECT * FROM client
WHERE age < 30
-- Ensemble des possibilités de la requête SELECT
SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
OFFSET start