Outils pour utilisateurs

Outils du site


informatique:sql

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:sql [2011/11/01 11:09]
benoit
informatique:sql [2018/09/06 19:10] (Version actuelle)
Ligne 58: Ligne 58:
 Pour effacer un l'​index nommé **indexuser** : Pour effacer un l'​index nommé **indexuser** :
   ALTER TABLE users DROP INDEX indexuser;   ALTER TABLE users DROP INDEX indexuser;
 +
 +Pour changer l'​encodage de caractères par défaut d'une table : 
 +  ALTER TABLE `ma_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;​
  
 === Gestion des colonnes d'une table === === Gestion des colonnes d'une table ===
Ligne 240: Ligne 243:
 ==== Jointures ==== ==== Jointures ====
 === Méthode WHERE === === Méthode WHERE ===
 +
 Pour joindre deux les champs de deux table avec mise en commun des **id** Pour joindre deux les champs de deux table avec mise en commun des **id**
   SELECT articles.nom AS nom_article,​ proprietaires.prenom AS prenom_proprietaire   SELECT articles.nom AS nom_article,​ proprietaires.prenom AS prenom_proprietaire
   FROM proprietaires,​ articles   FROM proprietaires,​ articles
-  WHERE articles.id_possesseur ​= proprietaires.id+  WHERE articles.id_proprietaire ​= proprietaires.id
  
 Il est possible de créer de alias sur le nom de tables : Il est possible de créer de alias sur le nom de tables :
   SELECT a.nom AS nom_article,​ p.prenom AS prenom_proprietaire   SELECT a.nom AS nom_article,​ p.prenom AS prenom_proprietaire
   FROM proprietaires AS p, articles AS a   FROM proprietaires AS p, articles AS a
-  WHERE a.id_possesseur ​= p.id+  WHERE a.id_proprietaire ​= p.id
  
 On peut également se passer du AS : On peut également se passer du AS :
   SELECT a.nom nom_article,​ p.prenom prenom_proprietaire   SELECT a.nom nom_article,​ p.prenom prenom_proprietaire
   FROM proprietaires p, articles a   FROM proprietaires p, articles a
-  WHERE a.id_possesseur ​= p.id+  WHERE a.id_proprietaire ​= p.id
  
 === Méthode JOIN (recommandée) === === Méthode JOIN (recommandée) ===
 +** Jointures internes**
 +
 Pour joindre deux les champs de deux table avec mise en commun des **id** Pour joindre deux les champs de deux table avec mise en commun des **id**
   SELECT articles.nom AS nom_article,​ proprietaires.prenom prenom_proprietaire   SELECT articles.nom AS nom_article,​ proprietaires.prenom prenom_proprietaire
-  FROM proprietaires +  FROM proprietaires INNER JOIN articles 
-  ​INNER JOIN articles ON articles.id_possesseur ​= proprietaires.id+  ​ON articles.id_proprietaire ​= proprietaires.id
  
 Avec l'​utilisation d'​alias et sans AS : Avec l'​utilisation d'​alias et sans AS :
   SELECT a.nom nom_article,​ p.prenom prenom_proprietaire   SELECT a.nom nom_article,​ p.prenom prenom_proprietaire
-  FROM proprietaires p +  FROM proprietaires p INNER JOIN articles a  
-  INNER JOIN articles a ON a.id_possesseur ​= p.id+  ​ON a.id_proprietaire = p.id 
 + 
 +**Jointure de 3 tables** 
 + 
 +  SELECT  
 +    profiles.*, profiles_times.*,​ times.* 
 +  FROM profiles 
 +    ​INNER JOIN profiles_times ON profiles.id = profiles_times.profile_id 
 +    INNER JOIN times ON profiles_times.time_id = times.id 
 + 
 +**Jointure de 4 tables** :!: Attention les Alias AS ont toutes leur importance : 
 +  SELECT  
 +     pr.*, p.*, u.*, lu.*, rh.* 
 +  FROM resolved_hosts AS rh 
 +    INNER JOIN profiles_routing AS pr ON rh.fqdn = pr.address 
 +    INNER JOIN profiles AS p ON pr.profile_id = p.id 
 +    INNER JOIN users AS u ON p.id = u.profile_id 
 +    INNER JOIN logged_users AS lu ON u.username = lu.user 
 +  WHERE rh.timestamp > 1447090110 
 + 
 +**Jointures externes** 
 + 
 +Le **LEFT JOIN** demande à récupérer tout le contenu de la table de gauche (donc tous les propriétaires) même s'ils n'ont pas d'​équivalence dans la table articles
 +  SELECT ​a.nom nom_article,​ p.prenom prenom_proprietaire 
 +  FROM proprietaires p LEFT JOIN articles a 
 +  ​ON j.ID_proprietaire = p.ID 
 + 
 +Le **RIGHT JOIN** demande à récupérer tout le contenu de la table de droite (donc tous les articles) même s'ils n'ont pas d'​équivalence dans la table proprietaires. 
 +  SELECT ​a.nom nom_article,​ p.prenom prenom_proprietaire 
 +  FROM proprietaires p RIGHT JOIN articles a 
 +  ON j.ID_proprietaire ​= p.ID
  
 ==== Effacer des données ==== ==== Effacer des données ====
informatique/sql.1320142199.txt.gz · Dernière modification: 2018/09/06 18:58 (modification externe)