Was ist SQL?
Was ist SQL? SQL steht für Structured Anfrage Language. Anwendungsentwickler, Berichterstatter und BI-Fachleute verwenden SQL zum Einfügen, Abrufen, Aktualisieren und Löschen von Daten in Datenbanken. IBM entwickelte SQL ursprünglich in seinen Santa Teresa Labors in San Jose, Kalifornien.
Was ist SQL und wie funktioniert es?
SQL (ausgesprochen "see-qu-el") ist eine prozedurale Sprache, die häufig über nicht standardisierte prozedurale Erweiterungen verfügt. Zu den SQL-Standardisierungsgremien gehört das ANSI (American National Standards Institute), und es ist die Standardsprache für relationale Datenbankmanagementsysteme. SQL wird hauptsächlich zur verwalten Datenbanken verwendet, die dem relationalen Modell entsprechen und von einem RDBMS Relational Database Management System) verwaltet werden. Die SQL-Sprache verwendet einen Interpreter zum Parsen der Anweisung. Die Ergebnisse des Parse-Schrittes, der syntaktische Fehler identifiziert, werden an den Datenbankoptimierer weitergeleitet. Der Optimierer erstellt einen Anfrage , d. h. eine Reihe von Anweisungen, die angeben, wie die Datenbankmaschine die Anweisung optimal ausführen wird. Der Anfrage gibt an, welche Schlüssel verwendet werden, um Zwischenergebnismengen zu erhalten, und wie diese zusammengeführt und sortiert werden, um die Ergebnismenge zu erhalten, die an die aufrufende Anwendung zurückgegeben wird.
Wofür wird SQL verwendet?
SQL ermöglicht Anwendungen die Interaktion mit einer Datenbank. Ein Nutzer greift in der Regel auf eine Sammlung von Datenbankobjekten zu, zu denen Tabellen, Ansichten und Indizes gehören. Ein Tabellenobjekt in einer relationalen Datenbank besteht aus logischen Zeilen und Spalten. Einige RDBMS speichern Tabellen als Zeilen, bekannt als Zeilenspeicher, während andere Spalten als Spaltenspeicher speichern können. In beiden Fällen arbeitet die Anwendung auf Zeilenbasis, unabhängig vom Speicherformat.
Die Anweisung SELECT CUSTOMER-NAME FROM CUSTOMERS WHERE CUSTOMER-ID =10; holt die Kundennamen, deren CUSTOMER-ID 10 ist, aus der Tabelle CUSTOMERS. Wenn die Tabelle eine Spalte STATE enthält, werden mit der folgenden SQL-Anweisung nur die Kunden in Nevada abgerufen:
SELECT * FROM KUNDEN WO STAAT = 'NV';
Mehrere Tabellen können miteinander verbunden werden, indem sie gemeinsame Spalten haben. Diese Spalten können indiziert werden, um einen schnelleren Zugriff zu ermöglichen, oder einfach vom RDBMS vollständig durchsucht werden, wenn sie nicht zu groß sind.
Tabellen können zur Ausführungszeit logisch verbunden werden, und die Art der Verbindung kann in SQL ausgedrückt werden.
Im Folgenden sind die Arten von Joins aufgeführt, bei denen links und rechts die Reihenfolge der in der SELECT-Anweisung genannten Tabellen ist:
INNER JOIN: Diese Verknüpfung gibt die Datensätze zurück, deren Werte in beiden Tabellen übereinstimmen.
FULL JOIN: Diese Verknüpfung gibt alle Datensätze zurück, die entweder in der linken oder in der rechten Tabelle eine Übereinstimmung aufweisen.
LEFT JOIN: Diese Art der Verknüpfung gibt Datensätze aus der linken Tabelle zusammen mit den Datensätzen, die die Bedingung erfüllen, aus der rechten Tabelle zurück.
RIGHT JOIN: Diese Art der Verknüpfung liefert Datensätze aus der rechten Tabelle zusammen mit den Datensätzen, die die Bedingung aus der linken Tabelle erfüllen.
Tabellen können durch Beziehungen zwischen Primär- und Fremdschlüsselspalten miteinander verbunden sein. Eine Kundentabelle kann zum Beispiel einen Primärschlüssel mit der Kunden-ID haben. Eine Tabelle "Aufträge", die eine Spalte "Kunden-ID" enthält, wird als Fremdschlüssel in dieser Tabelle bezeichnet.
Primärschlüssel sind in der Regel indiziert und enthalten eindeutige Werte.
Anwendungen verwenden SQL zum Abrufen und Einfügen von Daten aus Datenbanken, auch aus verteilten Datenbanken.
Im Folgenden finden Sie einige Beispiele für SQL-Anweisungen:
- SELECT - ruft Daten aus einer Tabelle oder Ansicht ab
- CREATE TABLE - wird verwendet, um eine Tabelle mit Daten zu erstellen
- INSERT - wird verwendet, um neue Zeilen in eine Tabelle einzufügen
- UPDATE - wird verwendet, um Änderungen an Daten in einer Datenbanktabelle vorzunehmen
- DELETE - wird verwendet, um Datenzeilen zu entfernen
- GRANT - wird verwendet, um Benutzern das Recht zu geben, Datenbankobjekte wie Tabellen einzusehen oder zu ändern
- REVOKE - wird verwendet, um Berechtigungen von Benutzern oder Benutzergruppen zu entfernen
- ALTER - ermöglicht es dem Nutzer , Spalten eines Objekts hinzuzufügen oder zu entfernen, um die Berechtigungen zu aktualisieren
- DROP TABLE - löscht eine Tabelle
- CREATE INDEX - erstellt einen INDEX, um einen effizienten Zugriff auf Daten mit einem Schlüssel-Wert zu ermöglichen
- TRUNCATE TABLE - ermöglicht es dem Nutzer , den Inhalt einer Tabelle zu leeren
Die SELECT-Anweisung kann Aggregationsfunktionen enthalten, wie z. B.:
- COUNT() - gibt die Gesamtzahl der Zeilen zurück, die die Kriterien der Anweisung erfüllen
- MIN() - gibt den kleinsten Wert in der Ergebnismenge zurück
- MAX() - gibt den größten Wert in der Ergebnismenge zurück
- AVG() - gibt den Durchschnitt der Werte in der Ergebnismenge zurück
- GROUP BY - gruppiert die Ergebnisse nach einem bestimmten Spaltenwert
- ORDER BY - sortiert die Ergebnisse nach der angegebenen Spalte
Kommentare in SQL helfen, Anwendungen zu verstehen und zu pflegen. Nachstehend finden Sie ein- und mehrzeilige Beispiele für Kommentare:
-- Dies ist mein Kommentar /* Dies ist mehrere Zeilen Kommentar */
Es ist hilfreich, ein Datenbankschema mithilfe eines Venn-Diagramms zu visualisieren, insbesondere bei der Verwendung von Mengenoperatoren wie UNION, INTERSECT und EXCEPT in SELECT-Anweisungen.
UNION - Dieser Operator wird verwendet, um die Ergebnismenge von zwei oder mehr SELECT-Anweisungen zu kombinieren.
Beispiel:
SELECT Spalten FROM Tabelle1 UNION SELECT Spalten FROM Tabelle2;
INTERSECT - Diese Klausel wird verwendet, um zwei SELECT-Anweisungen zu kombinieren und die Schnittmenge der Datensätze der beiden SELECT-Anweisungen zurückzugeben.
Beispiel:
SELECT Spalte1 , Spalte2 .... FROM Tabellenname WHERE Bedingung INTERSECT SELECT Spalte1, Spalte2 .... FROM Tabellenname WHERE Bedingung
EXCEPT - Dieser Operator gibt diejenigen Zeilen zurück, die von der ersten SELECT-Operation zurückgegeben werden und von der zweiten SELECT-Operation nicht zurückgegeben werden.
Beispiel:
SELECT Spaltenname FROM Tabellenname EXCEPT SELECT Spaltenname FROM Tabellenname;
Was ist eine Datenbank in SQL?
Auf einer hohen Ebene besteht eine relationale Datenbank aus einem Speicher (in der Regel Dateien) und einer Reihe von Prozessen, die mit Anwendungssitzungen verbunden sind, die SQL-Anfragen an den RDBMS senden, und der Server sendet Datensätze oder Nachrichten zurück. Die SQL-Anweisung SELECT * FROM EMP; würde zum Beispiel alle Zeilen der Tabelle EMP zurückgeben. Die Erstellung eines Datenbankschemas beginnt in der Regel mit einem Entwurfsprozess, in dem alle an der Anwendung beteiligten Entitäten in einer Weise gezeichnet und verbunden werden, die ihre Beziehungen verdeutlicht.
Wenn Sie eine Personalanwendung erstellen, die Mitarbeiter und Abteilungen verfolgt, zeichnen Sie ein Feld, das das Objekt der Abteilung darstellt, und ein zweites Feld, das die Mitarbeiter darstellt. Als Nächstes würden Sie eine Linie zeichnen, die sie mit einer einzelnen Linie am Ende der Abteilung und drei Linien (wie in einem Hahnenfuß) am Ende der Box der Mitarbeiter verbindet. Sie könnten die Verbindung "arbeitet in" nennen, um anzuzeigen, dass viele Mitarbeiter in einer Abteilung arbeiten. Durch einen Prozess namens Normalisierung wird der Entwurf optimiert.
Da Sie nun wissen, welche Tabellen Sie benötigen, können Sie entscheiden, welche Attribute Sie über die Entitäten verfolgen wollen und welche Indizes erstellt werden müssen. Die Abteilungstabelle kann eine Abteilungsnummer enthalten, die als Primärschlüssel dienen kann, und die Mitarbeitertabelle könnte eine Mitarbeiternummer als Primärindexschlüssel haben. Eine Tabelle kann mehrere Indizes haben, so dass es auch sinnvoll ist, die Mitarbeiter nach Namen zu indizieren, da auf diese Weise häufig auf Mitarbeiterinformationen zugegriffen wird.
Der nächste Schritt ist die Erstellung eines Datenbankschemas. Jedes Tabellenobjekt kann mit einer SQL-Anweisung CREATE TABLE erstellt werden, die den Tabellennamen, die Spaltennamen, die Datentypen und die Längen angibt. Datenbanken werden in der Regel durch das Laden von Daten aus Flat Files oder mit einem ETL-Tool (Extract, Transform, Load) befüllt, das die entsprechenden INSERT-Anweisungen generiert.
Anwendungen ermöglichen es den Benutzern, Daten mit UPDATE-Anweisungen zu ändern und Zeilen mit DELETE-Anweisungen zu löschen. Die RDBMS kümmert sich um die Aktualisierung des Index und stellt sicher, dass Beziehungen zwischen Tabellen, wie z. B. referentielle Beschränkungen, durchgesetzt werden, um die Integrität der Datenbank zu wahren.
Ein Datenbankadministrator (DBA) verwendet Anweisungen wie DROP TABLE, TRUNCATE TABLE, CREATE INDEX und CREATE TABLE in einer Untergruppe von SQL, die als Data Manipulation Language (DML) bekannt ist, um die Struktur des Datenbankschemas zu ändern. Glücklicherweise verfügen die meisten modernen RDBMS , ob vor Ort oder das Actian Cloud SaaS-Angebot, über eine ausgezeichnete Nutzer (UI), die das Schreiben von SQL/DML-Abfragen vereinfacht.
Sobald die Datenbank mit Daten gefüllt ist, können die Geschäftsanwendungen darauf zugreifen.
Was ist SQL und Beispiele?
Wir haben besprochen, wie Datenbanken erstellt und verwendet werden. Sehen wir uns nun einige Beispiel-SQL-Anweisungen an.
Nicht alle Datenbanken verwenden einen CREATE DATABASE-Befehl. Ingres zum Beispiel hat eine Befehlszeilenmethode, die wie folgt heißt:
createdb -e mydb
Beispiel Oracle:
CREATE DATABASE mynewdb Nutzer SYS IDENTIFIED BY sys_password Nutzer SYSTEM IDENTIFIED BY system_password UMFANGSVERWALTUNG LOKAL DEFAULT TEMPORÄRER TABLESPACE temp UNDO TABLESPACE undotbs1 DEFAULT TABLESPACE users;
Was ist SQL Server?
SQL Server hat seinen Ursprung in Sybase. Microsoft lizenzierte Sybase, als es mit NT auf den PC-Server-Markt ging, um mit Produkten wie Novell Netware und SCO Unix zu konkurrieren, die auf Intel x86-basierter Hardware liefen.
SQL Server verfügt über eine grafische Benutzeroberfläche, die das Einrichten und Warten erleichtert. Die On-Premises-Version von SQL Server unterstützt Cluster nur für die Ausfallsicherung, nicht für die Skalierbarkeit.
Nachfolgend finden Sie ein Beispiel für die Erstellung einer SQL Server-Datenbank:
USE master; GO -- Abrufen des SQL Server-Datenpfads. DECLARE @data_path nvarchar(256); SET @daten_pfad = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); -- Führen Sie die Anweisung CREATE DATABASE aus. EXECUTE ('CREATE DATABASE FileStreamDB ON PRIMARY (NAME = FileStreamDB_data ,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf'' ,SIZE = 10MB,MAXSIZE = 50MB,FILEGROWTH = 15%), FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT (NAME = FSPhotos FILENAME = ''C:MeinFSOrdnerFotos'' , MAXSIZE = 5000 MB), (NAME = FSPhotos2 , FILENAME = ''D:MeinFSOrdnerFotos'' , MAXSIZE = 10000 MB ), FILEGROUP FileStreamResumes CONTAINS FILESTREAM (NAME = FileStreamResumes ,FILENAME = ''C:MyFSfolderResumes'') LOG ON (NAME = FileStream_log ,FILENAME = ''' + @data_path + 'FileStreamDB_log.ldf'' ,SIZE = 5MB ,MAXSIZE = 25MB ,FILEGROWTH = 5MB)'); GO
Was ist SQL in DBMS?
Wie wir oben gesehen haben, wird SQL verwendet, um mit Anwendungen auf Datensätze in einem RDBMS zuzugreifen und die Datenbank verwalten . Mit dem ALTER-Befehl können Sie Objekte nach ihrer Erstellung ändern. Mit dem ALTER-Befehl können Sie einer Tabelle Spalten hinzufügen oder ihren Datentyp ändern (wenn sie nicht ausgefüllt ist).
Ein EXPLAIN PLAN gibt Aufschluss darüber, was ein RDBMS mit einer SQL-Anfrage macht. Er wird von Entwicklern und DBAs verwendet, um SQL-Anweisungen feinabstimmen . Ein erfahrener Performance Tuning wird nach den richtigen Indizes suchen, die verwendet werden. Zu den Informationen, die ein Ausführungsplan liefert, gehört, ob ein Clustered Index Scan durchgeführt wird, wann Sortieroperatoren verwendet werden, die Richtung des Datenflusses von Sortieroperatoren und wann Select-Operatoren verwendet werden.
Frühe Datenbanken, die einen heuristischen Optimierer verwendeten, konnten sich an der Art und Weise orientieren, wie eine SQL-Anweisung geschrieben wurde, um den Ausführungspfad zu optimieren. Moderne Datenbanken verwenden einen kostenbasierten Ansatz zur feinabstimmen Anweisungen. Datenbanken pflegen Metadaten über die gespeicherten Daten, um zu entscheiden, wie selektiv sie sind und wie groß ihr Volumen ist, um zu sehen, wie der Datenfluss optimiert werden kann. Wenn beispielsweise Zwischenergebnisse zusammengeführt werden, ist es sinnvoll, das kleinere Ergebnis in die größeren Daten zu verschieben, was in einer verteilten oder geclusterten Datenbankarchitektur wichtig ist.