C# versus SQL
SQL (Structured Query Language) ist auf die Vorläufersprache SEQUEL zurückzuführen (in den 70er Jahren in den IBM-Laboratorien entwickelt) und hat sich als Standardabfragesprache für relationale Datenbanken durchgesetzt. SQL ist zwar standardisiert, doch weichen die Implementierungen in kommerziell verfügbaren Datenbanksystemen sowohl nach "oben" als auch nach "unten" von den Standards ab.
SQL ist eine Programmiersprache der 4. Generation. In einer Sprache der
3. Generation (höhere Programmiersprache, z.B. C#) muss zum Auffinden von Daten genau beschrieben werden, wie
die gewünschten Daten aus einem Datenbestand herauszufinden sind. In
SQL dagegen werden die gesuchten Daten nur über die Beschreibung ihrer
Attributwerte aufgefunden - d. h. man beschreibt, was man wissen möchte -
das „Wie" muss nicht spezifiziert werden. Das Suchen eines bestimmten
Datensatzes im Vergleich mit der Programmiersprache C# soll diesen
Sachverhalt verdeutlichen:
Auszüge aus einem C# - Quellcode
- try
- {
- // Erzeugt ein Objekt der Klasse StreamReader, um eine kommaseparierte Datei zu lesen.
- // using sorgt u.a. für das ordungsgemäße Schließen der Datei.
- using(var sr = new StreamReader("filename.csv"))
- {
- while (!sr.EndOfStream) // solange das Ende der Datei nicht erreicht ist
- {
- var splits = sr.ReadLine().Split(';'); // lese zeilenweise und splitte diese auf
- if (splits[..] == ...) // überprüfen, ob der aktuelle Datensatz
- { // dem gesuchten Datensatz entspricht
- ... // Operationen für den gefundenen Datensatz
- }
- }
- }
- }
- catch (Exception e)
- {
- // Ausgabe, was ev. schief gelaufen ist.
- Console.WriteLine("The file could not be read:");
- Console.WriteLine(e.Message);
- }
SQL-Anweisung
SELECT * FROM Tabelle WHERE BedingungIn der objektorientieren Sprache C# muss genau die Methode beschrieben werden, wie ein Datensatz zu suchen ist (Öffnen der Datei, Lesen eines Satzes, Prüfen, ob der Satz dem gesuchten Satz entspricht, nächsten Datensatz lesen usw.) während es in SQL genügt, anzugeben, „Suche mir alle Datensätze in der Tabelle, für die eine bestimmte Bedingung zutrifft". Die prozedurale Verarbeitung ist satzorientiert, während SQL mengenorientiert arbeitet und als Ergebnis keine, eine oder beliebig viele Zeilen liefert.
SQL - Sprachelemente
Meist werden die Sprachelemente von SQL in zwei bzw. drei Kategorien eingeteilt:• Anweisungen zur Datendefinition (DDL - Data Definition Language)
z. B. Anweisungen
- zur Anlage und Verwaltung von Tabellen
- zur Definition von Domains
- zur Erzeugung von Views
z. B. Anweisungen
- zur Dateneingabe
- zur Datenveränderung
- zur Abfrage von Tabelleninhalten
• DCL (Data Control Language)
Der Sprachbestandteil zur Bestimmung von Zugangs- und Zugriffsrechten wird zum Teil als dritte Kategorie genannt.