Outils pour utilisateurs

Outils du site


lang:sql

Ceci est une ancienne révision du document !


Administration

Ajout un nouvel utilisateur user ayant toutes les autorisations sur toutes les tables de la base de donnée datab avec le mot de passe password.

GRANT ALL PRIVILEGES ON datab.* TO USER@localhost IDENTIFIED BY 'password' 

Requête SELECT

Soit la base de donnée :

  • Film (id, titre, annee, id_realisateur, code_pays)
  • Artiste (id, nom, prenom)
  • Pays (code, nom, langue)
  • Role (id_film, id_acteur, nom_role)

Base

Renvoie les colonnes d'un. table.

SELECT titre FROM Film;
SELECT * FROM Artiste;

Avec un alias

SELECT p.* FROM Pays p;

En triant les résultats

SELECT titre, annee FROM Film ORDER BY annee DESC;

Conditions restrictives

Simple

Une seule condition.

SELECT titre FROM Film WHERE annee = 1958;

Deux conditions.

SELECT titre FROM Film WHERE 1950 <= annee AND annee < 1960;

Condition avec BETWEEN. Inclus les bornes inférieure et supérieure.

SELECT titre FROM Film WHERE annee BETWEEN 1960 AND 1970;

Condition d'une valeur NULL. Un champ contenant NULL ne peut pas être sélectionné par une comparaison autre que IS NULL.

SELECT nom FROM Artiste WHERE annee_naissance IS NULL;

Condition sur un champ texte avec le caractère joker %. Pour les chaînes de caractères, utilisez plutôt l'apostrophe.

SELECT nom FROM Artiste WHERE nom LIKE 'A%';

Condition dans une liste de valeurs. Dans l'opérateur IN, le caractère joker % n'est pas utilisable.

SELECT nom FROM Artiste WHERE nom IN ('Dunst', 'Hitchcock');

Condition de négation. <>ALL est spécifique à Oracle. Les deux commandes ci-dessous sont équivalentes.

SELECT nom FROM Artiste WHERE nom NOT IN ('Dunst', 'Hitchcock');
SELECT nom FROM Artiste WHERE nom <>ALL ('Dunst', 'Hitchcock');

Avec sous-requête

Uniquement la ligne avec la valeur maximale

SELECT * FROM Film WHERE annee >=ALL (SELECT annee FROM Film);

Les films ayant pour réalisateur Hitckcock. Les étapes :

  • on commence par récupérer l'id de Hitchcock,
  • puis on récupère les films dont l'id correspond à celui d'Hitchcock.
SELECT titre FROM Film WHERE id_realisateur IN (
  SELECT id FROM Artiste WHERE nom = 'Hitchcock');

Les films parus avant 2000, avec Clint Eastwood comme acteur. Les étapes :

  • on commence par récupérer l'id de Clint Eastwood,
  • on récupère les id des films dans lesquels Clint Eastwood à jouer,
  • puis on affiche les films dont l'id est dans celui des films dans lesquels Clint Eastwood à jouer. On rajoute une condition annee < 2000 pour ne garder que les films d'avant l'an 2000.
SELECT titre FROM Film WHERE annee < 2000 AND id IN (
  SELECT id_film FROM ROLE WHERE id_acteur IN (
    SELECT id FROM Artiste WHERE nom LIKE 'Eastwood' AND prenom LIKE 'Clint'));
lang/sql.1478989028.txt.gz · Dernière modification : 2016/11/12 23:17 de root