E.A. Requêtes d'accès Bessonov en langage SQL. Requêtes SQL Utilisation de SQL dans l'accès

Le langage SQL n'a pas les fonctions d'un langage de développement à part entière, mais se concentre sur l'accès aux données, il est donc inclus dans les outils de développement de programmes. Dans ce cas, on l'appelle SQL embarqué. Le standard de langage SQL est pris en charge par les implémentations modernes des langages de programmation suivants : PL/1, Ada, C, COBOL, Fortran, MUMPS et Pascal.

Dans les systèmes spécialisés de développement d'applications de type client-serveur, l'environnement de programmation est, en outre, généralement complété par des outils de communication (établissement et déconnexion des connexions avec les serveurs de bases de données, détection et traitement des erreurs survenant sur le réseau, etc.), des outils de développement interfaces utilisateur, outils de conception et de débogage.

Il existe deux méthodes principales pour utiliser Embedded SQL : statique et dynamique.

À statique utilisation de la langue (SQL statique) Le texte du programme contient des appels aux fonctions du langage SQL, qui sont strictement incluses dans le module exécutable après compilation. Les modifications dans les fonctions appelées peuvent se situer au niveau des paramètres d'appel individuels à l'aide de variables de langage de programmation.

À dynamique utilisation de la langue (SQL dynamique) on suppose que les appels aux fonctions SQL sont construits et interprétés de manière dynamique, par exemple lors de l'accès aux données d'une base de données distante, pendant l'exécution du programme. La méthode dynamique est généralement utilisée dans les cas où l'application ne connaît pas à l'avance le type d'appel SQL et elle est construite en dialogue avec l'utilisateur.

L'objectif principal du langage SQL (ainsi que d'autres langages permettant de travailler avec des bases de données) est de préparer et d'exécuter des requêtes. Suite à l'échantillonnage des données d'une ou plusieurs tables, un ensemble d'enregistrements peut être obtenu, appelé présentation.

Performance est essentiellement une table formée à la suite de l’exécution d’une requête. On peut dire que c'est un type de requête stockée. Vous pouvez créer plusieurs vues en utilisant les mêmes tables. La vue elle-même est décrite en précisant l'identifiant de la vue et la requête qui doit être faite pour l'obtenir.



Pour faciliter le travail avec les vues, le concept de curseur a été introduit dans le langage SQL. Curseur est une sorte de pointeur utilisé pour parcourir des ensembles d'enregistrements lors de leur traitement.

Description et utilisation du curseur dans Langage SQL s'effectue de la manière suivante. Dans la partie descriptive du programme, la liaison est effectuée type de variable curseur (CURSOR) avec une instruction SQL (généralement avec Instruction SELECT). Dans la partie exécution du programme, le curseur est ouvert (OPEN<имя курсора», перемещение курсора по записям (FETCI-1 <имя курсора>...), suivi d'un traitement approprié, et enfin de la fermeture du curseur (CLOSE<имя курсора>).

Dans les SGBD relationnels, pour effectuer des opérations sur les relations, on utilise deux groupes de langages, qui ont pour base mathématique les langages de requête théoriques proposés par E. Codd :

Algèbre relationnelle ;

Calcul relationnel.

En algèbre relationnelle Les opérandes et les résultats de toutes les actions sont des relations. Les langages d'algèbre relationnelle sont procéduraux car la relation résultant d'une requête sur une base de données relationnelle est évaluée en exécutant une séquence d'opérateurs relationnels appliqués aux relations. Les opérateurs sont constitués d'opérandes, qui sont des relations, et d'opérations relationnelles.

Les opérations d'algèbre relationnelle de Codd peuvent être divisées en deux groupes : théorie des ensembles de base et relationnelle spéciale. Le premier groupe d’opérations comprend les opérations classiques de la théorie des ensembles : union, différence, intersection et produit. Le deuxième groupe représente l'évolution des opérations ordinaires de la théorie des ensembles vers des problèmes réels de manipulation de données ; il comprend les opérations : projection, sélection, division et connexion.

Langages de calcul sont non procéduraux (descriptifs ou déclaratifs) et permettent d'exprimer des requêtes à l'aide d'un prédicat de premier ordre (instructions de fonction) que les tuples ou les domaines relationnels doivent satisfaire. Une requête de base de données exécutée à l'aide d'un tel langage ne contient que des informations sur le résultat souhaité. Ces langages se caractérisent par la présence d'ensembles de règles d'écriture des requêtes. En particulier, SQL appartient aux langages de ce groupe.

Caractéristiques de l'application Requêtes SQL

Une requête SQL est une requête créée à l'aide d'une instruction SQL. Des exemples de requêtes SQL sont les requêtes de jointure, les requêtes de serveur, les requêtes de contrôle et les requêtes subordonnées.

Une requête de jointure est une requête qui combine des champs (colonnes) d'une ou plusieurs tables ou requêtes en un seul champ ou une seule colonne dans l'ensemble d'enregistrements de résultats. Par exemple, six vendeurs fournissent chaque mois à la direction un inventaire de leur inventaire. En créant une requête de jointure, vous pouvez combiner ces inventaires dans un ensemble d'enregistrements de résultats, puis développer une requête de création de table basée sur la requête de jointure.

Une requête adressée au serveur transmet des commandes SQL via ODBC à un serveur, par exemple Microsoft SQL Server. Les requêtes serveur vous permettent de travailler directement avec les tables sur le serveur au lieu de les rejoindre. Le résultat d'une requête adressée au serveur peut être le chargement d'enregistrements ou la modification de données.

Une requête de contrôle crée ou modifie des objets de base de données, tels que des tables Access ou SQL Server.

Une sous-requête consiste en une instruction SQL SELECT dans une autre requête de sélection ou de modification. Ces instructions sont saisies dans la ligne « Champ » du formulaire de demande pour définir un nouveau champ ou dans la ligne « Condition de sélection » pour définir la condition de sélection du champ. Les sous-requêtes sont utilisées pour effectuer les opérations suivantes :

Vérifier dans une sous-requête l'existence de certains résultats à l'aide des mots réservés EXISTS ou NO EXISTS ;

Recherche dans la requête principale toutes les valeurs égales, supérieures ou inférieures aux valeurs renvoyées dans la sous-requête (en utilisant les mots réservés ANY, IN ou ALL) ;

Création de sous-requêtes au sein des sous-requêtes (sous-requêtes imbriquées).

Le langage SQL dans Access peut être utilisé pour développer des formulaires d'écran, des rapports, ainsi que pour créer des macros et des programmes VBA.

Relation entre les langages QBE et SQL

Dans Access, il existe une relation étroite entre les langages QBE et SQL. Les tables de requêtes (formulaires) dans le langage QBE, remplies par l'utilisateur, sont converties en expressions SQL avant exécution immédiate. Autrement dit, le langage SQL est un standard interne pour l'exécution de requêtes. Ce mécanisme présente l'avantage de permettre au système Access d'unifier la préparation des requêtes à exécuter sur les ordinateurs locaux et distants. Dans ce dernier cas, le message SQL est effectivement transmis à l'ordinateur - le serveur de requêtes.

Dans Access, une requête peut être dans l’un des trois modes (états) suivants : Conception, SQL et Table. Le mode Conception est utilisé pour développer une nouvelle requête à partir de zéro (sans utiliser d'assistants ou d'autres outils) ou pour modifier la présentation d'une requête existante. Le mode SQL est utilisé pour saisir ou afficher des instructions SQL. Le mode Table est utilisé pour travailler avec les résultats de requête.

SQL dans les formulaires et les rapports

Les principales sources d'enregistrements dans les affichages et les rapports sont les tables et les requêtes. Dans le second cas, la demande peut être une requête de base de données prête à l'emploi ou créée lors de l'élaboration d'un formulaire ou d'un rapport.

SQL dans les macros

Les commandes de macro font partie des macros utilisées pour automatiser l'exécution d'actions fréquemment répétées lors de l'utilisation d'une base de données. Une macro est une ou plusieurs commandes de macro avec des arguments.

Les macros sont appelées depuis la fenêtre de la base de données ou automatiquement lorsque certains événements se produisent. L'événement qui déclenche la macro peut être par exemple le clic sur un bouton dans la zone du formulaire ou l'ouverture d'une fenêtre de base de données. En plus d'effectuer certaines actions sur les objets de base de données, les macros peuvent appeler d'autres macros, des programmes Visual Basic et des applications externes.

Parmi les nombreuses macro-commandes, deux macro-commandes sont directement liées à SQL : Run SQL Query (Run SQL) et Open Query (OpenQuery)

Commande macro Exécuter une requête SQL exécute une requête de modification ou de contrôle Access à l’aide de l’instruction SQL appropriée. Cette macro permet d'effectuer des actions dans une macro sans enregistrer au préalable les requêtes. Vous pouvez également exécuter des requêtes enregistrées à l'aide de la macro.

Demandes de changement sont des instructions SQL qui implémentent les fonctions suivantes : ajout (INSERT INTO), suppression (DELETE), création d'une table (SELECT...INTO) et mise à jour (UPDATE)

Demandes de contrôle sont des instructions SQL qui exécutent les fonctions suivantes : créer une table (CREATE TABLE), modifier une table (ALTER TABLE), supprimer une table (DROP TABLE), créer un index (CREATE INDEX) et supprimer un index (DROP INDEX).

Le seul argument obligatoire de la commande macro Exécuter une requête SQL est une instruction SQL. Argument de macro sous forme de texte SQL - les instructions sont saisies manuellement dans la fenêtre de saisie de macro ou copiées à partir de la fenêtre SQL, ce qui est souvent plus pratique.

Commande macro DemandeOuverte vous permet d'ouvrir une requête de sélection ou croisée (en modes table, conception et aperçu), d'exécuter une requête pour modifier ou saisir des données.

La macro spécifie trois arguments : le nom de la demande, le mode et le mode des données. Le premier argument spécifie le nom de la demande à ouvrir et est obligatoire. Le deuxième argument spécifie le mode d'ouverture de la requête (Table, Conception et Vue). Le troisième argument décrit le mode de saisie des données dans la requête ("Ajouter", "Modifier" et "Lecture seule")

SQL dans les programmes VBA

VBA, comme les macros, est conçu pour automatiser les opérations répétitives sur les objets de la base de données Access.

Dans Access, il existe les manières suivantes d’exécuter des programmes VBA :

Inclure un programme dans la procédure de traitement des événements ;

Appeler une fonction dans une expression ;

Appel d'une procédure Sub dans une autre procédure ou dans une fenêtre de débogage ;

Exécution de la commande macro RunCode (RunCode) dans une macro.

Les fonctions sont utilisées dans les expressions qui définissent les champs calculés dans les formulaires, les rapports ou les requêtes. Les expressions sont utilisées pour spécifier des conditions dans les requêtes et les filtres, ainsi que dans les macros, les instructions et méthodes VBA et les instructions SQL. Une sous-procédure peut inclure des sous-programmes VBA publics appelés à partir d’autres procédures.

Examinons l'exécution d'une requête de base de données à l'aide d'instructions SQL dans un programme Visual Basic pour Applications.

La demande sélectionne des enregistrements de la base de données qui satisfont à certaines conditions (demande de sélection) ou émet des instructions pour effectuer des actions spécifiées avec des enregistrements qui satisfont certaines conditions (demande de modification).

Il existe les manières suivantes d'exécuter des requêtes :

Appel de la méthode Execute (pour exécuter des requêtes SQL pour les modifications) ;

Création et exécution d'un objet spécial QueryDef ;

Utiliser une instruction SQL comme argument de la méthode OpenRecordset ;

Exécutez la méthode OpenRecordset sur un objet QueryDef existant ;

Appel des méthodes RunSQL et OpenQuery.

Exécuter la méthode utilisé si vous devez apporter une modification à la base de données qui ne renvoie pas d'enregistrements. Par exemple, les opérations d'insertion ou de suppression d'enregistrements.

Objet QueryDef représente une définition de requête enregistrée dans la base de données. Cela peut être considéré comme une instruction SQL compilée.

Méthode OpenRecordset utilisé pour ouvrir un objet de type Recordset pour y effectuer des opérations ultérieures.

Méthode RunSQL exécute une macro Exécuter une requête SQL dans le programme VBA

Méthode OpenQuery exécute la commande macro OpenQuery dans un programme VBA. Avec lui, vous pouvez ouvrir une requête en mode Feuille de données, Conception ou Affichage. Ceci définit l'un des modes suivants pour travailler avec les données : ajout, modification ou lecture uniquement.

Le choix de l'option d'exécution de la requête est déterminé par le programmeur, en tenant compte des caractéristiques du problème à résoudre.

Les requêtes dans Access sont le principal outil de sélection, de mise à jour et de traitement des données dans les tables de base de données. Access, conformément au concept de bases de données relationnelles, utilise SQL (Structured Query Language) pour exécuter des requêtes. À l'aide des instructions du langage SQL, toute requête dans Access est implémentée.

Le principal type de demande est une demande de sélection. Le résultat de cette requête est une nouvelle table qui existe jusqu'à la fermeture de la requête. Les enregistrements sont formés en combinant les enregistrements des tables sur lesquelles la requête est basée. La méthode de combinaison des enregistrements de table est spécifiée lors de la définition de leur relation dans le schéma de données ou lors de la création d'une requête. Les conditions de sélection formulées dans la requête permettent de filtrer les enregistrements qui constituent le résultat des jointures de tables.

Plusieurs types de requêtes peuvent être créés dans Access :

  • demande d'échantillon- sélectionne les données d'une table ou d'une requête ou de plusieurs tables interdépendantes et autres requêtes. Le résultat est une table qui existe jusqu'à la fermeture de la requête. Les enregistrements de la table de résultats sont générés conformément aux conditions de sélection précisées et lors de l'utilisation de plusieurs tables en combinant leurs enregistrements ;
  • demande de création d'un tableau- sélectionne les données de tables interdépendantes et d'autres requêtes, mais, contrairement à une requête de sélection, stocke le résultat dans une nouvelle table permanente ;
  • demandes de mise à jour, d'ajout, de suppression- sont des demandes d'action, à la suite desquelles les données des tableaux sont modifiées.

Les requêtes dans Access en mode conception contiennent un schéma de données qui affiche les tables utilisées et un formulaire de requête dans lequel sont conçues la structure de la table de requête et les conditions de sélection des enregistrements (Fig. 4.1).

A l'aide d'une requête, vous pouvez effectuer les types de traitements de données suivants :

  • inclure les champs de table sélectionnés par l'utilisateur dans la table de requête ;
  • effectuer des calculs dans chacun des enregistrements reçus ;
  • sélectionner les enregistrements qui répondent aux conditions de sélection ;
  • créer une nouvelle table virtuelle basée sur la combinaison d'enregistrements de tables interdépendantes ;
  • regrouper les enregistrements qui ont les mêmes valeurs dans un ou plusieurs champs, exécutent simultanément des fonctions statistiques sur d'autres champs du groupe et, par conséquent, incluent un enregistrement pour chaque groupe ;
  • créer une nouvelle table de base de données en utilisant les données des tables existantes ;
  • mettre à jour les champs dans un sous-ensemble sélectionné d'enregistrements ;
  • supprimer un sous-ensemble sélectionné d'enregistrements d'une table de base de données ;
  • ajouter un sous-ensemble sélectionné d'enregistrements à une autre table.

Les requêtes dans Access servent de sources d’enregistrement pour d’autres requêtes, formulaires et rapports. À l'aide d'une requête, vous pouvez collecter des informations complètes pour générer un document sur un certain domaine à partir de plusieurs tables, puis les utiliser pour créer un formulaire - une représentation électronique de ce document. Si un formulaire ou un rapport est créé par l'assistant sur la base de plusieurs tables interdépendantes, une requête est automatiquement générée pour eux en tant que source d'enregistrements.
Pour renforcer cela, regardez le didacticiel vidéo.

Le SGBD Access utilise deux types de requêtes : QBE – requête par échantillon et SQL(Structured Query Language) - langage de requête structuré. Un exemple de demande est généré en remplissant un formulaire de demande spécial dans la fenêtre « Query Builder ». SQL – les requêtes sont créées par les programmeurs à partir d’une séquence de SQL – instructions. SQL est généralement généré par les programmeurs sur un formulaire de requête, qui est ouvert par la commande « Query Builder » dans l'onglet « Création » et le « Mode SQL » est sélectionné dans le menu Affichage. Le langage SQL est conçu pour fonctionner avec des données, c'est-à-dire pour créer, modifier et gérer des données dans des bases de données relationnelles.

Il est à noter qu'il existe plusieurs modes de requête SQL (requêtes en mode ANSI-89 SQL et ANSI-92 SQL) conformes aux normes ANSI-89 SQL et ANSI-92 SQL.

Les instructions contiennent une description de l'ensemble de données en SQL. Instructions SQL se composent de clauses (SELECT, FROM, WHERE, etc.). Offres en langage SQL sont constitués de termes (opérateurs ou commandes, identifiants, constantes, etc.). L'instruction commence par une instruction (une des commandes SELECT, CREATE, INSERT, UPDATE, DELETE, etc.) et se termine par un point-virgule. Instructions SQL de base : SELECT, FROM et WHERE.

Par exemple, l'instruction SQL :
SELECT Étudiants.StudentCode
DES Étudiants ;
se compose de la clause "SELECT Students.StudentCode" et de la clause "FROM Students".

La clause SELECT contient opérateur SÉLECTIONNER et identifiant"Étudiants.Code étudiant". Ici, le nom complet du champ « StudentCode » est précédé du nom de la table « Student » de la base de données. SELECT - spécifie le champ qui contient les données requises. La clause FROM est constituée d'une clause FROM et de l'identifiant « Étudiants ». FROM - définit une table qui contient les champs spécifiés dans la clause SELECT.

A noter que lors de la création d’une requête en SQL, vous devez prendre en compte sa syntaxe. Malgré le fait que la syntaxe du langage SQL soit basée sur la syntaxe de la langue anglaise, la syntaxe des versions du langage SQL peut différer selon les SGBD.

Il existe plusieurs types de requêtes : sélection, mise à jour, ajout et suppression d'enregistrements, requêtes croisées, création et suppression de tables, jointure de tables, etc. Le plus courant est un exemple de demande. Les requêtes de sélection sont utilisées pour sélectionner les informations contenues dans les tables dont l'utilisateur a besoin. Ils sont créés uniquement pour les tables liées.

Pour afficher les requêtes SQL dans le SGBD Access 2003 ou 2007, vous devez exécuter la commande SQL View/Mode dans la fenêtre active pour concevoir un exemple de requête (Fig. 1).


Riz. 1.

Obtenons une instruction SQL (SELECT) pour échantillonner les données de la base de données Access 2003 selon le critère de performance de l'élève « Grade = 5 » (Fig. 2).



Riz. 2.

Comme il ressort de l'instruction SELECT (Fig. 1), elle décrit un ensemble de données en langage SQL : SELECT - définit les noms de champs précédés des noms des tables qui contiennent les données ; FROM - définit les tables et leurs relations via des champs de table clés (la construction INNER JOIN ... ON est utilisée pour cela), sur la base desquels les données sont sélectionnées ; WHREME - définit les conditions de sélection des champs ; ORDER BY - détermine comment trier par ordre croissant (par défaut, l'ordre croissant est effectué) les valeurs du champ "Nom" de la table "Étudiants".

Comme il ressort des instructions de récupération des données de la base de données, le langage SQL décrit ce qui doit être obtenu de la base de données, tandis que l'exécution est confiée au SGBD, le langage SQL ne disposant pas de ses propres moyens de contrôle de l'exécution du programme.

Ministère de l'Éducation de la Fédération de Russie

Université technique d'État de Kouzbass

Département d'informatique

et technologies de l'information

Requêtes en langage SQL

Lignes directrices pour les travaux de laboratoire pour les étudiants de la spécialité « Économie et gestion des entreprises » dans le cours « Automatisation des calculs économiques »

Compilé par E.A. Bessonov

Approuvé lors d'une séance du département Procès-verbal n°11 du 23 juin 2000

Une copie électronique est conservée dans la bibliothèque du bâtiment principal du KuzSTU

Kemerovo 2001

SQL (Structured Query Language - langage de requête structuré

chouettes) depuis 1986 est un langage de base de données relationnelle standard. Il est notamment utilisé dans les applications Access et Excel. La norme du langage SQL est définie dans .

Les requêtes dans MS Access sont enregistrées et implémentées à l'aide du langage SQL. Bien que la plupart des requêtes puissent être créées graphiquement (requêtes de modèle), elles sont stockées sous forme d'instructions SQL. Dans certains cas (par exemple dans les sous-requêtes), vous ne pouvez utiliser que le langage SQL. Le dialecte de cette langue est utilisé dans MS Access et est décrit ci-dessous. De nombreux exemples de requêtes en SQL peuvent être trouvés dans la base de données Northwind (fichier I:\Access\Sampapps\Nwind.mdb).

SQL est sensiblement différent des autres langages de programmation de haut niveau.

1. SQL est un langage non procédural. Il déclare simplement ce qui doit être fait et l'exécution est laissée au SGBD (système de gestion de base de données).

2. SQL utilise une logique à trois valeurs. Outre les valeurs booléennes traditionnelles VRAI et FAUX, NULL (INCONNU ou AUCUNE DONNÉE) est utilisé.

3. Les opérations sont effectuées sur des ensembles entiers de données, plutôt que sur des éléments individuels, comme dans d'autres langages de programmation.

Une requête SQL est constituée d'instructions. Chaque instruction peut contenir plusieurs phrases.

Presque aucune requête n'est complète sans une clause FROM, qui décrit les tables ou requêtes utilisées et possède la syntaxe

DE tables

Tables - les tables/requêtes utilisées et leurs relations.

Si la clause FROM contient une clause IN (les crochets indiquent que cette partie de la clause est facultative), alors le mot réservé IN doit être suivi du nom de la base de données dans laquelle se trouvent les tables (en supposant qu'elles utilisent des tables non de la base de données actuelle).

DES Enseignants

Si la requête est basée sur deux tables, il est alors nécessaire d'indiquer la méthode pour les combiner - l'une des suivantes (on suppose que le lecteur les connaît) :

Produit cartésien ; INNER JOIN jointure interne ; LEFT JOIN jointure externe gauche ; RIGHT JOIN jointure extérieure droite.

Immédiatement après la méthode de jointure, vous devez placer la phrase ON Table1.Key = Table2.ForeignKey

Key - le nom du champ clé du côté 1. ForeignKey - le nom du champ de connexion du côté N.

Schéma de données

La figure montre le diagramme de jointure de table (schéma de données) qui sera utilisé pour la plupart des exemples ci-dessous. Sur la figure, par exemple, vous pouvez voir que pour la table « Examinateurs », le champ « Sujet » est un champ clé (en gras), et le champ « Enseignant » est une clé étrangère pour la table « Enseignants ». La jointure entre les tables spécifiées est interne et garantit l'intégrité des données. Ceci est attesté par les signes 1 et ∞ aux extrémités de la ligne de connexion (« Enseignants » est la table principale et « Examinateurs » est la table subordonnée). Avec une jointure externe, vous pouvez voir une flèche sur la ligne de jointure de table dirigée vers la table subordonnée. Cela signifie que tous les enregistrements seront affichés dans la table principale, même s'il n'y a aucun enregistrement correspondant dans la table subordonnée. Par exemple, vous pouvez obtenir une liste d’enseignants et de noms de matières. Si

Si un enseignant ne figure pas dans la table « Examinateurs », alors le champ du nom de la matière pour cet enseignant sera vide si un LEFT JOIN est utilisé.

FROM Examiners INNER JOIN Exams ON Examiners.Subject = Exams.Subject

Dans la clause FROM, avant les mots réservés INNER JOIN, est indiqué le nom de la table de la face 1 (dans notre cas, la table « Examinateurs »). S'il y a plus de deux tables dans la clause FROM, la jointure des deux tables peut être placée entre parenthèses et traitée comme une seule table lorsqu'elle est jointe à d'autres tables ou jointures. Vous pouvez ainsi décrire une jointure de n'importe quel nombre de tables.

DES Enseignants INNER JOIN (Examinateurs

Examens INNER JOIN

ON Examiners.Sujet = Examens.Sujet)

ON Teachers.Teacher = Examiners.Teacher L'ensemble du schéma de données est décrit (voir figure).

L'instruction SELECT sélectionne les champs requis dans les tables ou les requêtes. Format minimum :

DEtableau ;

Champs : un ensemble d'expressions et de noms de champs, séparés par des virgules. Exemple

SELECT Groupe, Étudiant, Évaluation FROM Examens ;

Si le nom est répété dans plusieurs tables répertoriées dans la clause FROM, alors le nom doit être précédé du nom de la table et d'un point, par exemple : [Examinateurs].Enseignant ou [Exams]. [Article]

Si le nom d'une table ou d'un champ contient un espace ou un autre caractère spécial, ce nom doit être placé entre crochets. Dans d'autres cas, les parenthèses sont facultatives.

DANS Dans l'exemple donné en mode table, la requête produit une table

Avec titres de colonnes « Groupe », « Étudiant », « Note » (dans cet ordre). Il est parfois souhaitable que le titre soit différent de

nom du champ. Dans ce cas, après le nom du champ vous devez placer le mot réservé AS et un titre (alias), par exemple :

Groupe SELECT, étudiant AS Nom complet, année

DANS Dans ce cas, au lieu de la rubrique « Étudiant », « Nom complet » apparaîtra. Si

V Il y a plus d'un mot dans le titre, il doit être mis entre crochets.

Si vous devez afficher tous les champs d'une table, alors l'argument du champ doit être spécifié avec un astérisque ou sous la forme « Table.* ».

SELECT Enseignants.* FROM Enseignants ;

Les 5 champs de la table « Enseignants » sont renvoyés.

Parfois, vous devez afficher non pas la valeur d'un champ, mais le résultat des calculs sur les valeurs du champ. Dans ce cas, au lieu du nom du champ, vous devez spécifier une expression. Les règles d'écriture des expressions ne diffèrent pas des règles utilisées dans le concepteur de requêtes.

SELECT Avg([Note]) As [Note moyenne] FROM Examens ;

La requête renvoie un seul nombre dans une colonne intitulée « GPA »

– moyenne arithmétique de toutes les notes des élèves. Exemple

SELECT Count([Enseignant]) As [Nombre d'enseignants] FROM Enseignants ;

Sous la rubrique « Nombre d'enseignants » sera placé le nombre de lignes du tableau « Enseignants » dans lesquelles le champ « Enseignant » n'est pas vide (et il n'est toujours pas vide, puisque c'est le champ clé). Il s'agit du nombre d'enseignants, puisque chaque enregistrement possède un numéro d'enseignant différent de celui des autres enseignants.

DANS Les instructions SELECT immédiatement après le mot SELECT peuvent être

un prédicat est écrit - l'un des mots ALL, DISTINCT, DISTINCTROW, TOP N.

Le prédicat ALL entraîne le renvoi de tous les enregistrements, même s'ils contiennent des doublons.

DISTINCT interdit l'affichage des enregistrements contenant des doublons dans les champs sélectionnés. Utiliser le prédicat DISTINCT équivaut à définir la propriété Valeurs uniques dans la feuille de propriétés de Query Builder sur Oui.

DISTINCTROW affecte le résultat uniquement si tous les champs des tables analysées ne sont pas inclus dans la requête. Le prédicat est ignoré si la requête ne contient qu'une seule table. Le prédicat DISTINCTROW exclut les entrées répétées dans leur intégralité. L’utilisation du prédicat DISTINCTROW équivaut à définir la propriété Unique Records dans la feuille de propriétés du Générateur de requêtes sur Oui.

Le prédicat Top N est utilisé pour renvoyer les N enregistrements qui se trouvent au début ou à la fin d'un ensemble, triés par valeurs ascendantes ou décroissantes de ce champ. Le tri est déterminé à l'aide de la clause ORDER BY placée après la clause FROM de l'outil.

Instructions SÉLECTIONNER.

Après les mots ORDER BY, vous devez placer le nom du champ et le mot ASC (croissant, facultatif) ou DESC (décroissant). L'instruction SQL suivante vous permet d'obtenir une liste des 5 meilleurs étudiants.

Performance académique

Tableau 1

Note moyenne

Medvedev

Vorobiev

SÉLECTIONNEZ LE TOP 5 DES Étudiants, [GPA] DE LA PERFORMANCE ACADÉMIQUE

ORDER BY[Score moyen] DESC ;

SELECT DISTINCT [Étudiant] FROM Examens

COMMANDER PAR [Étudiant] ;

La requête renvoie une liste d'étudiants, triés par nom de famille croissant.

Après la clause FROM, l'instruction SELECT peut être écrite

Clause WHERE sous la forme condition WHERE

Une condition est une expression logique évaluée pour chaque enregistrement de la table source.

Si la condition est vraie, alors l'enregistrement (un ensemble de champs dans la liste des champs de la clause SELECT) est inclus dans le jeu de résultats. Si faux, il n'est pas inclus ;

Groupe SELECT DISTINCT, Étudiant

DE Examens

OÙ Score = 2 ;

Une liste des étudiants ayant échoué est créée. Exemple

OÙ [Position]=”Professeur agrégé” OU [Degré]=”Ph.D. COMMANDER PAR [nom complet] ;

Une liste des enseignants portant le titre académique de professeur agrégé ou le diplôme académique de candidat en sciences techniques est établie. Dans cet exemple, il n'est pas nécessaire d'appliquer un prédicat car les entrées appartiennent à des enseignants différents et les répétitions ne sont pas possibles.

Lors de la sélection d'expressions de chaîne, vous pouvez utiliser l'opérateur de modèle Expression Like, qui vérifie la cohérence du résultat du calcul. expressions de modèle. Le modèle peut utiliser certains caractères ayant des objectifs particuliers :

* n'importe quel nombre de n'importe quels caractères ;

N'importe quel personnage.

DANS les crochets peuvent indiquer la plage dans laquelle le caractère se trouve ou non.

Un personnage allant de A à F inclus. Le caractère [!A-F] n’est pas compris dans la plage A-F.

SELECT [Nom] FROM Enseignants

OÙ [nom complet] COMME « B* » OU [nom complet] COMME « Ш* » ;

DANS l'ensemble résultant comprendra les noms de famille des enseignants commençant par les lettres D ou Ш.

X COMME "P###"

La condition écrite est remplie par des lignes de 5 caractères commençant par la lettre P. Elle doit être suivie d'une lettre comprise entre A et F. La ligne doit se terminer par 3 chiffres.

Si avant chaque exécution d'une requête il est nécessaire de modifier les conditions de sélection, il convient d'utiliser une phrase de la forme :

Textes PARAMÈTRES ;

Textes - une liste de textes séparés par des virgules.

Après chaque texte, le type de données est indiqué, séparé par un espace. Lors de l'exécution d'une requête avec des paramètres, vous n'avez pas besoin d'ouvrir la fenêtre du concepteur de requêtes et de modifier les conditions de sélection. Au lieu de cela, l'utilisateur est invité à saisir la condition souhaitée pendant l'exécution de la requête. Pour chaque texte de la phrase PARAMETRES, une boîte de dialogue apparaît à l'écran, où chaque texte de la description joue le rôle d'un indice - ce qui doit être saisi exactement. Vous devez saisir les données du type spécifié dans la boîte de dialogue.

Si la clause PARAMETERS est utilisée, elle doit apparaître avant toutes les autres instructions, y compris l'instruction SELECT, et se terminer par un point-virgule.

PARAMETRES [Spécifiez la date de début] DATETIME, [Spécifiez la date de fin] DATETIME;

Dans les conditions de sélection des clauses WHERE et HAVING, vous pouvez utiliser du texte sans spécifier de types de données. Lorsque la requête est exécutée, le texte est remplacé par la valeur saisie.

PARAMÈTRES [Spécifier le groupe] TEXTE ; Étudiant SELECT, année

DE Examens

WHERE [Groupe]=[Spécifier le groupe] Et [Item]=1 ;

La requête renvoie les notes des étudiants du groupe spécifié dans la matière avec le code 1.

La clause GROUP BY d'un champ combine un groupe d'enregistrements dans une liste de champs spécifiée en un seul enregistrement. Si l'instruction SELECT contient une fonction de groupe (par exemple, Avg ou Sum), alors la valeur de l'enregistrement dans le jeu de résultats sera calculée : le total du groupe d'enregistrements. Ainsi, par exemple, si dans le tableau « Examens » vous regroupez les enregistrements par matière, alors en utilisant la fonction Avg, vous pouvez obtenir la note moyenne pour la matière. Le regroupement par matière et par groupe vous permettra d'obtenir les notes moyennes des groupes d'étudiants dans la matière spécifiée.

GROUP BY n'est pas une clause obligatoire. S'il est présent dans la clause SELECT, il apparaît après la clause FROM.

Lors de l'utilisation d'une clause GROUP BY, tous les champs de la liste de champs de la clause SELECT doivent être soit inclus dans la liste de champs de la clause GROUP BY, soit utilisés comme arguments de groupe. Fonctions SQL.

Si des fonctions de groupe sont utilisées et que la clause GROUP BY est absente, alors le rôle du groupe est joué par l'ensemble des enregistrements source dans la requête.

SELECT Groupe, Étudiant, Avg([Note]) AS [Score moyen] FROM Examens

GROUPER PAR [Groupe],[Étudiant] ;

Pour chaque élève, la moyenne arithmétique de ses notes est calculée.

La clause facultative HAVING doit apparaître après le GROUP BY. Il détermine lesquels des enregistrements groupés seront inclus dans le jeu de résultats. La condition dans HAVING est une expression logique régulière, tout comme dans WHERE. WHERE et HAVING peuvent être présents simultanément dans une instruction SELECT. Dans ce cas, WHERE filtre les enregistrements avant le regroupement et HAVING filtre les enregistrements regroupés (groupes).

PARAMÈTRES [Entrez le nom de l'élément] TEXTE ; SELECT Groupe, Sujet, Avg([Note]) AS [Score moyen] FROM Examinateurs INNER JOIN Examens

ON Examiners.Subject=Exams.Subject

WHERE [Nom du sujet]=[Entrer le nom du sujet] GROUP BY Groupe, Étudiant

AVOIR Avg([Note])>=4,5 Et Min([Note])>2 ;

La requête renvoie une liste d'étudiants avec leurs scores moyens. La liste comprend les étudiants qui n'ont pas de notes d'échec et dont la moyenne pondérée cumulative est d'au moins 4,5.

L'instruction TRANSFORM est utilisée pour créer une requête croisée. Les données présentées avec une requête croisée sont affichées sous une forme plus compacte qu'avec une requête de sélection. Syntaxe:

TRANSFORMER la fonction SELECT ... ;

Fonction - une fonction SQL de groupe qui traite les données d'une cellule de tableau - un champ ou une expression à partir duquel les valeurs deviennent l'en-tête.

colonnes kami.

Une requête en mode table comporte autant de colonnes que le nombre de valeurs différentes acceptées par le champ. Par exemple, si le champ affiche les noms des mois, il y aura alors jusqu'à 12 colonnes dont les titres sont classés par ordre croissant (août, avril...janvier). Après l'argument field, vous pouvez placer une clause IN(value_list). Les valeurs fixes dans value_list sont séparées par des virgules. Lorsqu'une clause IN est présente, chaque valeur de champ est comparée aux valeurs de value_list. En cas de correspondance, le résultat du calcul de la fonction est affiché dans la colonne correspondante. Les en-têtes fixes qui ne correspondent pas aux données réelles peuvent être utilisés pour créer des colonnes supplémentaires.

L'utilisation de la clause PIVOT équivaut à définir la propriété En-têtes de colonne dans la feuille de propriétés du Générateur de requêtes.


Comparaison de Microsoft Access SQL et ANSI SQL Microsoft Access SQL est principalement ANSI-89 (niveau 1) certaines fonctionnalités ANSI SQL ne sont pas utilisées dans Microsoft Access SQL Microsoft Access SQL utilise des mots réservés et des fonctionnalités non prises en charge par ANSI SQL Dans Access 2000 (MS Jet 4.0) des extensions ont été introduites qui rapprochent le langage de la norme ANSI SQL-92 - le mode est disponible uniquement lors de l'utilisation du fournisseur MS OLE DB pour Jet


Syntaxe de la commande SELECT (Microsoft Access) SELECT [ prédicat ] ( * | table.* | [ table.] champ_1 [, [ table.] champ_2 [,...]]) FROM expression [,...] Clause FROM SELECT liste Champs FROM expression L'expression est une expression qui définit une ou plusieurs tables à partir desquelles les données sont récupérées. Cette expression peut être le nom d'une seule table, le nom d'une requête enregistrée ou le résultat d'une opération INNER JOIN, LEFT JOIN ou RIGHT JOIN. JOINTURE INTÉRIEURE, JOINTURE À GAUCHE, JOINTURE À DROITE.


Arguments de l'instruction SELECT Un prédicat (ALL, DISTINCT, DISTINCTROW ou TOP) est l'une des conditions de sélection. Les prédicats sont utilisés pour limiter le nombre d'enregistrements renvoyés. S'ils sont manquants, le prédicat par défaut est ALL (sélectionne tous les enregistrements qui correspondent aux conditions spécifiées dans l'instruction SQL DISTINCT - exclut les enregistrements contenant des valeurs en double dans les champs sélectionnés). DISTINCTROW - Omet les données basées sur des enregistrements en double entiers plutôt que sur des champs en double individuels. Le prédicat DISTINCTROW est ignoré si la requête contient une seule table ou tous les champs de toutes les tables. TOP n - Renvoie le nombre spécifié d'enregistrements qui se trouvent au début ou à la fin de la plage décrite à l'aide de la clause ORDER BY. SELECT ]] FROM tableau des 5 départements les plus nombreux : SELECT TOP 5 employé.[Code département], Count(employé.nom complet) AS nombre_d'employés FROM employé GROUP BY employé.[code département] ORDER BY Count(employé.nom complet) DESC;


Arguments de l'instruction SELECT Table - le nom de la table dans laquelle les enregistrements doivent être sélectionnés. AVEC OPTION OWNERACCESS - utilisé dans un environnement multi-utilisateurs avec un groupe de travail, pour accorder à l'utilisateur travaillant avec la demande des autorisations qui correspondent aux autorisations du propriétaire de la demande. field_1, field_2 - noms des champs dans lesquels les données doivent être sélectionnées. Si vous incluez plusieurs champs, ils seront récupérés dans l'ordre spécifié. Alias_1, Alias_2 - noms qui deviendront des en-têtes de colonnes au lieu des noms de colonnes d'origine dans le tableau. Expression - les noms d'une ou plusieurs tables contenant les données sélectionnées. Base de données externe - le nom de la base de données qui contient les tables spécifiées par l'argument d'expression, si elles ne figurent pas dans la base de données actuelle. SELECT employé.nom complet, [salaire]*0,5 AS Bonus FROM employé ; SELECT Avg(employee.salary) AS Average_salary FROM employé ;


Traitement conjoint de plusieurs tables SELECT employé.Nom, sujet.[nom court du sujet] FROM employé INNER JOIN (sujet INNER JOIN [propriété des objets] ON sujet.[code sujet] = [propriété des objets].[code discipline] ) ON employé.Code = [propriété de l'article].[code de l'employé];




Entre...Et l'expression 1 ENTRE l'expression 2 ET l'expression 3 (dans Microsoft Access SQL, l'expression 2 peut être supérieure à l'expression 3, mais pas dans ANSI SQL). SELECT employe.nom complet, employe.salary FROM employe WHERE (((employee.salary) Entre 1000 et 2000)); Requête : SELECT employé.nom complet, employé.salaire FROM employé OÙ (((employé.salaire) Entre 2000 et 1000)); ne génère pas d'erreur et donne la même réponse SELECT employé.nom complet, employé.salary FROM employé WHERE (((employé.salaire) 15000)); SELECT employe.nom complet, employe.salary FROM employe WHERE (((employee.salary) Pas entre 1000 et 2000));


Caractères de modèle Divers caractères de modèle sont utilisés avec le prédicat Like. Caractère de modèle MS Access SQL ANSI SQL, un caractère ? _ (trait de soulignement) groupe de caractères * % caractère unique inclus dans la liste_caractères [ liste_caractères] caractère unique manquant non inclus dans la liste_caractères [! liste_caractères] manquant Les deux dernières options sont Access uniquement. Access 2000 en mode ANSI SQL-92 autorise l'utilisation de caractères génériques ANSI. Vous ne pouvez pas mélanger des caractères dans une seule requête SELECT employe.full name FROM employe WHERE (((employee.full name) Like "D*"));


Clause GROUP BY SELECT liste de champs FROM table WHERE Condition de sélection où les champs sont groupés. Les champs sont des noms de champs (jusqu'à 10) utilisés pour regrouper les enregistrements. L'ordre des noms de champs dans l'argument Champs groupés détermine le niveau de regroupement de chacun de ces champs. Utilisez la clause WHERE pour exclure les enregistrements du regroupement et la clause HAVING pour appliquer un filtre aux enregistrements après le regroupement. HAVING Lors de l'utilisation de la clause GROUP BY, tous les champs de la liste de champs de l'instruction SELECT doivent être soit inclus dans la clause GROUP BY, soit utilisés comme arguments d'une fonction d'agrégation SQL. Départements de plus de 5 employés : SELECT collègues[Code du département], Count(nom complet des collègues) AS [Nombre d'employés] FROM collègues GROUP BY collègues[code du département] AVOIR (((Count( nom complet des collègues))>5 )); 5));">




Requête imbriquée. Le prédicat existe. SELECT employé entreprise, Count (employé employé) AS number_certificate_employee FROM employé WHERE (((Existe (SELECT DISTINCT employé entreprise, employé employé FROM employé INNER JOIN instance ON employé employé = employé individuel))False)) GROUP BY entreprise de co-working ; False)) GROUP BY société en copropriété;"> False)) GROUP BY société en copropriété;"> False)) GROUP BY société en copropriété;" title="Requête imbriquée. Le prédicat existe. SELECT co -entreprise appartenant, Count(collaborator) AS number_certificate_collaborator FROM collaborateur WHERE (((Exists (SELECT DISTINCT collaborateur, collaborateur FROM collaborateur INNER JOIN instance ON collaborateur = instance collaborateur))False)) GROUP BY entreprise collaboratrice ;"> title="Requête imbriquée. Le prédicat existe. SELECT employé entreprise, Count (employé employé) AS number_certificate_employee FROM employé WHERE (((Existe (SELECT DISTINCT employé entreprise, employé employé FROM employé INNER JOIN instance ON employé employé = employé individuel))False)) GROUP BY entreprise de co-working ;"> !}








Création d'une sous-requête à l'aide du générateur de requêtes QBE Si vous utilisez une sous-requête pour définir des conditions pour un champ, entrez une instruction SELECT dans la cellule de la ligne Condition de sélection de la colonne de ce champ. L'instruction SELECT doit être placée entre parenthèses.








Suppression d'entrées. Requête SQL (générée) DELETE DISTINCTROW student.full name FROM student WHERE (((student.full name)="Burlak G. N."));


Instruction DELETE Une demande de suppression supprime des enregistrements entiers, pas seulement le contenu des champs spécifiés. Pour supprimer les données d'un champ spécifique, créez une requête de mise à jour d'enregistrement qui remplace les valeurs existantes par des valeurs nulles. Une demande de suppression sans conditions de recherche spécifiées supprimera tous les enregistrements de la table. Contrairement à la commande DROP, la structure de la table et toutes les propriétés sont conservées


Suppression d'entrées. Requête SQL Requête : DELETE * FROM student WHERE student.Full name="Burlak G. N."; donne un résultat similaire.



















35





41