Ci-dessous, les différences entre deux révisions de la page.
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 09:45] 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 239: | Ligne 242: | ||
==== Jointures ==== | ==== Jointures ==== | ||
+ | === Méthode WHERE === | ||
+ | |||
+ | 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 | ||
+ | FROM proprietaires, articles | ||
+ | WHERE articles.id_proprietaire = proprietaires.id | ||
+ | |||
+ | Il est possible de créer de alias sur le nom de tables : | ||
+ | SELECT a.nom AS nom_article, p.prenom AS prenom_proprietaire | ||
+ | FROM proprietaires AS p, articles AS a | ||
+ | WHERE a.id_proprietaire = p.id | ||
+ | |||
+ | On peut également se passer du AS : | ||
+ | SELECT a.nom nom_article, p.prenom prenom_proprietaire | ||
+ | FROM proprietaires p, articles a | ||
+ | WHERE a.id_proprietaire = p.id | ||
+ | |||
+ | === Méthode JOIN (recommandée) === | ||
+ | ** Jointures internes** | ||
+ | |||
+ | Pour joindre deux les champs de deux table avec mise en commun des **id** | ||
+ | SELECT articles.nom AS nom_article, proprietaires.prenom prenom_proprietaire | ||
+ | FROM proprietaires INNER JOIN articles | ||
+ | ON articles.id_proprietaire = proprietaires.id | ||
+ | |||
+ | Avec l'utilisation d'alias et sans AS : | ||
+ | SELECT a.nom nom_article, p.prenom prenom_proprietaire | ||
+ | FROM proprietaires p INNER JOIN articles a | ||
+ | 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 ==== |