Es gibt so viele verschiedene Arten von SQL-Produkten, dass Sie vielleicht einfach loslegen und loslegen, ohne sich um den Rest kümmern zu müssen. Wenn Sie jedoch ASP und SQL gleichzeitig verwenden möchten, wird Ihnen möglicherweise schwindelig.
MySQL, SQL Server und mSQL sind hervorragende SQL-Tools, aber leider können Sie sie nicht zum Erstellen praktischer SQL-Anweisungen in einer ASP-Umgebung verwenden. Sie können jedoch Ihre eigenen Access-Kenntnisse und entsprechenden Access-Kenntnisse nutzen, gepaart mit unseren Tipps und Tricks. Ich bin davon überzeugt, dass Sie SQL erfolgreich zu Ihrer ASP-Webseite hinzufügen können.
1. SELECT-AnweisungIn der Welt von SQL ist die SELECT-Anweisung die grundlegendste Operation. Bei der direkten Verwendung von SQL unter einem Datenbanktool sind viele Menschen mit den folgenden Vorgängen vertraut:
WÄHLEN Sie was aus
VON welcherTabelle
WO-Kriterien
Durch die Ausführung der obigen Anweisung wird eine Abfrage erstellt, die ihre Ergebnisse speichert.
Bei ASP-Seitendateien können Sie auch die obige allgemeine Syntax verwenden, die Situation ist jedoch etwas anders. Bei der Programmierung in ASP muss der Inhalt der SELECT-Anweisung einer Variablen als Zeichenfolge zugewiesen werden:
SQL = „SELECT what FROM whichTable WHERE-Kriterien“
Okay, da Sie nun verstanden haben, wie SQL unter ASP „spricht“, können Sie die gleiche Methode anwenden. Solange sie Ihren Anforderungen entspricht, können herkömmliche SQL-Abfragemodi und bedingte Abfragen verwendet werden.
Angenommen, Sie haben in Ihrer Datenbank eine Datentabelle mit dem Namen „Produkte“ und möchten nun alle Datensätze in dieser Tabelle abrufen. Dann schreiben Sie den folgenden Code:
SQL = „SELECT * FROM Products“
Der obige Code – die Funktion der SQL-Anweisung besteht darin, alle Daten in der Tabelle abzurufen – nach der Ausführung werden alle Datensätze in der Datentabelle ausgewählt. Wenn Sie jedoch nur eine bestimmte Spalte aus der Tabelle abrufen möchten, z. B. p_name. Dann können Sie das Platzhalterzeichen * nicht verwenden. Sie müssen den Namen einer bestimmten Spalte eingeben.
SQL = „SELECT p_name FROM Products“
Nach der Ausführung der obigen Abfrage wird der gesamte Inhalt der Spalte p_name in der Tabelle Products ausgewählt.
2. Verwenden Sie die WHERE-Klausel, um Abfragebedingungen festzulegenManchmal reicht es aus, alle Datenbankeinträge abzurufen, aber in den meisten Fällen müssen wir normalerweise nur einen Teil der Datensätze abrufen. Wie soll die Abfrage in diesem Fall gestaltet werden? Natürlich wird es ein wenig mehr Nachdenken erfordern, ganz zu schweigen davon, dass dieser Artikel absichtlich nicht möchte, dass Sie dieses beschissene Recordset verwenden.
Wenn Sie beispielsweise nur p_name-Datensätze abrufen möchten und die Namen dieser Datensätze mit dem Buchstaben w beginnen müssen, verwenden Sie die folgende WHERE-Klausel:
SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"
Dem Schlüsselwort WHERE folgen Bedingungen zum Filtern von Daten. Mithilfe dieser Bedingungen werden nur Daten abgefragt, die bestimmte Kriterien erfüllen. Im obigen Beispiel erhält das Abfrageergebnis nur p_name-Datensätze, deren Namen mit w beginnen.
Im obigen Beispiel besteht die Bedeutung des Prozentzeichens (%) darin, die Abfrage anzuweisen, alle Datensatzeinträge zurückzugeben, die mit dem Buchstaben „w“ beginnen und auf die beliebige oder gar keine Daten folgen. Daher werden bei der Ausführung der obigen Abfrage West und Willow aus der Produkttabelle ausgewählt und in der Abfrage gespeichert.
Wie Sie sehen, können Sie durch eine sorgfältige Gestaltung Ihrer SELECT-Anweisung die Menge der im Recordset zurückgegebenen Informationen begrenzen, und durch mehr Überlegung werden Ihre Anforderungen immer erfüllt.
Dies ist nur der Anfang der Beherrschung der Verwendung von SQL. Um Ihnen dabei zu helfen, die komplexe Verwendung von SELECT-Anweisungen schrittweise zu beherrschen, werfen wir einen Blick auf die wichtigsten Standardbegriffe: Vergleichsoperatoren. Diese Dinge werden häufig verwendet, wenn Sie Ihre eigene SELECT-Zeichenfolge erstellen, um bestimmte Daten zu erhalten.
Grundlagen der WHERE-Klausel
Wenn Sie mit der Erstellung einer WHERE-Klausel beginnen, ist es am einfachsten, die Standardvergleichssymbole zu verwenden: <, <=, >, >=, <> und =. Natürlich werden Sie die Bedeutung und die spezifischen Ergebnisse des folgenden Codes schnell verstehen:
SELECT * FROM Products WHERE p_price >= 199,95
SELECT * FROM Products WHERE p_price <> 19,95
SELECT * FROM Products WHERE p_version = '4'
Hinweis: Sie werden hier feststellen, dass die Zahl 4 im letzten Beispielsatz in einfache Anführungszeichen gesetzt ist. Der Grund dafür ist, dass „4“ in diesem Beispiel ein Texttyp und kein numerischer Typ ist. Da Sie die SELECT-Anweisung in Anführungszeichen setzen, um sie einer Variablen als Wert zuzuweisen, können Sie innerhalb der Anweisung auch Anführungszeichen verwenden.
Vergleichsoperator
Vergleichsoperatoren geben den Inhaltsbereich der aus der Tabelle abzurufenden Daten an. Sie können sie zum Erstellen von Filtern verwenden, um das Recordset auf die Informationen einzugrenzen, die Sie für eine bestimmte Aufgabe benötigen.
3. WIE, NICHT WIE und ZWISCHENSie haben die Verwendung von LIKE im obigen Beispiel zum Entfernen von Datensätzen gesehen, die mit w beginnen. Das LIKE-Prädikat ist ein sehr nützliches Symbol. In vielen Fällen erhalten Sie jedoch durch die Verwendung zu viele Daten. Daher ist es am besten, Ihr Gehirn zu nutzen, um mehr darüber nachzudenken, welche Daten Sie erhalten möchten, bevor Sie es verwenden. Angenommen, Sie möchten eine 5-stellige SKU-Nummer extrahieren, die mit 1 beginnt und mit 5 endet, dann können Sie den Unterstrich (_) anstelle des %-Symbols verwenden:
SQL = "SELECT * FROM Products WHERE p_sku LIKE '1___5'"
Der Unterstrich steht für ein beliebiges Zeichen. Wenn Sie also „1 _ _ _ 5“ eingeben, wird Ihre Suche auf 5 Ziffern beschränkt, die dem spezifischen Muster entsprechen.
Wenn Sie das Gegenteil tun möchten, suchen Sie alle SKU-Einträge, die nicht dem Muster „1_ _ _ 5“ entsprechen. Dann müssen Sie im Anweisungsbeispiel gerade nur NOT vor LIKE hinzufügen.
ZWISCHEN
Angenommen, Sie möchten Daten innerhalb eines bestimmten Bereichs abrufen und kennen den Start- und Endpunkt des Bereichs im Voraus. Dann können Sie genauso gut das Beurteilungswort BETWEEN verwenden. Nehmen wir nun an, dass Sie Datensätze im Bereich zwischen 1 und 10 in einer bestimmten Tabelle auswählen möchten. Sie können BETWEEN wie folgt verwenden:
…WO ID ZWISCHEN 1 UND 10
Oder Sie können die mathematischen Urteilswörter verwenden, mit denen Sie bereits vertraut sind:
…WO ID >= 1 UND ID >= 10
4. Erklärung der GewerkschaftDie bisher besprochenen SQL-Anweisungen sind relativ einfach. Wenn sie über eine Standard-Recordset-Schleife abgefragt werden können, können diese Anweisungen auch einige komplexere Anforderungen erfüllen. Aber warum muss man sich auf das Grundniveau beschränken und es einfach ausprobieren? Sie können weitere Symbole wie UND, ODER und NICHT hinzufügen, um leistungsfähigere Funktionen auszuführen.
Nehmen Sie als Beispiel die folgende SQL-Anweisung:
SQL ="SELECT c_firstname, c_lastname, c_email FROM customer WHERE c_email IS
NICHT NULL UND c_purchase = '1' ODER c_purchase = '2' UND c_lastname LIKE
'A%'"
Basierend auf Ihren aktuellen SQL-Kenntnissen ist das obige Beispiel nicht schwer zu erklären, aber die obige Anweisung ermöglicht es Ihnen nicht klar zu erkennen, wie die bedingten Anweisungen in einer einzigen SQL-Anweisung zusammengefügt werden.
mehrzeilige Anweisung
Wenn die SQL-Anweisung schwer zu verstehen ist, möchten Sie möglicherweise die gesamte Anweisung in mehrere Codezeilen zerlegen und dann schrittweise jede Komponente der Abfrageanweisung basierend auf den vorhandenen Variablen hinzufügen und in derselben Variablen speichern:
SQL = „SELECT c_firstname, c_lastname, c_emailaddress, c_phone“
SQL = SQL & „VON Kunden“
SQL = SQL & " WHERE c_firstname LIKE 'A%' and c_emailaddress NOT NULL"
SQL = SQL & " ORDER BY c_lastname, c_firstname"
Im letzten Satz enthält die SQL-Variable die folgende vollständige SELECT-Anweisung:
„SELECT c_firstname, c_lastname, c_emailaddress, c_phone FROM customer.“
WHERE c_firstname LIKE 'A%' and c_emailaddress NO NULL ORDER BY c_lastname,
c_vorname"
Nachdem der ganze Satz wie oben gezeigt zerlegt wurde, ist er offensichtlich viel einfacher zu lesen! Beim Debuggen möchten Sie möglicherweise lieber ein paar Zeichen mehr eingeben, um das Programm besser lesbar zu machen. Sie müssen jedoch bedenken, dass Sie vor dem Schließen oder nach dem Öffnen der Anführungszeichen Leerzeichen hinzufügen müssen, um sicherzustellen, dass Sie beim Verbinden der Zeichenfolgen nicht mehrere Wörter zusammenfügen.
5. Starten Sie die Ausführung
Nachdem Sie die Struktur und den Zweck der SELECT-Anweisung kennengelernt haben, ist es an der Zeit, zu lernen, wie man sie verwendet. Abhängig von dem Ihnen zur Verfügung stehenden Datenbanktool kann dies bedeuten, dass Sie eine Schaltfläche mit der Aufschrift „Los“ drücken müssen. Auf einer ASP-Webseite können SQL-Anweisungen sofort ausgeführt oder als gespeicherte Prozeduren aufgerufen werden.
Nachdem Sie die SQL-Anweisung erstellt haben, müssen Sie immer noch auf die Abfrageergebnisse zugreifen. Offensichtlich ist hier der ASP-Recordset der Schlüssel. Bei Verwendung eines Nicht-SQL-Recordsets sieht der Code zum Erstellen des Recordsets normalerweise so aus:
Dim objRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open „Kunden“, objConn, 0, 1, 2
Wenn Sie mit ASP vertraut sind, wird Ihnen der obige Code bekannt sein. Sie sollten wissen, dass „Kunden“ den Namen einer Datentabelle in der Datenbank bezeichnet, die Sie öffnen.
Datensatz öffnen
Um Ihre vertrauteren SQL-Kenntnisse optimal nutzen zu können, müssen Sie das auf regulären ASP-Webseiten am häufigsten verwendete Recordset anpassen:
Dim objRec
Setze objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open SQL, objConn, 0, 1, 2
Die einzige Änderung erfolgt hier in objRec.Open, wonach der Name der abzufragenden Datentabelle durch eine Variable ersetzt wird, die die SQL-Anweisung enthält.
Einer der Vorteile dieses Ansatzes besteht darin, dass Sie den Cursortyp angeben können (oben als 0, 1, 2 dargestellt).
SQL ausführen
Sie können ein Recordset erstellen, indem Sie eine SQL-Anweisung mit einer kompakten Codezeile ausführen. Hier ist die Syntax:
Dim objRec
set objRec = objConn.Execute(SQL)
Im obigen Beispiel ist das angezeigte SQL die Variable, in der Sie Ihre eigene SQL-SELECT-Anweisung speichern. Diese Codezeile „führt“ eine SQL-Anweisung aus (oder fragt die Datenbank ab), wählt Daten aus und speichert die Daten in einem Recordset, in diesem Fall der Variablen objRec. Der Hauptnachteil dieses Ansatzes besteht darin, dass Sie den Cursortyp, den Sie verwenden möchten, nicht auswählen können. Im Gegensatz dazu werden Recordsets immer mit einem Vorwärtscursor geöffnet.
Aufgrund der Cursor sollten Sie sich möglicherweise mit zwei Methoden zum Erstellen eines Recordsets vertraut machen. Das direkte Ausführen der Abfrage spart Zeit für die Eingabe von Zeichen, muss dann aber den Standardcursor verwenden, was zu Problemen führen kann, die häufig nicht ordnungsgemäß funktionieren. Unabhängig davon, welche Methode Sie verwenden, besteht der größte Unterschied zwischen den beiden einfach darin, ob der Code prägnant ist oder nicht. Unabhängig davon, welche Felder Sie erhalten, welche Standards Sie haben oder wie Sie die Daten speichern, ist das Recordset im SQL-Stil viel kleiner als das in ASP geöffnete Standard-Recordset, geschweige denn einfacher zu bedienen. Denn durch die Filterung der Daten entfallen zeitraubende Wenn-Dann-Tests und mögliche Schleifen.
Schreiben Sie Test-SQL
Hier ist ein Trick. Viele professionelle ASP-Programmierer sind es gewohnt, beim Testen von Webseiten ihre eigenen SQL-Anweisungen zu „schreiben“. Dies kann Ihnen beim Debuggen Ihres Codes helfen, da Sie sehen können, wie die Zeichenfolge zur Ausführung an den Server übergeben wird. Und alles, was Sie tun müssen, ist Response.WriteyourVariable hinzuzufügen, um die relevanten Informationen auf dem Bildschirm anzuzeigen. Sie sollten diese Informationen angeben, wenn Sie eine SQL-bezogene Frage an die ASP-Diskussionsgruppe senden.
6. SpeicherabfrageWenn Ihre Abfrage relativ einfach ist, erfordert es nicht viel Aufwand, jedes Mal eine SQL-Anweisung von Grund auf zu erstellen. Bei komplexen Abfragen ist die Situation jedoch anders, da es zu vielen Entwicklungsfehlern kommt. Sobald die SQL-Anweisungen reibungslos laufen, sollten Sie sie daher besser speichern und bei Bedarf aufrufen. Auf diese Weise können Sie auch für eine einfache Abfrage jederzeit die gespeicherte Abfrageanweisung verwenden.
Angenommen, Sie müssen Ihrem Team wöchentlich einen Bericht über die aktuellen Supportprobleme Ihres Unternehmens vorlegen. Diese Daten müssen aus Ihrer Datenbank ausgewählt werden, und die Datensätze müssen nach Datum ausgewählt und nach der von Ihnen gewählten Supportproblemkategorie sortiert werden Team. . Warum sollten Sie diese Abfrage nach dem Entwurf jede Woche neu schreiben? Anstatt die Abfrage auf Ihrer HTML-Seite zu erstellen, sollten Sie Ihr Datenbanktool verwenden, um die Abfrage zu erstellen und zu speichern.
Anschließend können Sie das ActiveCommand-Attribut verwenden, um die Abfrage in Ihre ASP-Seite einzufügen. Beim ersten oder zweiten Mal denken Sie vielleicht, dass es nicht interessant ist, aber eigentlich sind es nur ein paar Codezeilen:
Setze objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "Datenbankname"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
set objRec = objSQ.Execute
Beachten Sie, dass die Verwendung von adCmdStoredProc bedeutet, dass Sie die Datei adovbs.inc auf der Seite eingebunden haben. Diese Datei definiert Access-Konstanten, auf die Sie über den Namen und nicht über die Nummer zugreifen können. Fügen Sie einfach die Datei auf der Seite ein (<!--#INCLUDE -->) und verwenden Sie dann einen Namen wie „adCmdStoredProc“. Auf diese Weise können Sie leichter verstehen, was die oben gespeicherte Abfrage bedeutet, wenn Sie sie in Zukunft sehen.