SQL (Structured Query Language) est un langage standardisé pour définir et manipuler des données dans une base de données relationnelle. Conformément au modèle relationnel des données, la base de données est perçue comme un ensemble de tableaux, les relations sont représentés par des valeurs dans les tableaux, et les données sont récupérées en spécifiant un tableau de résultats qui peut être dérivé d'un ou plusieurs tables de base. Les requêtes prennent la forme d'un langage de commande qui vous permet sélectionner, insérer, mettre à jour, trouver l'emplacement des données, etc.
Dans Delphi: TQuery
Si vous allez utiliser SQL dans vos applications, vous vous familiariserez très bien avec TQuery composant. Delphi permet à vos applications d'utiliser directement la syntaxe SQL via le composant TQuery pour accéder aux données des tables Paradox et dBase (à l'aide de SQL local - sous-ensemble de SQL standard ANSI), Bases de données sur le serveur InterBase local et Bases de données sur une base de données distante les serveurs.
Delphi prend également en charge les requêtes hétérogènes sur plusieurs types de serveurs ou de tables (par exemple, les données d'une table Oracle et d'une table Paradox) .TQuery possède une propriété appelée SQL, qui est utilisé pour stocker l'instruction SQL.
TQuery encapsule une ou plusieurs instructions SQL, les exécute et fournit des méthodes par lesquelles nous pouvons manipuler les résultats. Les requêtes peuvent être divisées en deux catégories: celles qui produisent des jeux de résultats (comme SÉLECTIONNER ) et ceux qui ne le font pas (comme un MISE À JOURou INSÉRER déclaration). Utilisez TQuery. Ouvert pour exécuter une requête qui produit un jeu de résultats; utilisez TQuery. ExecSQL pour exécuter des requêtes qui ne produisent pas de jeux de résultats.
Les instructions SQL peuvent être soit statique ou dynamiquec'est-à-dire qu'ils peuvent être définis au moment de la conception ou inclure des paramètres (TQuery. Params) qui varient au moment de l'exécution. L'utilisation de requêtes paramétrées est très flexible car vous pouvez modifier la vue d'un utilisateur et l'accès aux données à la volée au moment de l'exécution.
Toutes les instructions SQL exécutables doivent être préparées avant de pouvoir être exécutées. Le résultat de la préparation est la forme exécutable ou opérationnelle de la déclaration. La méthode de préparation d'une instruction SQL et la persistance de sa forme opérationnelle distinguent le SQL statique du SQL dynamique. Au moment du design, une requête est préparée et exécutée automatiquement lorsque vous définissez requete la propriété Active du composant sur True. Au moment de l'exécution, une requête est préparée avec un appel à Prepare et exécutée lorsque l'application appelle les méthodes Open ou ExecSQL du composant.
Une requête T peut renvoyer deux types d'ensembles de résultats: "vivre"comme avec le composant TTable (les utilisateurs peuvent modifier les données avec des contrôles de données, et lorsqu'un appel à Post se produit, des modifications sont envoyées à la base de données)",lecture seulement"à des fins d'affichage uniquement. Pour demander un jeu de résultats en direct, définissez la propriété RequestLive d'un composant de requête sur True et sachez que l'instruction SQL doit répondre à certaines exigences spécifiques (pas ORDER BY, SUM, AVG, etc.)
Une requête se comporte à bien des égards comme un filtre de table et, à certains égards, une requête est encore plus puissante qu'un filtre car elle vous permet d'accéder à:
- plusieurs tables à la fois ("join" dans SQL)
- un sous-ensemble spécifié de lignes et de colonnes de ses tables sous-jacentes, plutôt que de toujours les renvoyer toutes
Exemple simple
Voyons maintenant un peu de SQL en action. Bien que nous puissions utiliser l'assistant de formulaire de base de données pour créer des exemples SQL pour cet exemple, nous le ferons manuellement, étape par étape:
1. Placez un TQuery, TDataSource, TDBGrid, TEdit et un composant TButton sur la fiche principale.
2. Définissez la propriété DataSet du composant TDataSource sur Query1.
3. Définissez la propriété DataSource du composant TDBGrid sur DataSource1.
4. Définissez la propriété DatabaseName du composant TQuery sur DBDEMOS.
5. Double-cliquez sur la propriété SQL d'une requête TQuery pour lui affecter l'instruction SQL.
6. Pour que la grille affiche les données au moment du design, modifiez la propriété Active du composant TQuery sur True.
La grille affiche les données de la table Employee.db dans trois colonnes (FirstName, LastName, Salary) même si Employee.db a 7 champs et le jeu de résultats est limité aux enregistrements où commence le prénom avec 'R'.
7. Attribuez maintenant le code suivant à l'événement OnClick de Button1.
procédure TForm1.Button1Click (expéditeur: TObject); commencer Query1.Close;{fermez la requête}// attribue une nouvelle expression SQL Query1.SQL.Clear; Query1.SQL.Add ('Sélectionnez EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Salary>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {requête ouverte + données d'affichage}fin;
8. Exécutez votre application. Lorsque vous cliquez sur le bouton (tant que Edit 1 contient une valeur de devise valide), la grille affiche le Champs EmpNo, FirstName et LastName pour tous les enregistrements dont le salaire est supérieur à la devise spécifiée valeur.
Dans cet exemple, nous avons créé une instruction SQL statique simple avec un ensemble de résultats en direct (nous n'avons modifié aucun des enregistrements affichés) uniquement à des fins d'affichage.