Exemples de requêtes SQL sur la base de données MySQL. Comment écrire des requêtes SQL - exemples détaillés

Syntaxe:

* où champs1 sont les champs à sélectionner, séparés par des virgules, vous pouvez également spécifier tous les champs avec un * ; table — le nom de la table à partir de laquelle nous extrayons les données ; conditions — conditions d'échantillonnage ; field2 — champ ou champs séparés par des virgules pour trier ; count — nombre de lignes à télécharger.
* La requête entre crochets n'est pas obligatoire pour récupérer des données.

Exemples simples en utilisant la sélection

1. Échantillonnage normal des données :

> SELECT * FROM utilisateurs

2. Échantillonnage de données avec jointure de deux tables (JOIN) :

SELECT u.name, r.* FROM utilisateurs u JOIN users_rights r ON r.user_id=u.id

*V dans cet exemple Les données sont échantillonnées en joignant les tables users et users_rights. Ils sont regroupés par les champs user_id (dans la table users_rights) et id (users). Le champ de nom est récupéré de la première table et tous les champs de la seconde.

3. Échantillonnage avec intervalles de temps et/ou de date

a) le point de départ et un certain intervalle de temps sont connus :

* les données de la dernière heure seront sélectionnées (champ date).

b) la date de début et la date de fin sont connues :

25/10/2017 et 25/11/2017.

c) les dates de début et de fin + l'heure sont connues :

* sélectionnez les données entre le 25/03/2018 0 heures 15 minutes et le 25/04/2018 15 heures 33 minutes et 9 secondes.

d) extraire les données pour un certain mois et une certaine année :

* extraire les données où le champ de date contient des valeurs pour avril 2018.

4. Échantillonnage des valeurs maximales, minimales et moyennes :

> SÉLECTIONNER max (zone), min (zone), moyenne (zone) DU pays

* max — valeur maximale ; min — minimum ; moyenne - moyenne.

5. Utilisation de la longueur de chaîne :

* cette requête doit afficher tous les utilisateurs dont le nom est composé de 5 caractères.

Exemples de requêtes plus complexes ou rarement utilisées

1. Concaténation avec regroupement des données sélectionnées sur une seule ligne (GROUP_CONCAT) :

* les données sont récupérées de la table des utilisateurs pour le champ id, le tout est placé sur une seule ligne, les valeurs sont séparées par des virgules.

2. Regroupement des données par deux champs ou plus :

> SELECT * FROM utilisateurs GROUP BY CONCAT(titre, "::", naissance)

* en résumé, dans cet exemple, nous téléchargerons les données de la table des utilisateurs et les regrouperons par champs de titre et de naissance. Avant le regroupement, nous combinons les champs en une seule ligne avec un délimiteur ::.

3. Fusion des résultats de deux tables (UNION) :

> (SELECT id, fio, adresse, "Utilisateurs" comme type FROM utilisateurs)
SYNDICAT
(SELECT id, fio, adresse, "Clients" comme type FROM clients)

* dans cet exemple, les données sont échantillonnées à partir des tables utilisateurs et clients.

4. Échantillon de valeurs moyennes regroupées pour chaque heure :

SELECT avg(température), DATE_FORMAT(datetimeupdate, "%Y-%m-%d %H") comme hour_datetime FROM archive GROUP BY DATE_FORMAT(datetimeupdate, "%Y-%m-%d %H")

* ici, nous extrayons la valeur moyenne du champ de température de la table d'archive et la regroupons par le champ datetimeupdate (avec division temporelle pour chaque heure).

INSÉRER

Syntaxe 1 :

> INSÉRER DANS

() VALEURS ()

Syntaxe 2 :

> INSÉRER DANS

VALEURS()

* où table est le nom de la table dans laquelle nous saisissons les données ; champs — liste de champs séparés par des virgules ; valeurs — répertoriant les valeurs séparées par des virgules.
* la première option vous permettra d'insérer uniquement les champs répertoriés - le reste recevra des valeurs par défaut. La deuxième option nécessitera une insertion pour tous les champs.

Exemples d'utilisation d'insert

1. Insertion de plusieurs lignes avec une seule requête :

> INSÉRER DANS les villes ("nom", "pays") des VALEURS ("Moscou", "Russie"), ("Paris", "France"), ("Funafuti", "Tuvalu");

* dans cet exemple, nous ajouterons 3 enregistrements dans une requête SQL.

2. Insertion à partir d'une autre table (copie de lignes, INSERT + SELECT) :

* Extrayez tous les enregistrements de la table des villes dont les noms commencent par « M » et ajoutez-les à la nouvelle table des villes.

Mise à jour (MISE À JOUR)

Syntaxe:

* où table est le nom de la table ; field — le champ dont nous modifierons la valeur ; valeur - nouvelle valeur ; conditions - condition (sans cela, faire une mise à jour est dangereux - vous pouvez remplacer toutes les données de la table entière).

Mise à jour par remplacement (REPLACE) :

MISE À JOUR

SET = REPLACER(, "", "");

UPDATE villes SET nom = REPLACE(nom, "Maskva", "Moscou");

Si nous voulons jouer la sécurité, nous pouvons d'abord vérifier le résultat du remplacement en utilisant SELECT :

Supprimer (SUPPRIMER)

Syntaxe:

* où table est le nom de la table ; conditions - condition (comme dans le cas de UPDATE, utiliser DELETE sans condition est dangereux - le SGBD ne demandera pas de confirmation, mais supprimera simplement toutes les données).

Création d'un tableau

Syntaxe:

> CRÉER UN TABLEAU

( , )

> CRÉER UNE TABLE SI N'EXISTE PAS `users_rights` (
`id` int(10) non signé NON NULL,
`user_id` int(10) non signé NOT NULL,
`rights` int(10) non signé NON NULL
) MOTEUR=InnoDB CHARSET PAR DÉFAUT=utf8;

* où table est le nom de la table (dans l'exemple user_rights) ; field1, field2 - nom des champs (dans l'exemple, 3 champs sont créés - id, user_id, droits) ; options1, options2 — paramètres de champ (dans l'exemple int(10) unsigned NOT NULL ) ; options de tableau — Paramètres communs tables (dans l'exemple ENGINE=InnoDB DEFAULT CHARSET=utf8 ).

Utiliser des requêtes en PHP

Connexion à la base de données :

mysql_connect("localhost", "login", "password") ou die("Erreur de connexion MySQL");
mysql_select_db("nom_base de données");
mysql_query("DÉFINIR LES NOMS "utf8"");

* où la connexion est faite à la base sur serveur local(hôte local); identifiants de connexion - identifiant et mot de passe (identifiant et mot de passe, respectivement) ; db_name est utilisé comme base ; Le codage utilisé est UTF-8.

Vous pouvez également créer une connexion persistante :

mysql_pconnect("localhost", "login", "password") ou die("Erreur de connexion MySQL");

* cependant, il existe une possibilité d'atteindre la limite d'hébergement maximale autorisée. Cette méthode doit être utilisée pour propres serveurs, où nous pouvons nous-mêmes contrôler la situation.

Connexion complète :

* en PHP cela s'effectue automatiquement, sauf pour les connexions persistantes (mysql_pconnect).

Une requête vers MySQL (Mariadb) en PHP est effectuée avec la fonction mysql_query(), et la récupération des données de la requête est effectuée avec mysql_fetch_array() :

$result = mysql_query("SELECT * FROM utilisateurs");
while ($mass = mysql_fetch_array($result)) (
echo $masse . "
";
}

* dans cet exemple, une requête a été effectuée sur la table des utilisateurs. Le résultat de la requête est placé dans la variable $result. Utilisé ultérieurement boucle while, dont chaque itération récupère un tableau de données et le place dans la variable $mass - à chaque itération, nous travaillons avec une ligne de la base de données.

La fonction mysql_fetch_array() utilisée renvoie un tableau associatif, avec lequel il est pratique de travailler, mais il existe également une alternative - mysql_fetch_row(), qui renvoie un tableau numéroté régulier.

Blindage

Si vous devez inclure un caractère spécial dans la chaîne de requête, par exemple %, vous devez utiliser l'échappement à l'aide du caractère barre oblique inverse - \

Par exemple:

* si vous exécutez une telle requête sans vous échapper, le signe % sera interprété comme n'importe quel nombre de caractères après 100.

C'est tout. Si vous avez besoin d'aide pour compléter une demande, veuillez m'envoyer un e-mail


Le contenu de l'article
1. Le plus MySQL simple demandes
2. Requêtes SELECT simples
3. Requêtes simples INSERT (nouvelle entrée)
4. Requêtes simples de MISE À JOUR (écraser, ajouter)
5. Requêtes simples DELETE (suppression d'enregistrement)
6. Requêtes DROP simples (suppression de table)
7. Complexe Requêtes MySQL
8. Requêtes MySQL et variables PHP

1. Les requêtes SQL les plus simples1. Affichera une liste de TOUTES les bases de données.

AFFICHER les bases de données ;
2. Répertorie TOUTES les tables de la base de données base_name.

SHOW tables dans base_name ;

2. Requêtes SELECT simples vers la base de données Données MySQL SELECT est une requête qui sélectionne les données existantes dans la base de données. Vous pouvez spécifier des paramètres de sélection spécifiques pour la sélection. Par exemple, l'essence de la requête en russe ressemble à ceci : SÉLECTIONNER telle ou telle colonne DE telle ou telle table OÙ le paramètre de telle ou telle colonne est égal à la valeur.

1. Sélectionne TOUTES les données dans la table tbl_name.

SELECT * FROM nom_table ;
2. Affiche le nombre d'enregistrements dans la table tbl_name.

SELECT count(*) FROM nom_table ;
3. Sélectionne (SELECT) dans (FROM) la table tbl_name limit (LIMIT) 3 enregistrements, en commençant par 2.

SELECT * FROM nom_table LIMIT 2,3;
4. Sélectionne (SELECT) TOUS (*) les enregistrements de la table (FROM) tbl_name et les trie (ORDER BY) par champ id dans l'ordre.

SELECT * FROM nom_table ORDER BY id ;
5. Sélectionne (SELECT) TOUS les enregistrements de (FROM) la table tbl_name et les trie (ORDER BY) par le champ id dans l'ordre INVERSE.

SELECT * FROM nom_table ORDER BY id DESC ;
6. Sélectionne ( SÉLECTIONNER) TOUS (*) enregistrements de ( DEPUIS) les tables utilisateurs et les trie ( COMMANDÉ PAR) sur le terrain identifiant par ordre croissant, limite ( LIMITE) les 5 premières entrées.

SELECT * FROM utilisateurs ORDER BY id LIMIT 5 ;
7. Sélectionne tous les enregistrements de la table utilisateurs, où est le champ nom de famille correspond à la valeur Géna.

SELECT * FROM utilisateurs WHERE fname="Gena";
8. Sélectionne tous les enregistrements de la table utilisateurs, où la valeur du champ nom de famille commencer avec Ge.

SELECT * FROM utilisateurs WHERE fname LIKE "Ge%" ;
9. Sélectionne tous les enregistrements de la table utilisateurs, Où nom de famille se termine par n / A, et trie les enregistrements par ordre croissant de valeur identifiant.

SELECT * FROM utilisateurs WHERE fname LIKE "%na" ORDER BY id ;
10. Sélectionne toutes les données des colonnes nom de famille, Nom de la table utilisateurs.

SELECT fname, lname FROM utilisateurs ;

11. Disons que vous avez un pays dans votre tableau de données utilisateur. Donc, si vous souhaitez afficher UNIQUEMENT une liste de valeurs apparaissant (de sorte que, par exemple, la Russie ne soit pas affichée 20 fois, mais une seule fois), alors nous utilisons DISTINCT. Cela sortira la Russie, l’Ukraine et la Biélorussie de la masse des valeurs répétitives. Ainsi, d'après le tableau utilisateurs haut-parleurs pays TOUTES les valeurs UNIQUES seront affichées

SÉLECTIONNEZ un pays DISTINCT DES utilisateurs ;
12. Sélectionne TOUTES les données de ligne du tableau utilisateursâge a les valeurs 18,19 et 21.

SELECT * FROM utilisateurs WHERE age IN (18,19,21);
13. Sélectionne la valeur MAXIMALE âge dans la table utilisateurs. Autrement dit, si dans votre table le plus valeur plus élevée âge(à partir de l'âge anglais) est 55, alors le résultat de la requête sera 55.

SELECT max(age) FROM utilisateurs ;
14. Sélectionnez les données du tableau utilisateurs par champs nom Et âgeâge prend la plus petite valeur.

SELECT nom, min(age) FROM utilisateurs ;
15. Sélectionnez les données du tableau utilisateurs sur le terrain nomidentifiant DIFFÉRENT DE 2.

SELECT nom FROM utilisateurs WHERE id!="2";

3. Requêtes simples INSERT (nouvel enregistrement)INSERT est une requête qui vous permet d'insérer INITIALEMENT un enregistrement dans la base de données. Autrement dit, il crée un NOUVEL enregistrement (ligne) dans la base de données.

1. Est-ce que nouvelle entrée dans la table utilisateurs, dans le champ nom insère Sergey, et sur le terrain âge insère 25. Ainsi, une nouvelle ligne avec ces valeurs est ajoutée au tableau. S'il y a plus de colonnes, les colonnes restantes resteront soit vides, soit avec des valeurs par défaut.

INSÉRER DANS LES VALEURS des utilisateurs (nom, âge) ("Sergey", "25");

4. Requêtes UPDATE simples vers la base de données MySQL UPDATE est une requête qui vous permet de RÉSERVER les valeurs des champs ou d'AJOUTER quelque chose à une ligne déjà existante dans la base de données. Par exemple, il existe une ligne toute faite, mais le paramètre d'âge doit y être réécrit, car il a changé au fil du temps.

1. Dans le tableau utilisateurs âge devient 18.

MISE À JOUR des utilisateurs SET age = "18" WHERE id = "3" ;
2. Tout est identique à celui de la première requête, la syntaxe de la requête est simplement affichée, où deux ou plusieurs champs sont écrasés.
Dans la table utilisateurs OÙ l'identifiant est égal à 3 valeurs de champ âge aura 18 ans et pays Russie.

MISE À JOUR des utilisateurs SET age = "18", country = "Russie" WHERE id = "3" ;

5. Requêtes simples DELETE (suppression d'enregistrement) vers la base de données MySQL DELETE est une requête qui supprime une ligne d'une table.

1. Supprime une ligne du tableau utilisateursidentifiant est égal à 10.

DELETE FROM utilisateurs WHERE id = "10" ;

6. Requêtes DROP simples (suppression de table) vers la base de données MySQLDROP est une requête qui supprime une table.

1. Supprime le tableau entier nom_table.

DROP TABLE nom_table ;

7. Requêtes complexes vers la base de données MySQL Requêtes curieuses qui peuvent être utiles même pour les utilisateurs expérimentés

SELECT id, nom, pays FROM utilisateurs, administrateurs WHERE TO_DAYS(NOW()) - TO_DAYS(registration_date) SET ( | ) .,. .< COLUMN name> = < VALUE expresslon>[OÙ< predlcate>| OÙ COURANT DE< cursor name>(*uniquement pour pièce jointe*) ] ; UPDATE pairs SET zone= "voip" ; # met à jour toutes les lignes de la colonne zone de la table des pairs UPDATE stat SET whp= "13x13x13" WHERE id = 1 ; UPDATE country SET nm_ukr= ( SELECT del_countries. ukrainian FROM del_countries WHERE country. nm_en= del_countries. english ) ;

Utilisation de WordPress, paramètre : dans la table wp_posts, supprimez toutes les occurrences de la ligne

UPDATE wp_posts SET post_content = REPLACE (post_content, "" , "" ) ;

SUPPRIMER DE

[ OÙ | OÙ COURANT DE (*pièce jointe uniquement*) ] ;

SUPPRIMER DES pairs ; // supprimera tout le contenu de la table Peers. DELETE FROM FinR où jour Comme "20120415%" ; // DELETE FROM pricesheets WHERE ratesheet_id NOT IN (SELECT id FROM ratesheets);

MODIFIER

    Modification de la valeur par défaut d'une colonne. Pour définir une nouvelle valeur par défaut pour une colonne, utilisez une commande telle que : ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77 ; OU ALTER TABLE nases ALTER COLUMN zone SET DEFAULT "voip" ;

    Notez que l'exécution de cette commande n'affecte pas les lignes existantes dans la table ; la commande modifiera uniquement la valeur par défaut pour les futures commandes INSERT. Pour supprimer toute valeur par défaut, utilisez

    Produits ALTER TABLE ALTER COLUMN prix DROP DEFAULT ;

    La commande fait la même chose que définir la valeur par défaut sur null. Étant donné que la suppression d'une valeur par défaut la définit implicitement sur null, aucune erreur ne sera signalée si une valeur par défaut existante est supprimée.

    Fonctionne comme valeur par défaut pour la colonne. Dans ce cas, la colonne de suivi du temps a un type de données timestamp, ce qui signifie que sa valeur par défaut peut être définie sur la fonction intégrée now(), c'est-à-dire lors de l'ajout d'une nouvelle ligne à une colonne, elle sera écrite La date actuelle et l'heure ALTER TABLE suivi du temps ALTER COLUMN date_wd SET DEFAULT now();

    Ajout d'une contrainte. Pour ajouter une contrainte, la syntaxe de table permettant de définir cette contrainte est utilisée. Par exemple : produits ALTER TABLE ADD CHECK (nom ""); ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no); ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;

    Pour ajouter une contrainte non nulle qui ne peut pas être écrite comme contrainte de table, utilisez la syntaxe :

    ALTER TABLE produits ALTER COLUMN product_no SET NOT NULL ;

    La contrainte spécifiée sera appliquée immédiatement, les données de la table doivent donc la satisfaire avant d'ajouter la contrainte.

Fonctions d'agrégation

Il existe 5 fonctions d'agrégation en SQL standard :

    COUNT - la fonction renvoie le nombre de lignes qui répondent à certains critères.,

    SOMME - renvoie la somme (totale) des valeurs dans une colonne spécifique. Les lignes de colonnes avec des valeurs NULL sont ignorées par la fonction SUM.

    AVG - valeur moyenne dans la colonne,

Les fonctions d'agrégation sont utilisées comme noms de champ dans une clause de requête SELECT, à une exception près : les noms de champ sont utilisés comme arguments. Les fonctions SUM et AVG ne peuvent fonctionner qu'avec des champs numériques. Les fonctions COUNT, MAX, MIN fonctionnent avec des champs numériques et caractères. Lorsqu'elles sont appliquées aux champs de caractères, les fonctions MAX et MIN peuvent fonctionner avec les équivalents ASCII des caractères.

SELECT Count(Books.ID) AS [Nombre de livres] FROM Livres ;

L'utilisation de CROUP BY vous permet d'appliquer des fonctions d'agrégation à des groupes d'enregistrements.

SELECT Count(Books.ID) AS [Nombre de livres] FROM Livres GROUP BY [Écrivain] ;

Vues (VOIR)

Une VUE est un objet de données qui ne contient aucune donnée sur son propriétaire. Il s'agit d'un type de table dont le contenu est récupéré d'autres tables en exécutant une requête.

Les tables de base sont des tables qui contiennent des données. Il existe cependant un autre type de tableau : - les vues (VIEW). Les vues sont des tables dont le contenu est sélectionné ou obtenu à partir d'autres tables. Ils fonctionnent dans les requêtes et les instructions DML tout comme les tables principales, mais ne contiennent aucune donnée propre. Les vues sont comme des fenêtres à travers lesquelles vous visualisez les informations réellement stockées dans la table sous-jacente.

    Commande CRÉER UNE VUE. La vue est créée avec la commande CREATE VIEW. Il se compose des mots CREATE VIEW, du nom de la vue à créer, du mot AS (COMMENT), puis de la requête. Créons la vue Londonstaff : CREATE VIEW Londonstaff AS SELECT * FROM Salespeople WHERE city = "London";

    Cette vue est utilisée comme n'importe quelle autre table. Il peut être interrogé, modifié, inséré, supprimé et joint à d'autres tables et vues. Demande de soumission.

    Types de donnéesSQL(Comment dansPage, comme dans la norme)

    Types de chaînes

    Types de données numériques

    Types de données Monnaie, Caractère, Binaire

    Type booléen. Transferts

    Exemples de requêtes SQL simples

    Les requêtes SELECT les plus simples

    L'instruction SQL SELECT est l'instruction la plus importante et la plus couramment utilisée. Il est conçu pour récupérer des informations à partir des tables de base de données. La syntaxe simplifiée de l'instruction SELECT est la suivante.

    SÉLECTIONNER [ TOUT | DISTINCT ] select_item_commalist

    DE table_reference_commalist

    [OÙ expression_conditionnelle]

    [ GROUPE PAR nom_colonne_commalist ]

    [ AYANT une expression_conditionnelle ]

    [ COMMANDE PAR order_item_commalist ]

    Les crochets indiquent les éléments qui peuvent ne pas être présents dans la demande.

    Le mot clé SELECT indique à la base de données que cette instruction est une demande de récupération d'informations.

    Après le mot SELECT, séparés par des virgules, sont listés les noms des champs (liste d'attributs) dont le contenu est demandé.

    Le mot clé requis dans une clause de requête SELECT est le mot FROM. Le mot-clé FROM est suivi d'une liste de noms de tables séparés par des virgules à partir desquels les informations sont récupérées.

    Par exemple, sélectionnez le titre, la description du film

    Toute requête SQL doit se terminer par le symbole « ; » (point-virgule). Le résultat de cette requête sera un tableau...

    L'ordre des colonnes de ce tableau correspond à l'ordre des champs spécifiés dans la requête

    Si vous devez afficher les valeurs de toutes les colonnes du tableau, vous pouvez utiliser le symbole « * » (astérisque) au lieu de lister leurs noms.

    SÉLECTIONNER * DU film ;

    Dans ce cas, le résultat de la requête sera la totalité de la table film.

    Attirons encore une fois votre attention sur le fait que les tables obtenues à la suite d'une requête SQL ne répondent pas pleinement à la définition d'une relation relationnelle. En particulier, ils peuvent contenir des tuples (lignes) avec des valeurs d'attribut identiques.

    Par exemple, la requête « liste de noms d’acteurs » peut s’écrire comme suit.

    sélectionnez le prénom de l'acteur ;

    Son résultat sera un tableau, le tableau contient des lignes identiques. Pour exclure les enregistrements en double du résultat d'une requête SELECT, utilisez mot-clé DISTINCTE (excellent).

    Si Requête SELECT récupère plusieurs champs, DISTINCT élimine les lignes en double dans lesquelles les valeurs de tous les champs sélectionnés sont identiques.

    La requête précédente peut s’écrire comme suit.

    sélectionnez un prénom distinct de l'acteur ;

    En conséquence, nous obtenons un tableau dans lequel les lignes en double sont exclues.

    Le mot-clé ALL fait le contraire de DISTINCT, ce qui signifie que les lignes en double sont incluses dans la sortie. Le mode spécifié par le mot-clé ALL est le mode par défaut, il n'est donc pratiquement pas utilisé à ces fins dans les requêtes réelles.

    L'utilisation d'une clause WHERE dans une instruction SELECT vous permet de spécifier une expression de condition (prédicat) qui est évaluée comme vraie ou fausse pour les valeurs de champ de ligne du tableau référencées par l'instruction SELECT. La clause WHERE détermine quelles lignes des tables spécifiées doivent être sélectionnées. La table résultant de la requête inclut uniquement les lignes pour lesquelles la condition (prédicat) spécifiée dans la clause WHERE est évaluée comme vraie.

    Exemple : Écrivez une requête qui récupère les noms de famille de tous les acteurs portant le nom PENELOPE

    sélectionnez le nom de famille de l'acteur

    où prénom_name="PENELOPE";

    Les conditions spécifiées dans la clause WHERE peuvent utiliser des opérations de comparaison définies par les opérateurs = (égal), > (supérieur à),< (меньше), >= (supérieur ou égal à), = Produits.[Prix]

Clauses SQL de base : SELECT, FROM et WHERE

Le format général des instructions SQL est :

SELECT champ_1
DEPUIS table_1
OÙ critère_1
;

Remarques:

    Access ne respecte pas les sauts de ligne dans les instructions SQL. Malgré cela, il est recommandé de commencer chaque phrase sur une nouvelle ligne afin que l'instruction SQL soit facile à lire tant pour la personne qui l'a écrite que pour tout le monde.

    Chaque instruction SELECT se termine par un point-virgule (;). Le point-virgule peut apparaître soit à la fin de la dernière phrase, soit sur une ligne distincte à la fin de l'instruction SQL.

Exemple dans Access

L'exemple ci-dessous montre à quoi pourrait ressembler une instruction SQL dans Access pour simple demande par échantillon.

1.Clause SELECT

2. Clause DE

3. Clause OÙ

Regardons l'exemple phrase par phrase pour comprendre comment fonctionne la syntaxe SQL.

Clause SELECT

SELECT,Entreprise

Il s'agit d'une clause SELECT. Il contient une instruction (SELECT) suivie de deux identifiants ("[Adresse E-mail]" et "Société").

Si l'identifiant contient des espaces ou signes spéciaux(par exemple, « Adresse e-mail »), elle doit être placée entre crochets rectangulaires.

La clause SELECT ne vous oblige pas à spécifier les tables qui contiennent les champs et vous ne pouvez pas spécifier de conditions de sélection qui doivent être remplies par les données incluses dans les résultats.

Dans une instruction SELECT, la clause SELECT précède toujours la clause FROM.

Clause DE

DE Contacts

Il s'agit d'une clause FROM. Il contient une instruction (FROM) suivie d'un identifiant (Contacts).

La clause FROM ne précise pas les champs à sélectionner.

Clause OÙ

OÙ Ville="Seattle"

Il s'agit de la clause WHERE. Il contient une instruction (WHERE) suivie de l'expression (City="Rostov").

Vous pouvez faire de nombreuses choses avec les clauses SELECT, FROM et WHERE. Pour plus d’informations sur l’utilisation de ces offres, consultez les articles suivants :

Tri des résultats : ORDER PAR

Un péché Microsoft Excel, dans Access, vous pouvez trier les résultats d'une requête dans un tableau. En utilisant la clause ORDER BY, vous pouvez également spécifier comment les résultats sont triés lors de l'exécution de la requête. Si une clause ORDER BY est utilisée, elle doit apparaître à la fin de l'instruction SQL.

La clause ORDER BY contient une liste de champs à trier, dans le même ordre dans lequel le tri sera appliqué.

Supposons, par exemple, que les résultats doivent d'abord être triés par le champ « Société » par ordre décroissant, puis s'il existe des enregistrements avec la même valeur champs "Entreprise", - triez-les par le champ "Adresse e-mail" par ordre croissant. La clause ORDER BY ressemblerait à ceci :

COMMANDE PAR Société DESC,

Remarque : Par défaut, Access trie les valeurs par ordre croissant (A à Z, de la plus petite à la plus grande). Pour trier les valeurs par ordre décroissant, vous devez spécifier le mot-clé DESC.

Pour plus d’informations sur la clause ORDER BY, consultez l’article sur la clause ORDER BY.

Travailler avec des données récapitulatives : clauses GROUP BY et HAVING

Parfois, vous devez travailler avec des données récapitulatives, telles que les ventes totales du mois ou les articles les plus chers en stock. Pour ce faire, la clause SELECT applique une fonction d'agrégation au champ. Par exemple, si vous deviez exécuter une requête pour obtenir le nombre d'adresses e-mail pour chaque entreprise, la clause SELECT pourrait ressembler à ceci :

La possibilité d'utiliser une fonction d'agrégation particulière dépend du type de données dans le champ et de l'expression souhaitée. Pour plus d’informations sur les fonctions d’agrégation disponibles, consultez Fonctions statistiques SQL.

Spécification des champs qui ne sont pas utilisés dans une fonction d'agrégation : clause GROUP BY

Lorsque vous utilisez des fonctions d'agrégation, vous devez généralement créer une clause GROUP BY. La clause GROUP BY spécifie tous les champs auxquels la fonction d'agrégation ne s'applique pas. Si les fonctions d'agrégation s'appliquent à tous les champs de la requête, vous n'avez pas besoin de créer une clause GROUP BY.

La clause GROUP BY doit immédiatement suivre la clause WHERE ou FROM s'il n'y a pas de clause WHERE. La clause GROUP BY répertorie les champs dans le même ordre que la clause SELECT.

Continuons l'exemple précédent. Dans la clause SELECT, si la fonction d'agrégation s'applique uniquement au champ [Adresse e-mail], alors la clause GROUP BY ressemblerait à ceci :

GROUPER PAR Entreprise

Pour plus d’informations sur la clause GROUP BY, consultez l’article sur la clause GROUP BY.

Restreindre les valeurs agrégées à l'aide de conditions de regroupement : la clause HAVING

Si vous devez spécifier des conditions pour limiter les résultats, mais que le champ auquel vous souhaitez les appliquer est utilisé dans une fonction d'agrégation, vous ne pouvez pas utiliser de clause WHERE. La clause HAVING doit être utilisée à la place. La clause HAVING fonctionne de la même manière que la clause WHERE, mais est utilisée pour les données agrégées.

Par exemple, supposons que la fonction AVG (qui calcule la moyenne) soit appliquée au premier champ de la clause SELECT :

SELECT COUNT(), Société

Si vous souhaitez limiter les résultats de la requête en fonction de la valeur de la fonction COUNT, vous ne pouvez pas appliquer de condition de sélection à ce champ dans la clause WHERE. Au lieu de cela, la condition doit être placée dans la clause HAVING. Par exemple, si vous souhaitez que votre requête renvoie des lignes uniquement si une entreprise possède plusieurs adresses e-mail, vous pouvez utiliser la clause HAVING suivante :

AVOIR COUNT()>1

Remarque : Une requête peut inclure à la fois une clause WHERE et une clause HAVING, avec des conditions de sélection pour les champs qui ne sont pas utilisés dans fonctions statistiques, sont spécifiés dans la clause WHERE et les conditions des champs utilisés dans les fonctions statistiques sont spécifiées dans la clause HAVING.

Pour plus d’informations sur la clause HAVING, consultez l’article sur la clause HAVING.

Combinaison des résultats de requête : opérateur UNION

L'opérateur UNION est utilisé pour afficher simultanément toutes les données renvoyées par plusieurs requêtes de sélection similaires sous la forme d'un ensemble combiné.

L'opérateur UNION vous permet de combiner deux instructions SELECT en une seule. Les instructions SELECT en cours de fusion doivent avoir le même nombre et le même ordre de champs de sortie avec des types de données identiques ou compatibles. Lorsqu'une requête est exécutée, les données de chaque ensemble de champs correspondants sont combinées en un seul champ de sortie, de sorte que la sortie de la requête comporte autant de champs que chaque instruction SELECT individuelle.

Remarque : Dans les requêtes de jointure, les types de données numériques et texte sont compatibles.

À l'aide de l'opérateur UNION, vous pouvez spécifier si les lignes en double, le cas échéant, doivent être incluses dans les résultats de la requête. Pour ce faire, utilisez le mot clé ALL.

Demande de fusion de deux Instructions SELECT a la syntaxe de base suivante :

SELECT champ_1
DEPUIS table_1
SYNDICAT
SELECT champ_a
DEPUIS table_a
;

Par exemple, supposons que vous ayez deux tables appelées « Produits » et « Services ». Les deux tableaux contiennent des champs avec le nom du produit ou du service, des informations sur le prix et la garantie, ainsi qu'un champ qui indique l'exclusivité du produit ou du service proposé. Bien que les tableaux « Produits » et « Services » fournissent différents types garanties, les informations de base sont les mêmes (que certains produits ou services soient fournis avec une garantie de qualité). Vous pouvez utiliser la requête de jointure suivante pour joindre quatre champs de deux tables :

SELECTIONNEZ le nom, le prix, la garantie_disponible, l'offre_exclusive
DE Produits
UNION TOUS
SELECT nom, prix, garantie_disponible, offre_exclusive
DES Services
;

Pour plus d'informations sur la combinaison d'instructions SELECT à l'aide de l'opérateur UNION, consultez