Uncategorized

SQL: Alles, was Sie wissen müssen

Kollationierung und SQL

Die Geschichte von SQL

Das IBM Santa Teresa Lab veröffentlichte 1970 seinen Entwurf für ein Relational Database Management System RDBMS) mit dem Namen System R, das von Edgar Frank Codd verfasst wurde. Das Datenbankschema umfasste mehrere zusammenhängende Tabellen, die aus Zeilen und Spalten bestanden. Die Tabellen wurden anfangs mit Hilfe einer Form der relationalen Algebra bearbeitet und abgefragt. Donald Chamberlin und Raymond Boyce entwickelten die erste prozedurale Sprache für das RDBMS, SEQUEL genannt. Später wurde sie aufgrund eines Markenrechtsstreits zu SQL, der Abkürzung für Structured Anfrage Language, verkürzt. Die SQL-Sprache hat Untergruppen zum Ändern und Erstellen von Datenbankobjekten wie Tabellen und Ansichten, einschließlich der Data Definition Language (DDL). Die Hauptaufgabe von SQL ist die Anfrage Tabellen, das Löschen, Aktualisieren und Einfügen von Datenzeilen. 1986 wurde SQL erstmals zu einem ANSI- und ISO/IEC-Standard, der von mehreren Anbietern implementiert wurde. Actian ist bis heute ein aktives Mitglied des Standardisierungsgremiums, um seine relationale Datenbanktechnologie, wie die Actian Data Platform, an den SQL-Standards auszurichten.

Das erste kommerzielle RDBMS von IBM war SQL/DS, das auf Großrechnern lief. Später brachte IBM eine Version seines RDBMS heraus, die auf Großrechnern und Unix-basierten Systemen lief. Oracle entwickelte das erste kommerzielle RDBMS , das auf verschiedenen Betriebssystemen wie VM, MVS, VMS, Windows, Linux und Solaris lief. Das Team von Richard Stonebreaker in den Berkeley Labs in Kalifornien schuf schließlich die Datenbanken Ingres, Informix und Sybase, die zunächst auf Minicomputern und Unix-basierten Systemen wie Sun Solaris eingesetzt wurden. Ingres war das erste RDBMS , das verteilte Abfragen unterstützte. Das erste geclusterte RDBMS lief auf DEC VMS. Microsoft SQL Server wurde aus einer von Sybase lizenzierten Codebasis entwickelt.

Bevor sich die RDBMS durchsetzte, verwendeten Datenbanken Zugriffsmethoden, um gespeicherte Datensätze mithilfe von Indizes, verknüpften Listen von Datensätzen oder verknüpften Hierarchien von Datensätzen abzurufen. Mit der Verbreitung relationaler Datenbanken wurden nicht-relationale Datenbanken mit einem SQL-Zugang ausgestattet, um die Anfrage für Personen mit SQL-Kenntnissen zu erleichtern. Beispiele hierfür sind IDMS-R, eine Netzwerkdatenbank, und Actian Vector, ein spaltenbasierter Datenspeicher.

Die RDBMS verlagert sich zunehmend auf Cloud , auf die sich das größte Wachstum des Datenbankmarktes konzentriert.

Was ist SQL?

SQL erleichtert das Extrahieren von Daten aus einer Datenbank, indem es eine Reihe von Standardoperatoren zum Speichern, Manipulieren und Abrufen von Daten aus Datenbanken verwendet. Die Anweisung SELECT * FROM CUSTOMERS holt beispielsweise alle Zeilen und Spalten aus der Tabelle CUSTOMERS. Prädikate wie die WHERE-Klausel können verwendet werden, um Teilmengen von Daten anzugeben. Wenn die Tabelle eine Spalte STATE enthält, ruft die folgende SQL-Anweisung nur die Kunden in Kalifornien ab:

SELECT * FROM KUNDEN WO STAAT = 'CA'

Mehrere Tabellen können miteinander in Beziehung gesetzt werden, indem sie mit gemeinsamen Schlüsselspalten entworfen werden. Ein Datenbankentwurfsprozess wird verwendet, um Beziehungen zwischen Datenbankobjekten abzubilden, so dass Daten aus mehreren Tabellen mit einer einzigen SQL-Anweisung abgefragt werden können. Zum Beispiel könnte STATE eine gemeinsame Spalte in der Tabelle CUSTOMERS und der Tabelle ORDERS sein, so dass Sie Bestellungen abrufen können, die sich auf bestimmte Zustände beziehen, oder die Ergebnisse in Ihrem Bericht nach Zustand gruppieren können.

SQL-Joins

Beim Entwerfen eines Datenbankschemas ist es sinnvoll, die Tabellen so zu organisieren, dass sie bei Abfragen möglichst flexibel sind. Normalisierung ist der Begriff, mit dem der Prozess der Optimierung der Anzahl der Tabellen und ihrer Beziehung zueinander beschrieben wird, wobei die Duplizierung von Daten minimiert wird. Zwei oder mehr Tabellen oder Ansichten können in einer einzigen SQL SELECT-Anweisung referenziert werden, indem ein Tabellen-Join durchgeführt wird. Die Tabellen müssen über eine gemeinsame Schlüsselspalte miteinander verbunden sein.

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 und diejenigen, die die Bedingung erfüllen, aus der linken Tabelle.

Um JOIN-Klauseln zu verstehen, müssen Sie mit Schlüsseln und Fremdschlüsseln und Beziehungen zwischen Tabellen vertraut sein. Eine Kundentabelle kann beispielsweise einen Primärschlüssel mit der Kunden-ID haben. Eine Tabelle "Orders", die eine Spalte "Customer-ID" enthält, wird als Fremdschlüssel in dieser Tabelle bezeichnet.

Jede Tabelle, die Sie in Beziehungen verwenden wollen, sollte eine Primärschlüssel-Beschränkung haben; dies kann entweder eine einzelne

Feld oder eine Kombination von Feldern, die durch einen Ausdruck definiert sind. Zum Beispiel:

CREATE TABLE kunde (

    Kunden-ID int NOT NULL PRIMARY KEY,

    Kunden-Name char (60),

    ...

Jede Tabelle, die sich auf die Kundentabelle beziehen muss, sollte ein Feld haben, das dem Primärschlüssel Customer-ID entspricht, und zur Wahrung der relationalen Integrität sollte dieses Feld eine Fremdschlüssel-Beschränkung haben. Zum Beispiel:

CREATE TABLE Orders (

    Kunden-ID int NOT NULL PRIMARY KEY,

    ...

    Kunden-ID int FOREIGN KEY REFERENCES Kunde(Kunden-ID)

);

Primärschlüssel sind immer indiziert und eindeutig, d. h. Schlüsselwerte können keine Duplikate aufweisen. Andere Felder können optional indiziert werden. Es ist oft sinnvoll, Indizes für Fremdschlüsselfelder und für Felder, die in WHERE- und ORDER BY-Klauseln vorkommen, zu erstellen, wenn auch nicht immer, wegen des möglichen Overheads bei Schreibvorgängen und Aktualisierungen, die Indizes aktualisieren müssen.

Die unten stehende Anfrage ruft alle von Jim Clarks aufgegebenen Bestellungen ab:

SELECT Kundenname, AuftragsID FROM Kunden

INNER JOIN Aufträge ON kunden.kunden-ID = aufträge.kunden-ID

WHERE Kundenname ="Jim Clarks";

In der Tat gibt es vier Arten von JOIN: INNER, OUTER, LEFT und RIGHT. Der INNER JOIN ist die Standardeinstellung, d.h. das Wort INNER kann weggelassen werden, und er schließt nur Zeilen ein, die in beiden Tabellen übereinstimmende Werte enthalten. Wenn Sie Kunden auflisten möchten, unabhängig davon, ob sie Bestellungen haben oder nicht, verwenden Sie zum Beispiel einen LEFT JOIN:

SELECT Kundenname, AuftragsID FROM Kunden

LEFT JOIN Orders ON Customer.Customer-ID = Orders.Customer-ID

ORDER BY Kundenname;

Gängige BI-Tools erleichtern die Verknüpfung mehrerer Tabellen, indem sie das erforderliche SQL für Sie grafisch schreiben, indem sie Tabellen und Felder per Drag & Drop auf eine Leinwand ziehen.

Wofür wird SQL verwendet?

Die häufigste Anwendung von SQL ist das Abrufen von Daten aus Datenbanken. Die Daten können aus einer einzelnen Tabelle oder Ansicht, aus mehreren Tabellen, aus einer einzigen Datenbank oder aus mehreren verteilten Datenbanken gelesen werden.

Abgesehen von der SELECT-Anweisung, die im obigen Abschnitt vorgestellt wird, finden Sie im Folgenden eine Untergruppe von SQL-Anweisungen und deren Verwendungszwecke:

  • CREATE DATABASE - erstellt eine Datenbankinstanz, um Objekte wie Tabellen und Indizes zu speichern
  • 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, einschließlich:

  • 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

Kommentare können ein- oder mehrzeilig sein. Ein einzeiliger Kommentar beginnt mit einem doppelten Bindestrich, wie im folgenden Beispiel:

-- Dies ist mein Kommentar

Ein mehrzeiliger Kommentar wird von einem Paar /* und */ eingeschlossen, wie im folgenden Beispiel:

/* Dies ist
mehrzeiliger
Kommentar */

Eingestellte Operationen

Es gibt hauptsächlich drei Mengenoperationen: UNION, INTERSECT und EXCEPT.

UNION - Dieser Operator kombiniert die Ergebnismenge von zwei oder mehr SELECT-Anweisungen.

Beispiel:

SELECT Spalten FROM Tabelle1

UNION

SELECT Spalten FROM Tabelle2;

INTERSECT - Diese Klausel kombiniert zwei SELECT-Anweisungen und gibt die Schnittmenge der Datensätze der beiden SELECT-Anweisungen zurück.

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;

Wie sieht es mit prozeduralem Code aus?

Was ist mit dem Verfahrensrecht?

SQL ist in erster Linie eine deklarative Sprache. Manchmal ist es hilfreich, prozeduralen Code in einem RDBMS zu verwenden. Beispiele für Prozeduren, die in der Datenbank ausgeführt werden, sind die Durchführung einer komplexen Berechnung oder eine gespeicherte Prozedur vor oder nach einer Operation wie INSERT oder DELETE. Gespeicherte Prozeduren sind in der Regel proprietär und werden in einer interpretierten Sprache oder in 3 GL als Nutzer Funktion (UDF) kompiliert.

Wie wird auf SQL zugegriffen?

RDBMS bieten in der Regel eine Befehlszeilenschnittstelle zu ihrer Datenbank an, die in einer Befehlsshell oder innerhalb eines Befehlsskripts verwendet werden kann. Actian bietet ein Call Level Interface (CLI). Diese ist in der Regel für Datenbankadministratoren und -entwickler nützlich, die eine Datenbank einrichten oder Wartungsaufgaben durchführen, z. B. Backups oder Datenbankkopien für Tests erstellen.

Die ODBC-Schnittstelle ermöglicht es bestehenden Anwendungen wie Microsoft Excel, mit eingebettet SQL Daten aus SQL Server und anderen Datenbanken zu holen.

Java verwenden den JDBC-Treiber, um über SQL auf Datenbanken zugreifen zu können.

Anwendungsentwickler verwenden Anwendungsprogrammierschnittstellen (API), um SQL-Anweisungen in ihre Anwendungen einbetten , die z. B. in C, Python oder COBOL geschrieben sein können. Datenbankzeilen können einzeln oder in Stapeln oder Arrays abgerufen werden.

Die Actian Data Platform bietet einen webbasierten Anfrage , der das Erstellen und Ausführen von SQL-Anweisungen erleichtert.

Business Intelligence Tools wie Looker, Tableau, Qlik Sense und Microsoft Power BI bieten visuelle Tools zum Schreiben von SQL-Anweisungen, um Dashboards zu erstellen, die auf die Datenbanktechnologien verschiedener Anbieter zugreifen können. Alle diese BI-Lösungen können mit der Actian Data Platform verwendet werden.

Was ist der Unterschied zwischen SQL und MySQL?

SQL ist eine standardunterstützte Anfrage , die das Extrahieren von Daten aus einer Datenbank mit Hilfe eines Standardsatzes von Operatoren zum Speichern, Manipulieren und Abrufen von Daten aus Datenbanken erleichtern soll. Der Unterschied zwischen SQL und MySQL besteht darin, dass MySQL keine Anfrage ist, sondern ein Open-Source-Datenbankprodukt.

Was ist SQL Server?

SQL Server wurde 1989 veröffentlicht und ist Microsofts eigenes relational database management system RDBMS). Er wurde als voll funktionsfähige Datenbank entwickelt, um mit Oracle Database (DB) und MySQL zu konkurrieren.

SQL Server unterstützt ANSI SQL, die Standard-SQL-Sprache, und enthält T-SQL, seine eigene SQL-Implementierung. Das SQL Server Management Studio (SSMS) ist das wichtigste Schnittstellenwerkzeug von SQL Server. Microsoft SQL Server wird manchmal auch als MSSQL bezeichnet.

Microsoft SQL Server wird mit verschiedenen Featuresets angeboten, um die RDBMS von kleinen Unternehmen bis hin zu Großunternehmen kennenlernen .

Ist SQL leicht zu erlernen?

Wie die meisten Fertigkeiten können auch die Grundlagen von SQL in wenigen Wochen erlernt werden , aber die Beherrschung kann Monate dauern. Entscheidend ist, dass Sie verstehen, wie die Datenbank aufgebaut ist und welche Indizes es gibt, damit Sie wissen, welche Abfragen sinnvoll sind. Es ist auch wichtig, die Grenzen eines Datenbankdesigns zu erkennen.

Transaktionsorientierte Datenbanken vs. entscheidungsunterstützende Datenbanken

Eine transaktionale Datenbank, die für die Auftragserfassung optimiert ist, kann sehr wenige Indizes haben, um sicherzustellen, dass hohe Transaktionsraten von den verfügbaren Rechenressourcen bewältigt werden können. Die Ausführung komplexer SQL-Abfragen direkt gegen diese operativen Datenbanken kann die Transaktionen verlangsamen und sich auf Kunden und Umsatz auswirken. Wenn eine komplexe Entscheidungsfindung erforderlich ist, ist ein Data Warehouse besser geeignet. Ein Data Warehouse ist so organisiert, dass es die Entscheidungsfindung unterstützt. Es verfügt daher über mehr Indizes und kann einen Großteil der Daten in Ansichten voraggregiert haben, um Abfragen zu beschleunigen. Das Data Warehouse wird aus regelmäßigen Snapshots der operativen Datenbanken gespeist oder in Echtzeit aktualisiert, wenn sich Datensätze im operativen System ändern.

Wo kann ich SQL lernen?

Es gibt zahlreiche Ressourcen und SQL-Programmierkurse, die online zu finden sind.