SQL oder Shergestellt QSehr gut LSprache ist eine Reihe von Befehlen zum Verwalten relationaler Datenbankoperationen wie Löschen, Erstellen, Aktualisieren, Lesen usw.
SQL ist seit 1987 der internationale Standard für relationale Datenbanken. Es gibt vier Arten von SQL-Befehlen:
- Datendefinitionssprache (DDL) – Diese Befehle definieren die Struktur der Datenbank. Zum Beispiel löschen, umbenennen, ändern und erstellen. Sie wirken sich auf die Datenbankstruktur aus. Beispielsweise das Erstellen einer Datenbank oder das Umbenennen einer Tabelle.
- Datenmanipulationssprache (DML) – Diese Befehle werden verwendet, um mit den Daten zu arbeiten. Zum Beispiel einfügen, auswählen, aktualisieren, löschen. Diese wirken sich nicht auf die Tabellen oder die Datenbankstruktur aus, sondern auf die in den Tabellen vorhandenen Daten. Beispielsweise das Einfügen einer neuen Zeile oder das Aktualisieren eines Werts in der Zeile.
- Transaktionskontrollsprache (TCL) – Diese Befehle steuern die Transaktionsverarbeitung in der Datenbank. Zum Beispiel Rollback, Speichern, Festschreiben. Diese Befehle wirken sich dauerhaft auf die Datenbank aus. Beispielsweise das Zurücksetzen der gesamten Transaktion auf den vorherigen Zustand, selbst wenn ein Prozess fehlschlägt.
- Data Control Language (DCL) – Data Control-Befehle werden verwendet, um Benutzer zu autorisieren und einem Benutzer oder einer Gruppe nur die erforderlichen Berechtigungen zu erteilen. Beispielsweise kann ein Benutzer nur Leseberechtigung haben, während ein anderer über Lese- und Schreibberechtigungen verfügt. Die Zugriffskontrolle erfolgt über die Befehle Grant, Deny und Revoke.
Nachfolgend finden Sie das SQL-Cheat-Sheet mit den nützlichsten Befehlen. Der Spickzettel hilft Ihnen, schnell auf die erforderlichen Befehle mit der richtigen Syntax und dem erwarteten Ergebnis einer Abfrage zu verweisen. In diesem Spickzettel konzentrieren wir uns auf DDL- und DML-Befehle, da die anderen beiden Typen recht einfach zu verwenden sind.
Data Definition and Manipulation Queries
Befehl | Infos | Beispiel |
ADD | Fügt der vorhandenen Tabelle eine Spalte oder Einschränkung (wie angegeben) hinzu. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); |
ALTER TABELLE | Ändert die angegebene Tabelle, um die Spalte einer Tabelle hinzuzufügen, zu aktualisieren oder zu löschen. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
SPALTE ÄNDERN | Ändern Sie den Datentyp der Spalte. Zum Beispiel, um den Typ der Joining_date-Spalte der Employee-Tabelle von varchar2 in datetime zu ändern. | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
Alle | Logischer Operator, der mit SELECT, WHERE und HAVING verwendet wird und wahr zurückgibt, wenn alle Werte die Bedingung der Unterabfrage erfüllen | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = ‘R&D’); |
UND | Logischer Operator, der nur wahr zurückgibt, wenn alle Bedingungen in der WHERE-Klausel erfüllt sind. | SELECT employee_name, salary from employee WHERE city = ‘California’ AND salary > 2000; |
JEDEM | Logischer Operator; gibt true zurück, wenn auch nur einer der Unterabfragewerte die Bedingung in der where-Klausel erfüllt | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = ‘HR’ OR department = ‘R&D’); |
AS | Erstellt einen Alias für die Tabelle oder Spalte bis zum Zeitpunkt der Abfrageausführung, was nützlich ist, wenn der Name mehrfach verwendet wird, insbesondere bei Tabellenverknüpfungen | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
ASC | Gibt die Daten zurück in ascEndreihenfolge, verwendet mit der ORDER BY-Klausel. ORDER BY selbst sortiert die Ergebnisse standardmäßig aufsteigend. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
ZWISCHEN | Um Werte innerhalb eines Bereichs auszuwählen | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
CASE | Besteht aus einer Reihe von Anweisungen; gibt den Wert der Aussage zurück, der wahr ist, WENN keine der Bedingungen erfüllt ist, wird die Bedingung im ELSE-Teil ausgeführt. Wenn es nichts anderes gibt, wird NULL zurückgegeben. | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details; |
DATENBANK ERSTELLEN | Erstellt eine neue Datenbank mit dem angegebenen Namen | CREATE DATABASE movies_development; |
TABELLE ERSTELLEN | Erstellt eine neue Tabelle mit dem angegebenen Tabellennamen und den Spaltennamen und -typen | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
DEFAULT | Legt einen Standardwert für die angegebene Spalte fest, der mit den Befehlen CREATE oder ALTER TABLE verwendet wird | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
LÖSCHEN | Löscht Daten aus der angegebenen Tabelle | DELETE from employee where employee_id = 345; |
DESC | Gibt die Daten in de zurückscEndreihenfolge, verwendet mit der ORDER BY-Klausel. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
DROP-SÄULE | Löscht die angegebene Spalte aus der angegebenen Tabelle. | ALTER TABLE employee DROP COLUMN employee_name; |
DATENBANK VERLIEREN | Löscht die gesamte Datenbank | DROP DATABASE movies_development; |
STANDARD VERLASSEN | Löscht den Standardwert der angegebenen Spalte | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
TROPFENTABELLE | Löscht die angegebene Tabelle | DROP TABLE employee; |
VORHANDEN | Überprüft, ob ein Datensatz in der Unterabfrage vorhanden ist oder nicht, und gibt wahr zurück, wenn ein oder mehrere Ergebnisse gefunden werden. | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
AB | Gibt die Tabelle an, aus der Daten ausgewählt oder gelöscht werden sollen | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
GRUPPIERE NACH | Gruppiert Daten gemäß der angegebenen Spalte, die für Aggregatfunktionen verwendet werden | Zeigen Sie die Anzahl der Mitarbeiter in jedem Land anSELECT COUNT(employee_id), country from employee GROUP BY country; Zeigt die durchschnittlichen Bewertungen der Mitarbeiter jeder Abteilung SELECT AVG(rating), department from employee GROUP BY department; |
IN | Wird verwendet, um mehrere Werte gleichzeitig in einer WHERE-Klausel auszuwählen, anstatt mehrere OR-Bedingungen zu verwenden | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
INDEX | Index macht das Abfragen von Daten effizienter und schneller. Indizes werden normalerweise für Spalten erstellt, die am häufigsten durchsucht werden. | Index erstellen:CREATE INDEX idx_employee ON employee (first_name, last_name); Erstellen Sie einen eindeutigen Index, bei dem Werte nicht dupliziert werden können: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); Index löschen: ALTER TABLE employee DROP INDEX idx_employee; |
INSERT INSERT | Neue Zeile in einer Tabelle hinzufügen | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, ‘Lee Cooper’, 40000, ‘Java’); |
IST NULL | Prüft auf Nullwerte | SELECT employee_id from employee where employee_name IS NULL; |
IST NICHT NULL | Sucht nach Werten, die nicht null sind | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
LIKE | Gibt alle Werte zurück, die einem bestimmten Muster entsprechen | SELECT employee_id, first_name, last_name where first_name LIKE ‘%tony’; |
NICHT WIE | Gibt alle Werte zurück, die nicht mit dem angegebenen Muster übereinstimmen | SELECT employee_id, first_name, last_name where first_name NOT LIKE ‘%tony’; |
OR | Gibt true zurück, wenn eine der Bedingungen in der where-Klausel erfüllt ist | SELECT * from employee where country = ‘India’ OR country = ‘Australia’; |
SORTIEREN NACH | Ordnet die Ergebnisse in aufsteigender Reihenfolge (standardmäßig) oder in der in der Abfrage angegebenen Reihenfolge (ascEnde bzw descEnde) | SELECT employee_name, salary from employee ORDER BY salary DESC; |
REIHENNUM | Gibt die angegebene Anzahl von Zeilen zurück, die in der WHERE-Klausel der Abfrage erwähnt werden | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
SELECT | Wählt die genannten Spalten der Tabelle basierend auf den gegebenen Bedingungen aus. Wenn * angegeben ist, werden alle Spaltenwerte zurückgegeben. | SELECT employee_id from employee; SELECT * from employee; |
AUSWÄHLEN IN | Kopiert Daten aus der Quelltabelle in eine andere Zieltabelle. Sie können alle Spalten (*) oder bestimmte Spalten auswählen. | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
TOP AUSWÄHLEN | Wählt die angegebene Anzahl von Datensätzen aus der Tabelle aus | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
SET | Legt den Wert einer Spalte während eines UPDATE-Vorgangs auf den neu angegebenen Wert fest. | UPDATE employee SET first_name = ‘Tony’ WHERE employee_id = 345; |
ETWAS | Gibt wahr zurück, wenn eine der Bedingungen in der Unterabfrage erfüllt ist. SOME ähnelt dem Befehl ANY. | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = ‘HR’); |
TABELLE KÜRZEN | Löscht Daten aus der Tabelle – denken Sie daran, dass die Tabelle nicht gelöscht wird. | TRUNCATE TABLE log_info; |
UNION | Gibt unterschiedliche Werte aus 2 oder mehr verknüpften Tabellen zurück. Um auch die doppelten Werte zu erhalten, verwenden Sie UNION ALL. | SELECT city from employee UNION SELECT city from office_locations; |
EINZIGARTIG | Fügt der angegebenen Spalte eine eindeutige Einschränkung hinzu, was bedeutet, dass die Spalte keine doppelten Werte haben kann. Kann während Befehlen zum Erstellen oder Ändern von Tabellen verwendet werden. | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
AKTUALISIEREN | Aktualisiert den Wert der angegebenen Spalte mit einem neuen Wert | UPDATE employee SET first_name = ‘Tony’ WHERE employee_id = 345; |
WERTE | Wird mit dem INSERT-Befehl verwendet, um eine neue Zeile mit Werten in die Tabelle einzufügen | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, ‘Lee Cooper’, 40000, ‘Java’); |
WO | Fügt Bedingungen hinzu, um die Ergebnismenge einer Auswahlanweisung zu filtern | SELECT * from employee WHERE salary > 20000; |
Aggregate functions
Aggregatfunktionen sind Datenbearbeitungsbefehle, die mit numerischen Spalten wie int und float arbeiten. Diese sind beim Filtern und Sortieren von Daten auf Datenbankebene selbst hilfreich. Einige häufig verwendete Aggregatfunktionen sind:
FUNKTION | BESCHREIBUNG | BEISPIEL |
AVG | Gibt den Durchschnittswert der angegebenen Spalte zurück | SELECT AVG(marks) from students where subject = ‘English’; |
MIN | Gibt den kleinsten Wert der angegebenen Spalte zurück | SELECT MIN(price) from product WHERE product_category = ‘shoes’; |
MAX | Gibt den größten Wert der angegebenen Spalte zurück | SELECT MAX(quantity), product_name from inventory; |
ANZAHL | Gibt die Anzahl der Zeilen zurück, die die Abfrage erfüllen | Zeigt die Gesamtzahl der Datensätze in der Mitarbeitertabelle an.SELECT COUNT(*) from employee; Zeigen Sie die Anzahl der Mitarbeiter an, deren Gehalt über 20000 liegt SELECT COUNT(*) from employee where salary > 20000; |
SUM | Gibt die Summe der Werte der angegebenen numerischen Spalte zurück | SELECT SUM(marks) from students where subject = ‘English’; |
SQL Joins
SQL-Joins sind sehr wichtig, da sie Daten aus mehreren Tabellen verbinden und filtern. Joins sind etwas schwierig und können unerwartete Ergebnisse liefern, wenn sie nicht richtig ausgeführt werden. Die folgende Tabelle hilft Ihnen, schnell auf die 4 Arten von SQL-Joins zuzugreifen:
JOIN-TYP | BESCHREIBUNG | SYNTAX | BEISPIEL |
Innere Verbindung | Gibt Datensätze zurück, die in den verknüpften Tabellen übereinstimmen; es ist ähnlich wie eine Kreuzung. | SELECT Spalte1, Spalte2… aus Tabelle1 INNER JOIN Tabelle2 auf Tabelle1.SpalteN = Tabelle2.SpalteN; | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
Vollständiger (äußerer) Join | Gibt alle Datensätze zurück, die auf beiden Seiten eine Übereinstimmung aufweisen – links oder rechts. Es ist ähnlich wie bei einer Gewerkschaft. | SELECT Spalte1, Spalte2… aus Tabelle1 KOMPLETTE AUSSENVERBINDUNG Tabelle2 auf Tabelle1.SpalteN = Tabelle2.SpalteN; | select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id; |
Links verbinden | Gibt alle Datensätze aus der linken Tabelle und Datensätze zurück, die den Kriterien in der rechten Tabelle entsprechen | SELECT Spalte1, Spalte2… aus Tabelle1 LEFT JOIN Tabelle2 auf Tabelle1.SpalteN = Tabelle2.SpalteN; | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
Richtig beitreten | Gibt alle Datensätze aus der rechten Tabelle und Datensätze zurück, die den Kriterien der linken Tabelle entsprechen | SELECT Spalte1, Spalte2… aus Tabelle1 RICHTIG BEITRETEN Tabelle2 auf Tabelle1.SpalteN = Tabelle2.SpalteN; | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
Additional resources
SQL ist ein wichtiges Werkzeug für Softwareentwickler, Datenwissenschaftler und Analysten gleichermaßen. Eine praktische Referenz von SQL-Befehlen in Form eines Spickzettels kann Ihnen viel Zeit sparen und Ihnen helfen, die erwartete Ausgabe jedes Schlüsselworts zu verstehen.
Weitere Informationen finden Sie in den folgenden Ressourcen:
Intelligenz: Spickzettel für SQL-Befehle