Outils pour utilisateurs

Outils du site


lang:sql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:sql [2016/11/12 14:28] – Création avec "Requête SELECT" rootlang:sql [2020/04/27 10:26] (Version actuelle) – maff -> html root
Ligne 1: Ligne 1:
-Soit la base de donnée :+=====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''  
 +<code sql> 
 +GRANT ALL PRIVILEGES ON datab.* TO user@localhost IDENTIFIED BY 'password'  
 +</code>
  
 +=====Requête SELECT=====
 +Soit la base de donnée :
     * Film (__id__, titre, annee, //id_realisateur//, //code_pays//)     * Film (__id__, titre, annee, //id_realisateur//, //code_pays//)
     * Artiste (__id__, nom, prenom)     * Artiste (__id__, nom, prenom)
     * Pays (__code__, nom, langue)     * Pays (__code__, nom, langue)
     * Role (__id_film__, __id_acteur__, nom_role)     * Role (__id_film__, __id_acteur__, nom_role)
- 
-=====Requête SELECT===== 
 ====Base==== ====Base====
 Renvoie les colonnes d'un. table. Renvoie les colonnes d'un. table.
Ligne 17: Ligne 21:
 <code sql> <code sql>
 SELECT p.* FROM Pays p; SELECT p.* FROM Pays p;
 +</code>
 +
 +En triant les résultats
 +<code sql>
 +SELECT titre, annee FROM Film ORDER BY annee DESC;
 </code> </code>
  
 ====Conditions restrictives==== ====Conditions restrictives====
 +===Simple===
 Une seule condition. Une seule condition.
 <code sql> <code sql>
Ligne 32: Ligne 42:
 SELECT titre FROM Film WHERE annee BETWEEN 1960 AND 1970; SELECT titre FROM Film WHERE annee BETWEEN 1960 AND 1970;
 </code> </code>
-Condition d'une valeur ''NULL''.+Condition d'une valeur ''NULL''. Un champ contenant ''NULL'' ne peut pas être sélectionné par une comparaison autre que ''IS NULL''.
 <code sql> <code sql>
 SELECT nom FROM Artiste WHERE annee_naissance IS NULL; SELECT nom FROM Artiste WHERE annee_naissance IS NULL;
Ligne 50: Ligne 60:
 </code> </code>
  
 +===Avec sous-requête===
 +Uniquement la ligne avec la valeur maximale
 +<code sql>
 +SELECT * FROM Film WHERE annee >=ALL (SELECT annee FROM Film);
 +</code>
 +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.
 +<code sql>
 +SELECT titre FROM Film WHERE id_realisateur IN (
 +  SELECT id FROM Artiste WHERE nom = 'Hitchcock');
 +</code>
 +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.
 +<code sql>
 +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'));
 +</code>
 +
 +=====Modifier une table existante=====
 +====Changer une colonne faisant office de clé étranger sur une autre table====
 +Intérêt : ajouter l'attribut Auto-Incrément qui a été oublié à une clé primaire.
 +
 +Bien mettre le même type de donnée (ici ''INT(11)'') dans l%%'%%''ID'' de la table ''artiste'' et les colonnes ''id_realisateur'' et ''id_acteur'' des tables ''Film'' et ''Role''.
 +<code sql>
 +LOCK TABLES Artiste WRITE, Film WRITE, Role WRITE;
 +
 +ALTER TABLE Film DROP FOREIGN KEY Film_ibfk_1;
 +ALTER TABLE Role DROP FOREIGN KEY Role_ibfk_2;
 +
 +ALTER TABLE Artiste MODIFY id INT(11) AUTO_INCREMENT;
 +
 +ALTER TABLE Film ADD CONSTRAINT Film_ibfk_1 FOREIGN KEY (id_realisateur) REFERENCES Artiste(id) ON DELETE RESTRICT ON UPDATE RESTRICT;
 +ALTER TABLE Role ADD CONSTRAINT Role_ibfk_2 FOREIGN KEY (id_acteur) REFERENCES Artiste(id) ON DELETE RESTRICT ON UPDATE RESTRICT;
 +
 +UNLOCK TABLES;</code>
 +
 +[[http://stackoverflow.com/questions/13606469/cannot-change-column-used-in-a-foreign-key-constraint|Cannot change column used in a foreign key constraint]] {{ :lang:sql:mysql_-_cannot_change_column_used_in_a_foreign_key_constraint_-_stack_overflow_2020-04-27_10_25_58_am_.html |Archive du 28/11/2012 le 27/04/2020}}
lang/sql.1478957284.txt.gz · Dernière modification : 2016/11/12 14:28 de root