Structured Query Language ist eine Standard-Datenbanksprache, die zum Erstellen, Verwalten und Abrufen der relationalen Datenbank verwendet wird. Im Folgenden finden Sie einige interessante Fakten über SQL.
- SQL unterscheidet nicht zwischen Groß- und Kleinschreibung. Es wird jedoch empfohlen, Schlüsselwörter (wie SELECT, UPDATE, CREATE usw.) in Großbuchstaben und benutzerdefinierte Dinge (wie Tabellenname, Spaltenname usw.) in Kleinbuchstaben zu verwenden.
- Wir können Kommentare in SQL mit „-“ (doppelter Bindestrich) am Anfang einer beliebigen Zeile schreiben.
- SQL ist die Programmiersprache für relationale Datenbanken (siehe unten) wie MySQL, Oracle, Sybase, SQL Server, Postgre, usw. Andere nicht-relationale Datenbanken (auch NoSQL-Datenbanken genannt) wie MongoDB, DynamoDB usw. verwenden kein SQL
- Obwohl es einen ISO-Standard für SQL gibt, variieren die meisten Implementierungen leicht in der Syntax. So kann es vorkommen, dass Abfragen, die in SQL Server funktionieren, in MySQL nicht funktionieren.
Was ist eine relationale Datenbank?
Relationale Datenbank bedeutet, dass die Daten in Form von Relationen (Tabellen) gespeichert und auch abgerufen werden. Tabelle 1 zeigt die relationale Datenbank mit nur einer Relation namens STUDENT, die ROLL_NO, NAME, ADRESSE, TELEFON und ALTER der Studenten speichert.
STUDENT
ROLL_NO | NAME | ADRESSE | Telefon | Alter |
1 | RAM | DELHI | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9652431543 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | DELHI | 9156768971 | 18 |
TABELLE 1
Dies sind einige wichtige Begriffe, die in Bezug auf die Relation verwendet werden.
Attribut: Attribute sind die Eigenschaften, die eine Relation definieren. z. B.; ROLL_NO, NAME usw.
Tupel: Jede Zeile in einer Relation wird als Tupel bezeichnet. Die obige Relation enthält 4 Tupel, von denen eines wie folgt dargestellt wird:
1 | RAM | DELHI | 9455123451 | 18 |
Der Grad: Die Anzahl der Attribute in der Relation wird als Grad der Relation bezeichnet. Die oben definierte STUDENT-Relation hat den Grad 5.
Kardinalität: Die Anzahl der Tupel in einer Relation wird als Kardinalität bezeichnet. Die oben definierte STUDENT-Beziehung hat die Kardinalität 4.
Spalte: Eine Spalte repräsentiert die Menge der Werte für ein bestimmtes Attribut. Die Spalte ROLL_NO wird aus der Relation STUDENT extrahiert.
ROLL_NO
Die Abfragen zum Umgang mit relationalen Datenbanken lassen sich in folgende Kategorien einteilen:
Data Definition Language: Sie wird verwendet, um die Struktur der Datenbank zu definieren. z.B.; CREATE TABLE, ADD COLUMN, DROP COLUMN und so weiter.
Datenmanipulationssprache: Sie wird verwendet, um Daten in den Relationen zu manipulieren. z.B.; INSERT, DELETE, UPDATE und so weiter.
Data Query Language: Sie wird verwendet, um die Daten aus den Relationen zu extrahieren. z. B.; SELECT
Zunächst betrachten wir also die Datenabfragesprache. Eine allgemeine Abfrage zum Abrufen aus einer relationalen Datenbank lautet:
- SELECT Attribute_List FROM R1,R2….RM
- ];
Der durch Anweisung 1 dargestellte Teil der Abfrage ist obligatorisch, wenn Sie aus einer relationalen Datenbank abrufen wollen. Die darin geschriebenen Anweisungen sind optional. Wir betrachten die mögliche Abfragekombination auf die in Tabelle 1 dargestellte Relation.
Fall 1: Wenn wir die Attribute ROLL_NO und NAME aller Studenten abrufen wollen, lautet die Abfrage:
SELECT ROLL_NO, NAME FROM STUDENT;
ROLL_NO | NAME |
1 | RAM |
2 | RAMESH |
3 | SUJIT |
4 | SURESH |
Fall 2: Wenn wir ROLL_NO und NAME der Schüler abrufen wollen, deren ROLL_NO größer als 2 ist, lautet die Abfrage:
SELECT ROLL_NO, NAME FROM STUDENT WHERE ROLL_NO>2;
ROLL_NO | NAME |
3 | SUJIT |
4 | SURESH |
CASE 3: Wenn wir alle Attribute von Schülern abrufen wollen, können wir anstelle von „alle Attribute“ * schreiben:
SELECT * FROM STUDENT WHERE ROLL_NO>2;
ROLL_NO | NAME | ADRESSE | Telefon | Alter |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
4 | SURESH | DELHI | 9156768971 | 18 |
CASE 4: Wenn wir die Beziehung in aufsteigender Reihenfolge nach ALTER darstellen wollen, können wir die ORDER BY-Klausel wie folgt verwenden:
SELECT * FROM STUDENT ORDER BY AGE;
ROLL_NO | NAME | ADDRESS | PHONE | AGE |
1 | RAM | DELHI | 9455123451 | 18 |
2 | RAMESH | GURGAON | 9652431543 | 18 |
4 | SURESH | DELHI | 9156768971 | 18 |
3 | SUJIT | ROHTAK | 9156253131 | 20 |
Hinweis: ORDER BY AGE ist äquivalent zu ORDER BY AGE ASC. Wenn wir die Ergebnisse in absteigender Reihenfolge des ALTERS abrufen möchten, können wir ORDER BY AGE DESC verwenden.
Fall 5: Wenn wir unterschiedliche Werte eines Attributs oder einer Gruppe von Attributen abrufen wollen, wird DISTINCT wie in verwendet:
SELECT DISTINCT ADDRESS FROM STUDENT;
ADDRESS
DELHI
GURGAON
ROHTAK
Wenn DISTINCT nicht verwendet wird, wird DELHI zweimal in der Ergebnismenge wiederholt. Bevor wir GROUP BY und HAVING verstehen, müssen wir die Aggregationsfunktionen in SQL verstehen.
AGGRATIONSFUNKTIONEN: Aggregationsfunktionen werden verwendet, um mathematische Operationen auf Datenwerten einer Relation durchzuführen. Einige der üblichen Aggregationsfunktionen in SQL sind:
- COUNT: Die Zählfunktion wird verwendet, um die Anzahl der Zeilen in einer Relation zu zählen. z.B.;
SELECT COUNT (PHONE) FROM STUDENT;
ZAEHLEN(TELEFON)
- SUMME: Die Funktion SUMME wird verwendet, um die Werte eines Attributs in einer Relation zu addieren. z.B.;
SELECT SUM (AGE) FROM STUDENT;
SUM(AGE)
Auf die gleiche Weise können auch MIN, MAX und AVG verwendet werden. Wie wir oben gesehen haben, geben alle Aggregationsfunktionen nur 1 Zeile zurück.
AVERAGE: Er gibt die Durchschnittswerte der Tuppel an. Er wird auch als Summe geteilt durch Zählwerte definiert.
Syntax:AVG(Attributname)
OR
Syntax:SUMME(Attributname)/ZAEHLEN(Attributname)
Die oben genannte Syntax liefert ebenfalls den Durchschnittswert der Tuppel.
MAXIMUM:Extrahiert den maximalen Wert aus der Menge der Tupples.
Syntax:MAX(Attributname)
MINIMUM:Extrahiert den minimalen Wert aus der Menge aller Tupples.
Syntax:MIN(Attributname)
GROUP BY: Group by wird verwendet, um die Tupel einer Relation basierend auf einem Attribut oder einer Gruppe von Attributen zu gruppieren. Sie wird immer mit einer Aggregationsfunktion kombiniert, die auf der Gruppe berechnet wird. z.B.;
SELECT ADDRESS, SUM(AGE) FROM STUDENTGROUP BY (ADDRESS);
In dieser Abfrage wird SUM(AGE) berechnet, aber nicht für die gesamte Tabelle, sondern für jede Adresse. d.h.; Summe von AGE für Adresse DELHI(18+18=36) und ähnlich auch für andere Adressen. Die Ausgabe ist:
ADDRESS | SUMME(ALTER) |
DELHI | 36 |
GURGAON | 18 |
ROHTAK | 20 |
Wenn wir versuchen, die unten angegebene Abfrage auszuführen, wird es zu einem Fehler führen, denn obwohl wir SUM(AGE) für jede Adresse berechnet haben, gibt es mehr als 1 ROLL_NO für jede Adresse, die wir gruppiert haben. Sie kann also nicht in der Ergebnismenge angezeigt werden. Wir müssen Aggregatfunktionen auf Spalten nach der SELECT-Anweisung verwenden, um die Ergebnismenge sinnvoll zu nutzen, wenn wir GROUP BY verwenden.
SELECT ROLL_NO, ADDRESS, SUM(AGE) FROM STUDENTGROUP BY (ADDRESS);
Hinweis: Ein Attribut, das nicht Teil der GROUP BY-Klausel ist, kann nicht zur Auswahl verwendet werden. Jedes Attribut, das Teil der GROUP BY-Klausel ist, kann für die Auswahl verwendet werden, aber es ist nicht zwingend erforderlich. Aber wir könnten Attribute, die nicht Teil der GROUP BY-Klausel sind, in einer Aggregatfunktion verwenden.
Quiz zu SQL