Il existe tellement de types différents de produits SQL que vous pouvez simplement vous débarrasser de vos manches et vous lancer sans vous soucier du reste. Mais si vous souhaitez utiliser ASP et SQL en même temps, vous risquez d'avoir le vertige.
MySQL, SQL Server et mSQL sont tous d'excellents outils SQL, mais malheureusement, vous ne pouvez pas les utiliser pour créer des instructions SQL pratiques dans un environnement ASP. Cependant, vous pouvez utiliser vos propres connaissances Access et les compétences Access correspondantes, associées à nos trucs et astuces, je pense que vous serez en mesure d'ajouter avec succès SQL à votre page Web ASP.
1. Instruction SELECTDans le monde de SQL, l'opération la plus élémentaire est l'instruction SELECT. Lors de l'utilisation de SQL directement sous un outil de base de données, de nombreuses personnes seront familiarisées avec les opérations suivantes :
CHOISIR quoi
DE quelleTable
Critères OÙ
L'exécution de l'instruction ci-dessus crée une requête qui stocke ses résultats.
Sur les fichiers de page ASP, vous pouvez également utiliser la syntaxe générale ci-dessus, mais la situation est légèrement différente lors de la programmation en ASP, le contenu de l'instruction SELECT doit être affecté à une variable sous forme de chaîne :
SQL = "SELECT what FROM whichTable WHERE critères"
Bon, maintenant que vous comprenez la façon dont SQL « parle » sous ASP, vous pouvez suivre la même méthode, tant qu'elle répond à vos besoins, les modes de requête SQL traditionnels et les requêtes conditionnelles peuvent s'avérer utiles.
Par exemple, supposons que vous ayez une table de données dans votre base de données nommée Produits et que vous souhaitiez maintenant récupérer tous les enregistrements de cette table. Ensuite vous écrivez le code suivant :
SQL = "SELECT * FROM Produits"
Le code ci-dessus - la fonction de l'instruction SQL est de récupérer toutes les données de la table - après exécution, tous les enregistrements de la table de données seront sélectionnés. Cependant, si vous souhaitez uniquement récupérer une colonne spécifique de la table, telle que p_name. Ensuite, vous ne pouvez pas utiliser le caractère générique *. Vous devez saisir le nom d'une colonne spécifique. Le code est le suivant :
SQL ="SELECT p_name FROM Produits"
Après avoir exécuté la requête ci-dessus, tout le contenu de la colonne p_name de la table Products sera sélectionné.
2. Utilisez la clause WHERE pour définir les conditions de requêteParfois, la récupération de tous les enregistrements de la base de données peut simplement répondre à vos besoins, mais dans la plupart des cas, nous n'avons généralement besoin d'obtenir qu'une partie des enregistrements. Comment devrions-nous concevoir la requête dans ce cas ? Bien sûr, cela demandera un peu plus de réflexion, sans compter que cet article ne veut délibérément pas que vous utilisiez ce jeu d'enregistrements merdique.
Par exemple, si vous prévoyez uniquement de récupérer les enregistrements p_name et que les noms de ces enregistrements doivent commencer par la lettre w, alors vous utiliserez la clause WHERE suivante :
SQL ="SELECT p_name FROM Produits WHERE p_name LIKE 'W%'"
Le mot-clé WHERE est suivi de conditions utilisées pour filtrer les données. À l'aide de ces conditions, seules les données répondant à certains critères seront interrogées. Dans l'exemple ci-dessus, les résultats de la requête obtiendront uniquement les enregistrements p_name dont les noms commencent par w.
Dans l'exemple ci-dessus, la signification du symbole de pourcentage (%) est de demander à la requête de renvoyer toutes les entrées d'enregistrement commençant par la lettre w et suivies de données, voire d'aucune donnée. Par conséquent, lors de l'exécution de la requête ci-dessus, West et Willow seront sélectionnés dans la table Products et stockés dans la requête.
Comme vous pouvez le constater, grâce à une conception soignée de votre instruction SELECT, vous pouvez limiter la quantité d'informations renvoyées dans le jeu d'enregistrements, et un peu plus de réflexion satisfera toujours vos besoins.
Ce n’est que le début de la maîtrise de l’utilisation de SQL. Pour vous aider à maîtriser progressivement l'utilisation complexe des instructions SELECT, examinons les termes standards clés : opérateurs de comparaison. Ces éléments sont souvent utilisés lorsque vous construisez votre propre chaîne SELECT pour obtenir des données spécifiques.
Bases de la clause WHERE
Lorsque vous commencez à créer une clause WHERE, le moyen le plus simple consiste à utiliser les symboles de comparaison standard, qui sont <, <=, >, >=, <> et =. Évidemment, vous comprendrez rapidement la signification et les résultats précis du code suivant :
SELECT * FROM Produits WHERE p_price >= 199,95
SELECT * FROM Produits WHERE p_price <> 19,95
SELECT * FROM Produits WHERE p_version = '4'
Remarque : Vous remarquerez ici que le chiffre 4 dans la dernière phrase d'exemple est entouré de guillemets simples. La raison en est que « 4 » dans cet exemple est un type de texte et non un type numérique. Étant donné que vous placez l'instruction SELECT entre guillemets pour l'attribuer comme valeur à une variable, vous pouvez également utiliser des guillemets dans l'instruction.
opérateur de comparaison
Les opérateurs de comparaison spécifient la plage de contenu des données à extraire de la table. Vous pouvez les utiliser pour créer des filtres afin de restreindre le jeu d'enregistrements aux seules informations qui vous intéressent pour une tâche donnée.
3. COMME, PAS COMME et ENTREVous avez vu l'utilisation de LIKE dans l'exemple ci-dessus de suppression d'enregistrements commençant par w. Le prédicat LIKE est un symbole très utile. Cependant, dans de nombreux cas, son utilisation peut vous fournir trop de données, il est donc préférable d'utiliser votre cerveau pour réfléchir davantage aux données que vous souhaitez obtenir avant de l'utiliser. Supposons que vous souhaitiez extraire un numéro SKU à 5 chiffres commençant par 1 et se terminant par 5, vous pouvez alors utiliser le trait de soulignement (_) au lieu du symbole % :
SQL = "SELECT * FROM Produits WHERE p_sku LIKE '1___5'"
Le trait de soulignement représente n'importe quel caractère. Ainsi, si vous saisissez « 1 _ _ _ 5 », votre recherche sera limitée à 5 chiffres correspondant au modèle spécifique.
Si vous souhaitez faire l'inverse, recherchez toutes les entrées SKU qui ne correspondent pas au modèle « 1_ _ _ 5 ». Ensuite, il vous suffit d'ajouter NOT devant LIKE dans l'exemple d'instruction tout à l'heure.
ENTRE
Supposons que vous souhaitiez récupérer des données dans une certaine plage et que vous connaissiez à l'avance le point de départ et le point final de la plage, alors vous pourriez tout aussi bien utiliser le mot de jugement ENTRE. Supposons maintenant que vous souhaitiez sélectionner des enregistrements compris entre 1 et 10 dans une table donnée. Vous pouvez utiliser BETWEEN comme suit :
…OÙ ID ENTRE 1 ET 10
Ou vous pouvez utiliser les mots de jugement mathématique que vous connaissez déjà :
…OÙ ID >= 1 ET ID >= 10
4. Déclaration syndicaleLes instructions SQL dont nous avons parlé jusqu'à présent sont relativement simples si elles peuvent être interrogées via une boucle de jeu d'enregistrements standard, alors ces instructions peuvent également répondre à des exigences plus complexes. Cependant, pourquoi devez-vous vous en tenir au niveau de base consistant simplement à essayer ? Vous pouvez ajouter d'autres symboles, tels que AND, OR et NOT pour compléter des fonctions plus puissantes.
Prenons l'exemple de l'instruction SQL suivante :
SQL ="SELECT c_firstname, c_lastname, c_email FROM clients OÙ EST c_email
NON NULL ET c_purchase = '1' OU c_purchase = '2' ET c_lastname LIKE
'UN%'"
Sur la base de vos connaissances SQL actuelles, l'exemple ci-dessus n'est pas difficile à expliquer, mais l'instruction ci-dessus ne vous permet pas de voir clairement comment les instructions conditionnelles sont collées dans une seule instruction SQL.
instruction multiligne
Lorsque l'instruction SQL est difficile à comprendre, vous souhaiterez peut-être décomposer l'intégralité de l'instruction en plusieurs lignes de code, puis ajouter progressivement chaque composant de l'instruction de requête en fonction des variables existantes et la stocker dans la même variable :
SQL = "SELECT c_firstname, c_lastname, c_emailaddress, c_phone"
SQL = SQL & " DE clients »
SQL = SQL & " OÙ c_firstname LIKE 'A%' et c_emailaddress NOT NULL"
SQL = SQL & " ORDER BY c_lastname, c_firstname"
À la dernière phrase, la variable SQL contient l'instruction SELECT complète suivante :
"SELECT c_firstname, c_lastname, c_emailaddress, c_phone FROM clients
OÙ c_firstname LIKE 'A%' et c_emailaddress AUCUN ORDRE NULL BY c_lastname,
c_prénom"
Une fois la phrase entière décomposée comme indiqué ci-dessus, elle est évidemment beaucoup plus facile à lire ! Lors du débogage, vous préférerez peut-être saisir quelques caractères supplémentaires pour rendre le programme plus lisible. Mais n'oubliez pas qu'il faut ajouter des espaces avant de fermer les guillemets ou après avoir ouvert les guillemets, afin de vous assurer de ne pas assembler plusieurs mots lorsque les chaînes sont concaténées.
5. Commencez l'exécution
Après avoir appris la structure et le but de l'instruction SELECT, il est temps d'apprendre à l'utiliser. En fonction de l'outil de base de données dont vous disposez, cela peut impliquer d'appuyer sur un bouton indiquant « Go ». Sur une page Web ASP, les instructions SQL peuvent être exécutées immédiatement ou appelées sous forme de procédures stockées.
Une fois que vous avez créé l'instruction SQL, vous devez toujours accéder aux résultats de sa requête. Évidemment, la clé ici est le jeu d'enregistrements ASP. Lorsque vous utilisez un jeu d'enregistrements non SQL, le code permettant de créer le jeu d'enregistrements ressemble généralement à ceci :
Dim objRec
Définir objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "clients", objConn, 0, 1, 2
Si vous êtes familier avec ASP, le code ci-dessus vous sera familier. Vous devez savoir que « clients » désigne le nom d'une table de données dans la base de données que vous ouvrez.
Ouvrir le jeu d'enregistrements
Pour tirer pleinement parti de vos compétences SQL plus familières, vous devrez adapter le jeu d'enregistrements le plus couramment utilisé sur les pages Web ASP classiques :
Dim objRec
Définir objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open SQL, objConn, 0, 1, 2
La seule modification ici concerne objRec.Open, après quoi le nom de la table de données à interroger est remplacé par une variable contenant l'instruction SQL.
L'un des avantages de cette approche est que vous pouvez spécifier le type de curseur (indiqué par 0, 1, 2 ci-dessus).
Exécuter SQL
Vous pouvez créer un jeu d'enregistrements en exécutant une instruction SQL avec une ligne de code compacte. Voici la syntaxe :
Dim objRec
définir objRec = objConn.Execute(SQL)
Dans l'exemple ci-dessus, le SQL que vous voyez est la variable dans laquelle vous stockez votre propre instruction SQL SELECT. Cette ligne de code « exécute » une instruction SQL (ou interroge la base de données), sélectionne les données et stocke les données dans un jeu d'enregistrements, dans ce cas la variable objRec. Le principal inconvénient de cette approche est que vous ne pouvez pas choisir le type de curseur que vous souhaitez utiliser. En revanche, les jeux d'enregistrements sont toujours ouverts avec un curseur vers l'avant.
En raison des curseurs, vous souhaiterez peut-être vous familiariser avec deux méthodes de création d'un jeu d'enregistrements. Exécuter directement la requête permet d'économiser le temps passé à taper des caractères, mais il faut alors utiliser le curseur par défaut, ce qui peut rencontrer des problèmes qui souvent ne fonctionnent pas correctement. Quelle que soit la méthode que vous utilisez, la plus grande différence entre les deux réside dans la simplicité du code. Quels que soient les champs que vous obtenez, vos normes ou la manière dont vous stockez les données, le jeu d'enregistrements de style SQL sera beaucoup plus petit que le jeu d'enregistrements standard ouvert sur ASP, sans parler de sa simplicité d'utilisation. Après tout, en filtrant les données, vous éliminez les tests si-alors fastidieux et les boucles possibles.
Écrire un test SQL
Voici une astuce. De nombreux programmeurs ASP professionnels sont habitués à « écrire » leurs propres instructions SQL lorsqu'ils testent des pages Web. Cela peut vous aider à déboguer votre code car vous pouvez voir la chaîne transmise au serveur pour exécution. Et tout ce que vous avez à faire est d’ajouter Response.WriteyourVariable pour afficher les informations pertinentes à l’écran. Vous devez inclure ces informations lorsque vous soumettez une question relative à SQL au groupe de discussion ASP.
6. Requête de stockageLorsque votre requête est relativement simple, il ne faut pas beaucoup d'efforts pour créer une instruction SQL à partir de zéro à chaque fois. Cependant, la situation est différente avec des requêtes complexes. Repartir de zéro à chaque fois produira de nombreuses erreurs de développement. Par conséquent, une fois que le SQL fonctionne correctement, vous feriez mieux de les enregistrer et de les appeler en cas de besoin. De cette façon, même pour une requête simple, vous pouvez utiliser l'instruction de requête stockée à tout moment.
Supposons que vous deviez faire un rapport hebdomadaire à votre équipe, soulignant les problèmes de support commercial actuels. Ces données doivent être sélectionnées dans votre base de données, et les enregistrements doivent être sélectionnés en fonction de la date et triés en fonction de la catégorie de problèmes de support adoptée par. votre équipe. Une fois que vous avez conçu cette requête, pourquoi auriez-vous besoin de la réécrire chaque semaine ? Au lieu de créer la requête sur votre page HTML, vous devez utiliser votre outil de base de données pour créer la requête et l'enregistrer.
Vous pouvez ensuite utiliser l'attribut ActiveCommand pour insérer la requête dans votre page ASP. Vous penserez peut-être que ce n’est pas intéressant la première fois ou les deux premières fois, mais il ne s’agit en fait que de quelques lignes de code :
Définir objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "nombasededonnées"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
définir objRec = objSQ.Execute
Notez que l'utilisation de adCmdStoredProc signifie que vous avez inclus le fichier adovbs.inc sur la page. Ce fichier définit des constantes Access auxquelles vous pouvez accéder par nom plutôt que par numéro. Incluez simplement le fichier sur la page (<!--#INCLUDE -->), puis vous pourrez utiliser un nom tel que adCmdStoredProc. De cette façon, il vous sera plus facile de comprendre ce que signifie la requête stockée ci-dessus lorsque vous la reverrez ultérieurement.