Kurz gesagt
SQL (Structured Query Language) ist die Sprache, mit der man Daten in einer relationalen Datenbank anlegt, einfügt, abfragt und ändert. Mit CREATE TABLE legt man die Struktur einer Tabelle fest, mit INSERT füllt man sie mit Zeilen, mit SELECT liest man sie aus. Eine CSV-Datei lässt sich genau in dieses Format überführen: erst eine Tabelle definieren, dann jede Zeile als INSERT einfügen.
Was ist SQL?
SQL steht für Structured Query Language, auf Deutsch etwa strukturierte Abfragesprache. Es ist die Standardsprache, mit der man mit einer relationalen Datenbank spricht. Wer Daten speichern, suchen, verändern oder löschen will, formuliert dafür einen kurzen Satz in SQL, und die Datenbank führt ihn aus. Ausgesprochen wird SQL oft als Buchstabenfolge S-Q-L, manche sagen auch englisch sequel.
Wichtig ist gleich zu Beginn ein Punkt, der viele Einsteiger verwirrt: SQL ist keine Datei und kein Programm, sondern eine Sprache. So wie HTML beschreibt, wie eine Webseite aufgebaut ist, beschreibt SQL, was mit den Daten in einer Datenbank geschehen soll. Die Datenbank selbst, also der Ort, an dem die Daten liegen, wird von einem Datenbanksystem verwaltet. Bekannte Systeme sind MySQL, MariaDB, PostgreSQL, SQLite und Microsoft SQL Server. Sie alle verstehen SQL, mit kleinen Unterschieden, auf die wir später eingehen.
Das Besondere an SQL ist, dass es eine deklarative Sprache ist. Man beschreibt das gewünschte Ergebnis, nicht den Rechenweg. Statt Schritt für Schritt zu sagen, wie die Datenbank Zeile für Zeile durchsuchen soll, schreibt man einfach: gib mir alle Kunden aus Hamburg. Wie die Datenbank das intern löst, ob mit einem Index oder einem vollständigen Durchlauf, ist ihre Aufgabe, nicht Ihre.
Wofür braucht man SQL?
SQL begegnet einem im Alltag öfter, als man denkt, meist im Hintergrund. Praktisch jede Webseite mit Login, jeder Onlineshop, jede App mit Konten und fast jede betriebliche Software speichert ihre Daten in einer relationalen Datenbank und greift per SQL darauf zu. Typische Einsatzgebiete sind:
- Webanwendungen und Shops: Benutzerkonten, Bestellungen, Produkte und Lagerbestände liegen in Tabellen und werden per SQL abgefragt.
- Auswertungen und Reporting: Umsätze nach Monat, Top-Produkte, Kunden pro Region, alles entsteht aus SQL-Abfragen.
- Verwaltung großer Datenmengen: Hunderttausende Datensätze lassen sich gezielt filtern, sortieren und verknüpfen, ohne dass man eine riesige Datei manuell durchsuchen muss.
- Mehrbenutzerbetrieb: Viele Personen können gleichzeitig auf dieselben Daten zugreifen, ohne sich gegenseitig zu überschreiben.
Der Vorteil gegenüber einer einfachen Datei wird genau hier deutlich. Eine Tabellendatei wie CSV ist gut zum Speichern und Austauschen, aber sie kann nicht von sich aus filtern, prüfen oder verknüpfen. Wer mehr über das einfache Tabellenformat wissen möchte, findet die Grundlagen im Ratgeber Was ist eine CSV-Datei. Den direkten Vergleich beider Welten behandelt der Beitrag CSV oder SQL: Unterschiede und wann du welches brauchst.
Tabellen, Zeilen und Spalten: das Grundprinzip
Eine relationale Datenbank organisiert Daten in Tabellen. Eine Tabelle in SQL ist im Grunde dasselbe, was man aus Excel kennt: ein Raster aus Zeilen und Spalten. Jede Spalte steht für eine Eigenschaft, etwa name, stadt oder geburtsdatum. Jede Zeile ist ein einzelner Datensatz, also zum Beispiel ein konkreter Kunde mit seinen Werten.
Der entscheidende Unterschied zur Tabellenkalkulation: In SQL hat jede Spalte einen festen Datentyp. Eine Spalte alter nimmt nur ganze Zahlen an, eine Spalte name nur Text. Dadurch ist von vornherein klar, welche Werte erlaubt sind, und die Datenbank kann Fehler verhindern, etwa wenn jemand versehentlich Text in ein Zahlenfeld schreiben will. Diese Festlegung der Struktur, also welche Spalten es gibt und welchen Typ sie haben, nennt man das Schema der Tabelle. Genau dieses Schema erzeugt man mit dem Befehl CREATE TABLE.
Die wichtigsten SQL-Befehle
SQL hat viele Befehle, aber im Alltag braucht man vor allem eine Handvoll. Wer diese fünf versteht, kann bereits den Großteil aller typischen Aufgaben erledigen. Man unterteilt sie grob in Befehle, die die Struktur betreffen, und solche, die die eigentlichen Daten betreffen.
| Befehl | Wofür | Beispiel in Worten |
|---|---|---|
CREATE TABLE | Tabelle anlegen | Erstelle eine Tabelle kunden mit Spalten |
INSERT | Zeilen einfügen | Füge einen neuen Kunden hinzu |
SELECT | Daten abfragen | Zeige alle Kunden aus Hamburg |
UPDATE | Werte ändern | Ändere die Stadt von Kunde 5 |
DELETE | Zeilen löschen | Lösche alle inaktiven Konten |
Auffällig ist, dass die Befehle fast wie englische Sätze klingen. Genau das macht den Einstieg in SQL angenehm: SELECT name FROM kunden WHERE stadt = 'Hamburg' liest sich beinahe wörtlich als wähle den Namen aus Kunden, bei denen die Stadt Hamburg ist. In diesem Ratgeber konzentrieren wir uns auf die beiden Befehle, die beim Übertragen einer CSV-Datei in eine Datenbank zentral sind: CREATE TABLE und INSERT.
CREATE TABLE einfach erklärt
Bevor man Daten in eine Datenbank einfügen kann, braucht man eine Tabelle als Ziel. CREATE TABLE ist der Befehl, der genau das erledigt: Er legt eine neue, zunächst leere Tabelle an und bestimmt, welche Spalten sie hat und welchen Datentyp jede Spalte trägt. Ein einfaches Beispiel:
CREATE TABLE kunden (
id INTEGER PRIMARY KEY,
name VARCHAR(100) NOT NULL,
stadt VARCHAR(100),
alter INTEGER
);
Lesen wir das Stück für Stück. CREATE TABLE kunden sagt: Lege eine Tabelle mit dem Namen kunden an. In den runden Klammern stehen die Spalten, jeweils mit Namen und Datentyp:
id INTEGER PRIMARY KEY: eine Spalte id vom Typ Ganzzahl. Der Zusatz PRIMARY KEY macht sie zum eindeutigen Schlüssel, also der eindeutigen Kennung jeder Zeile.name VARCHAR(100) NOT NULL: eine Textspalte für bis zu 100 Zeichen. NOT NULL bedeutet, dass dieses Feld nicht leer bleiben darf.stadt VARCHAR(100): ebenfalls Text bis 100 Zeichen, hier darf das Feld auch leer sein.alter INTEGER: eine Spalte für ganze Zahlen, die leer bleiben darf.
Zwei kleine, aber wichtige Begriffe sind dabei aufgetaucht. Der Primärschlüssel (PRIMARY KEY) ist eine Spalte, deren Wert jede Zeile eindeutig identifiziert, vergleichbar mit einer Kundennummer. NOT NULL erzwingt, dass ein Feld immer ausgefüllt sein muss. Fehlt dieser Zusatz, darf das Feld auch NULL sein. NULL ist dabei nicht die Zahl null und auch kein leerer Text, sondern bedeutet schlicht: kein Wert vorhanden, unbekannt. Diese Unterscheidung ist in SQL zentral und einer der häufigsten Stolpersteine für Einsteiger.
Wie man aus den Spalten einer CSV-Datei automatisch ein solches CREATE TABLE erzeugt, samt passenden Datentypen, zeigt der Ratgeber CREATE TABLE aus CSV generieren.
Die wichtigsten SQL-Datentypen
Jede Spalte hat einen Datentyp, der festlegt, welche Art von Werten sie aufnimmt. Das hat zwei Vorteile: Die Datenbank kann fehlerhafte Eingaben abweisen, und sie speichert die Daten platzsparend und kann effizient damit rechnen. Die folgenden Typen decken die allermeisten Fälle ab:
| Datentyp | Bedeutung | Beispielwert |
|---|---|---|
INTEGER / INT | Ganze Zahl | 42 |
DECIMAL / REAL | Kommazahl | 19.99 |
VARCHAR(n) | Text bis n Zeichen | 'Hamburg' |
TEXT | Langer Text ohne feste Grenze | 'langer Kommentar ...' |
BOOLEAN / BIT | Wahr oder falsch | TRUE |
DATE / TIMESTAMP | Datum bzw. Datum mit Uhrzeit | '2026-06-17' |
Die Wahl des richtigen Typs klingt simpel, hat aber Tücken. Ein klassisches Beispiel sind Postleitzahlen: Sie sehen aus wie Zahlen, dürfen aber nicht als INTEGER gespeichert werden, weil sonst eine führende Null verloren geht (aus 01067 würde 1067). Solche Felder gehören als Text in eine VARCHAR-Spalte. Welche Fallen es bei der automatischen Typ-Erkennung sonst noch gibt und wie man sie umgeht, behandelt der Ratgeber Datentypen aus CSV richtig erkennen.
SQL INSERT Beispiel
Sobald die Tabelle existiert, füllt man sie mit dem Befehl INSERT. Jede Anweisung fügt eine oder mehrere Zeilen ein. Hier ein konkretes SQL INSERT Beispiel, das zur oben angelegten Tabelle kunden passt:
INSERT INTO kunden (id, name, stadt, alter) VALUES
(1, 'Anna Berg', 'Hamburg', 34),
(2, 'Mehmet Kaya', 'Köln', 41),
(3, 'Lena Voss', NULL, 29);
Der Aufbau ist immer gleich: INSERT INTO gefolgt vom Tabellennamen, dann in Klammern die Spalten, die befüllt werden, danach das Schlüsselwort VALUES und für jede Zeile eine Klammer mit den passenden Werten in derselben Reihenfolge. An diesem Beispiel werden die wichtigsten Regeln für Werte sichtbar:
- Text steht immer in einfachen Anführungszeichen:
'Hamburg'. - Zahlen stehen ohne Anführungszeichen:
34. - Fehlende Werte werden als
NULLgeschrieben, ohne Anführungszeichen, hier die unbekannte Stadt von Lena Voss. - Die Reihenfolge der Werte muss exakt zur Spaltenliste passen.
Ein Detail, das nicht nur Schönheit ist, sondern Sicherheit: Was passiert, wenn ein Textwert selbst ein Anführungszeichen enthält, etwa der Name O'Brien? Dann würde das einfache Anführungszeichen das Textfeld vorzeitig beenden, das Statement bricht oder, schlimmer, lässt sich für eine SQL-Injection missbrauchen. Die saubere Lösung ist, das Apostroph zu verdoppeln: 'O''Brien'. Warum das wichtig ist und wie Sonderzeichen, Umlaute und Apostrophe sicher behandelt werden, erklärt der Beitrag Sonderzeichen und SQL-Injection: CSV-Werte sicher escapen.
Das obige Beispiel fügt drei Zeilen mit einer einzigen Anweisung ein, das nennt man Batch-Insert und ist beim Import vieler Zeilen deutlich schneller. Alternativ schreibt man eine eigene INSERT-Anweisung pro Zeile, was übersichtlicher und besser nachvollziehbar ist. Beide Varianten und wann sich welche lohnt, vertieft der Ratgeber INSERT-Statements aus CSV erzeugen.
Von der CSV-Datei zu SQL
Die Verbindung zwischen CSV und SQL ist enger, als sie auf den ersten Blick wirkt. Eine CSV-Datei ist eine flache Tabelle: erste Zeile die Spaltenüberschriften, danach pro Zeile ein Datensatz, getrennt durch Komma oder, in deutschem Excel meist, Semikolon. Genau diese Struktur passt eins zu eins in eine SQL-Tabelle. Der Weg von CSV zu SQL besteht aus zwei Schritten:
- CREATE TABLE aus den Spaltenüberschriften: Aus der Kopfzeile der CSV werden die Spaltennamen, und aus den Werten darunter wird der passende Datentyp abgeleitet, etwa INTEGER für reine Ziffernfelder oder VARCHAR für Text.
- INSERT für jede Datenzeile: Jede Zeile der CSV wird zu einer Werteklammer in einem INSERT, mit korrekt gesetzten Anführungszeichen, NULL für leere Felder und verdoppelten Apostrophen.
Genau diese beiden Schritte erledigt unser CSV-zu-SQL-Konverter automatisch: Sie fügen die CSV ein oder wählen eine Datei, stellen den gewünschten Dialekt ein und erhalten sofort ein fertiges CREATE TABLE plus die passenden INSERT-Statements. Das Ganze läuft zu 100 Prozent lokal in Ihrem Browser: kein Upload, kein Server, kein Konto und kein Limit. Ihre Datei verlässt das Gerät nicht. Eine ehrliche Einordnung gehört dazu: Die Datentyp-Erkennung ist eine Heuristik und sollte bei kritischen Feldern wie Postleitzahlen oder Telefonnummern kurz geprüft werden. Den kompletten Ablauf beschreibt der Ratgeber CSV in SQL umwandeln.
SQL ist nicht gleich SQL: die Dialekte
SQL ist genormt, dennoch spricht jedes Datenbanksystem einen leicht eigenen Dialekt. Die Grundbefehle SELECT, INSERT, CREATE TABLE sind überall gleich, Unterschiede gibt es bei Details wie der Schreibweise von Spaltennamen, den genauen Typnamen und der automatischen Vergabe von Schlüsseln. Drei typische Beispiele:
- Spaltennamen quoten: MySQL und MariaDB nutzen Backticks (
`name`), PostgreSQL und SQLite doppelte Anführungszeichen ("name"), SQL Server zusätzlich eckige Klammern ([name]). - Automatischer Schlüssel: MySQL schreibt
AUTO_INCREMENT, PostgreSQLSERIAL, SQLiteAUTOINCREMENTund SQL ServerIDENTITY(1,1). - Wahrheitswerte: PostgreSQL kennt echte TRUE und FALSE, MySQL, SQLite und SQL Server bilden sie oft als 1 und 0 ab.
Für das Übertragen einer CSV bedeutet das: Der erzeugte SQL-Code muss zum Zielsystem passen. Unser Konverter berücksichtigt diese Unterschiede automatisch und passt Quoting, Datentypen und Schlüssel an den gewählten Dialekt an. Welcher Dialekt für welchen Zweck sinnvoll ist, beleuchtet der Vergleich MySQL, PostgreSQL, SQLite oder SQL Server.
Häufige Fragen
Was ist SQL einfach erklärt?
SQL (Structured Query Language) ist die Sprache, mit der man Daten in einer relationalen Datenbank anlegt, abfragt, ändert und löscht. Mit CREATE TABLE erstellt man eine Tabelle, mit INSERT fügt man Zeilen ein und mit SELECT liest man sie aus. SQL beschreibt, was man von der Datenbank möchte, nicht wie sie es technisch umsetzt.
Wofür braucht man SQL?
SQL wird überall dort gebraucht, wo strukturierte Daten dauerhaft gespeichert und zuverlässig abgefragt werden müssen: in Webseiten, Onlineshops, Apps, Buchhaltung und Auswertungen. Anders als eine CSV-Datei kann eine Datenbank gezielt filtern, sortieren, verknüpfen und gleichzeitig von vielen Nutzern sicher verwendet werden.
Was ist der Unterschied zwischen CREATE TABLE und INSERT?
CREATE TABLE legt die Struktur einer Tabelle fest, also die Spaltennamen und ihre Datentypen. INSERT fügt anschließend die eigentlichen Datenzeilen in diese Tabelle ein. Erst kommt CREATE TABLE, dann INSERT, denn ohne Tabelle gibt es kein Ziel für die Werte.
Wie sieht ein SQL INSERT Beispiel aus?
Ein einfaches Beispiel lautet: INSERT INTO kunden (name, stadt) VALUES ('Anna Berg', 'Hamburg'); Damit wird eine Zeile mit den Werten Anna Berg und Hamburg eingefügt. Text steht in einfachen Anführungszeichen, Zahlen ohne, und leere Felder werden als NULL geschrieben.
Ist SQL schwer zu lernen?
Die Grundlagen von SQL sind vergleichsweise leicht zu lernen, weil die Befehle an einfaches Englisch angelehnt sind. Mit SELECT, INSERT, UPDATE, DELETE und CREATE TABLE deckt man bereits die meisten Alltagsfälle ab. Komplex wird es erst bei großen Abfragen mit mehreren verknüpften Tabellen.
Was ist der Unterschied zwischen CSV und SQL?
CSV ist ein einfaches Dateiformat, das Tabellendaten als reinen Text mit Trennzeichen speichert. SQL ist dagegen keine Datei, sondern eine Sprache zum Verwalten von Daten in einer Datenbank. CSV eignet sich zum Austausch und Export, SQL zum dauerhaften Speichern, Abfragen und Verknüpfen großer Datenmengen.