Utilisation de la syntaxe SELECT dans ADO
Auteur:Eve Cole
Date de mise à jour:2009-05-30 19:54:37
expression SÉLECTIONNER
Examinons ensuite l'expression SELECT. SELECT est utilisé pour rechercher des enregistrements qui répondent à des conditions spécifiques dans la table. La syntaxe est la suivante :
SELECT [mot clé] { * | nom de la table.* | [nom de la table.] nom du champ 1 [AS alias 1] [, [nom de la table.] nom du champ 2 [AS alias 2] [, ...]]}
FROM expression de table [, ...] [IN table externe]
[OÙ... ]
[REGROUPER PAR... ]
[AYANT...]
[COMMANDER PAR... ]
[AVEC OPTION ACCÈS PROPRIÉTAIRE]
Mot clé : peut être utilisé pour limiter le nombre d'enregistrements renvoyés et peut être défini sur ALL, DISTINCT, DISTINCTROW ou TOP. Si aucun prédicat n'est spécifié, la valeur par défaut est ALL.
* : Sélectionnez tous les champs.
Alias : remplacez le nom du champ d'origine dans le tableau.
Expression de table : un ou plusieurs noms de table séparés par des virgules.
Table externe : si la table n'existe pas dans la table actuelle, le nom de la table contenant la table dans l'opération de table doit être défini.
L'exécution de l'expression SELECT ne modifiera pas les données existantes dans la table.
La syntaxe la plus basique d'une expression SELECT est la suivante :
SELECT * FROM expression de table
Vous pouvez utiliser un astérisque (*) pour sélectionner tous les champs d'une table. Par exemple, l'exemple suivant sélectionne tous les champs de la table [Produit] :
SÉLECTIONNER * DES produits
Lorsqu'un nom de champ contient des espaces ou des signes de ponctuation, il doit être mis entre crochets [ ]. Par exemple:
SELECT [Produits informatiques]
Si le nom du champ dans la clause FROM contient plusieurs tables, vous devez ajouter le nom de la table et l'opérateur point (.) avant le nom du champ, c'est-à-dire nom de la table.nom du champ. Par exemple, l'exemple suivant sélectionne le champ [Prix] de la table [Produit] et le champ [Quantité] de la table [Commande] :
SELECT produit.prix, commande.quantité
DE produits, commandes
OÙ produit.code = commande.code
Lorsque vous utilisez l'objet Recordset, Recordset ne reconnaît pas le format rs (nom de la table. nom du champ), c'est-à-dire que rs ("produit. prix") provoquera une erreur et vous devez utiliser AS pour définir l'alias du champ. nom. Par exemple:
SELECT product.priceAS prix, order.quantityAS quantité
DE produits, commandes
OÙ produit.code = commande.code
De cette façon, vous pouvez utiliser rs (« prix ») et rs (« quantité ») pour lire les données de ses champs.
Syntaxe liée aux expressions SELECT :
Mots-clés : TOUS/ DISTINCT/ DISTINCTROW/ TOP.
OÙ : recherchez les enregistrements de données dans la table FROM qui répondent à des conditions spécifiques. WHERE peut utiliser les opérateurs BETWEEN, LIKE et IN suivants :
Entre...Et : Déterminez si la valeur de l'expression se situe dans la plage spécifiée.
Comme : trouvez des mots-clés correspondants.
Expression IN : portée limitée.
Expression NOT IN : indique qu'elle n'appartient pas à la plage spécifiée.
Clause ORDER BY : vous pouvez définir les champs de tri.
Clause GROUP BY : créez des statistiques sur les résultats de la requête.
Clause HAVING : utilisée dans l'expression SELECT pour filtrer les enregistrements qui ont été des statistiques GROUP BY.
Union : les résultats de plusieurs ensembles de requêtes peuvent être combinés.
JOIN : joint les enregistrements de champ dans deux tables.
Sous-requête : l'expression peut inclure une expression SELECT.
Select...Into : créez une table générée en fonction des résultats de la requête.
Les détails sont les suivants :
Mots-clés ALL/DISTINCT/DISTINCTROW/TOP
Lorsque vous utilisez la requête SELECT, vous pouvez ajouter des mots-clés pour sélectionner les enregistrements interrogés. comme suit:
ALL : renvoie tous les enregistrements.
DISTINCT : lorsqu'il y a des enregistrements en double dans le champ spécifié, un seul enregistrement sera renvoyé et les enregistrements ne seront pas dupliqués.
DISTINCTROW : aucun des enregistrements du champ spécifié ne sera renvoyé s'il y a des doublons.
TOP : renvoie les enregistrements précédents ou les pourcentages d'enregistrements.
La syntaxe est la suivante :
SÉLECTIONNER [TOUS | DISTINCTROW | [TOP n [PERCENT]]]
DE la table
ALL renvoie tous les enregistrements. Lorsqu'aucun mot-clé n'est ajouté, cela a la même signification que l'ajout de ALL et tous les enregistrements seront renvoyés. Par exemple, les deux exemples suivants ont les mêmes résultats d'exécution, renvoyant tous deux tous les enregistrements de la table product :
SÉLECTIONNER TOUS * DES produits
Le résultat de l'exécution est le même que :
SÉLECTIONNER * DES produits
DISTINCT ne sélectionne pas les données en double dans le champ spécifié. Après avoir utilisé DISTINCT, les résultats de la requête répertorieront la valeur des données de chaque champ après SELECT DISTINCT. Si elles sont identiques, un seul enregistrement sera pris. En d'autres termes, il n'y aura pas de duplication de données dans le champ spécifié. Par exemple, certains produits portent le même nom de produit dans la table des produits, et l'expression SQL de DISTINCT ne renverra qu'un seul enregistrement dont le champ contient les mêmes données de nom de produit :
SELECTIONNEZ LE nom du produit DISTINCT FROM le produit
Si vous n'incluez pas DISTINCT, l'exemple de requête ci-dessus renverra plusieurs enregistrements contenant le même nom de produit.
Si plusieurs champs sont spécifiés après la clause SELECT DISTINCT, les valeurs combinées de tous les champs dans les résultats de la requête ne seront pas répétées.
DISTINCTROW ne renvoie pas tous les enregistrements en double du champ spécifié.
TOP n [PERCENT], renvoie les enregistrements précédents ou le pourcentage d'enregistrements. L'ordre de tri peut être spécifié à l'aide de la clause ORDER BY. Par exemple, trouvez les noms des 10 meilleurs étudiants :
SÉLECTIONNER LE TOP 10 Nom
DES étudiants
COMMANDER PAR partitions
Si vous n'incluez pas la clause ORDER BY, la requête renverra 10 enregistrements arbitraires de la table Student.
TOP ne choisit pas entre les mêmes valeurs. Si les 10e et 11e résultats sont identiques, la requête renverra 11 enregistrements.
Vous pouvez utiliser POURCENTAGE pour définir les enregistrements des premiers pourcentages, par exemple, pour trouver les noms des 10 % d'élèves les plus performants :
SÉLECTIONNER LE TOP 10 POUR CENT Nom
DES étudiants
COMMANDER PAR partitions
Regardons un exemple d'utilisation de cette commande SQL dans un programme ASP.
Vous pouvez utiliser Distinct pour rechercher des enregistrements uniques. Par exemple, le programme ASP rs7.asp est le suivant : [Insérer dans le produit (nom de code, nom) Sélectionner le nom de code distinct, nom du produit où nom de code = 'C2000'] Utilisation de Distinct. et Insérer dans, le nouveau nom de code est Enregistrements C2000 :
<%
'Code distinct, le nom détermine uniquement le code, si les noms sont identiques, n'ajoute qu'un enregistrement s'ils sont identiques
sql = "Insérer dans le produit (nom de code, nom) Sélectionnez un nom de code distinct, nom du produit où code = 'C2000'"
Définir a = conn1.Execute(sql)
Définir rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Sélectionnez * à partir du produit où code='C2000'"
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Code</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Nom</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Prix</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantité</FONT></TD>
</TR>
<% Faire sans rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("codename")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("price")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("quantité")%></TD>
</TR>
<%
rs3.MoveNext
Boucle
rs3.Fermer
%>
</TABLE>
OÙ
WHERE recherche les enregistrements de données qui répondent à des conditions spécifiques dans la table FROM. WHERE est utilisé dans les expressions SELECT, UPDATE ou DELETE.
Si la clause WHERE n'est pas spécifiée dans la requête SELECT, toutes les données de la table seront renvoyées. Si vous interrogez plusieurs tables dans SELECT sans utiliser la clause WHERE ou la clause JOIN, le résultat de la requête sera le produit des données de plusieurs tables.
WHERE définit des conditions spécifiques, telles que :
FROM product WHERE Category = 'Ordinateur' : Indique la sélection de [Produit] dont la [Catégorie] est [Ordinateur]
WHERE Prix Entre 1 000 Et 5 000 : Indique que le prix est compris entre 1 000 et 5 000.
Une clause WHERE peut contenir jusqu'à 40 expressions opérationnelles, reliées par des opérateurs logiques tels que AND ou OR.
Lors de la définition de conditions spécifiques, ajoutez différents symboles avant et après selon le type de champ, par exemple :
Texte : Ajoutez des guillemets simples avant et après, par exemple, WHERE catégorie = "Ordinateur".
Chiffres : aucun signe avant et après, tel que WHERE quantité > 100.
Date : ajoutez # signes avant et après, par exemple, WHERE date = #5/15/99#.
WHERE peut utiliser les opérateurs BETWEEN, LIKE et IN suivants.