Skip to main content

SQL Tutorial

SQL steht nicht für Some Questionable Logic sonder für Structed Query Language

 

 

Die "Database"

Eine "Database" ist eine Sammlung von Dataten. Diese Daten sind sind in tabelenform angelegt und sind leicht abrufbar.

Auf Webseiten die viele verschiedene Inhalte anbieten (videos, Informationen, Nutzer/Passwort ...) wie z.B. Youtube  ist eine Database kaum mehr wegzudenken.

Die "Database" legt die Daten in einer Tabelle die auf Zeilen und Spalten besteht ab und ist KEINE Programmiersprache.

z.B. Tabelle Presidenten

idVornameNachnameLand
1AngelikaMerkelDeutschland
2EmmanuelMacronFrankreich
3Donald TrumpUSA

 

Der "Primary Key" wird verwendet um die absolute Eindeutigkeit der Tabelle zu gewährleisten und darf niemals NULL sein.

Das ist erstmal das rudimentäre um SQL zuverstehen.

Doch was heist SQL? - SQL steht für Structured Quer Language. SQL ist ein ANSI (American National Standards Institue) Standard, dennoch gibt es Unterschiede in den Versionen der Sprache. Der Kern is jedoch gleich und die Standartdkommandos werden von allen Versionen richtig interpretiert.

Wofür wird SQL verwendet? - SQL wird verwendet um auf die "Database" zuzugreifen und diese zu manipulieren.

Was ist der Unterschied zwischen MYSQL und SQL? - MYSQL ist ein Programm, das SQL versteht.

Was kann SQL? 

- Es kann Daten insert, updaten oder Einträge löschen 

- Neue Datensätze, Tabellen, virtuelle Tabellen anlegen

- Adpotieren von Datensätze und diese verschmelzen

Welche Programme brauch ich für MYSQL? - XAMPP (Empfehlung zum Einstieg)

Standard Befehle (sind nicht case sensetive also insensitive, whitespaces hat auch keinen Effekt auf die Befehle)

SHOW DATABASES 

SHOW TABLES

SHOW COLUMNS FORM [customers]  //wobei customers eine Spalte ist

---------------

SELECT [spalte]          //Attribute können auch mehrere Spalten sein wählen

FROM [tabelle]             //abrufen von

---------------------

Die Befehle können selbstverständlich auch aneinnander gereiht werden, müssen jedoch durch ein Semikolon getrennt werden.

-------

 

Mehrere Spalten wählen

z.B.:   SELECT FirstName, LastName, City FROM customers;

Alle Spalten auswählen

z.B.:    SELECT * FROM customers;

-----------

Schlüsselwort: DISTINCT

Für den Fall, das die Attribute in mehren Zeilen die selben sind und diese nicht doppelt aufgezählt werden sollen, kann man DISTINCT verwenden.

z.B.: SELECT DISTINCT artikel FROM customers

die Tabelle: 

idKNr.artikelPreis
1456autoA5€
2864autoB8€
3948autoA5€

 

Die Ausgabe wäre dann wie folgt:

artikel: 

autoA
autoB

 

-----

Schlüsselwort LIMIT

Die Standartdeinstellung bei SQL gibt bei der Datensuche alle Dateneinträge zurück. Das Schlüsselwort LIMIT sorgt dafür nur eine bestimmte Anzahl von Einträgen darzustellen.

SELECT name      //wählen den des Attributes

FROM students    //wählen der Tabelle

LIMIT 5;             //Datenausgabe begrenzen

Selbstverständlich kann man auch nur einen bestimmten Bereich abfragen.

z.B.: 

SELECT name      //wählen den des Attributes

FROM students    //wählen der Tabelle

LIMIT 3,5;             //Datenausgabe ab  und dann 5 Datensätze

AUSGABE: sind dann die Datensätze (wenn erster id = 1) ID 4 bis ID 9

 

Direkte Auswahl der Spalten

z.B.: SELECT city FROM customers;

entspricht

SELECT customers.city FROM customers;

 

Schlüsselwort: ORDER BY

SELECT * FROM customers 

ORDER BY firstName; //als Standartwert werden die Daten ASCENDING angezeigt. d.h. aufsteigen und bedeut das zuerst a kommt dann b usw.

Selbstverständlich können auch mehrer ORDER BY Bedinungen verknüpfet werden.

z.B.:   ORDER BY firstName, age;  //hier wird dann zuerst Name und darin als Subkategorie das Alter geliestet

------------------------------------------------------------------------------------------------------------------------------------

 

JOIN

 

Es gibt auch die Möglichkeit Daten aus 2 Tabellen aufeinmal abzurufen.

SELECT customers.ID, customers.Name, orders.Name, orders.Amount

FROM customers, orders

WHERE customers.ID=orders.Customer_ID

ORDER BY customers.ID;

 

  

Types of Join

Maskieren/ nicknames

SELECT ct.ID ct.NAME, ord.NAME, ord.Amount

FROM customers AS ct, orders AS ord

WHERE ct.ID=ord.Customer_ID

ORDER BY ct.ID;

 

------------------------------

 

Inner Join                      Left Join             Right Join             + ON

INNER JOIN :

Gibt prüft die Attribute aus zwei Tabellen auf gleichheit und gibt diese aus

SELECT c_name

FROM table1 INNER JOIN table2

ON table1.c_name=table2.c_name;

 

 

LEFT JOIN:

Damit wird die erste Table auf jedenfall ausgeben auch wenn 

zB: Es bestehen zwei verschiedene Tabellen

table "Kunden" in der die Namen und Adressen gespeicher sind. 

table "Dinge" in der Dinge und ihr Preis aufgelistet sind, mit einer "Käufer-ID" die den Wert aus der table "Kunden" gleicht.

 

SELECT Kunden.Name, Dinge.Name

FROM Kunden LEFT OUTER JOIN Dinge

ON Kunden.ID=Dinge.Käufer-ID;

Wird hier nu der Befehl LEFT OUTER JOIN ausgeführt, werden auch die Kunden gezeigt die nicht in der table "Dinge" vermekrt sind. Also die die NIX gekauft haben, daher NULL. Daher Name mit Dingen oder Name mit NULL

Bei Inner Join würden nur die Aufgelistet werden die Auch Dinge gekauft haben. (mit Adressen natürlich)

 

RIGHT OUTER JOIN

Dort nur andersrum dh jedes Ding das eine Käufer-ID hat wieder aufgelistet. 

 

____________________________________________________________-

 

UNION

Verbindet zwei tables zu einer, dabei werden die identischen einträge entferent, sodass für redundanz gesorgt ist.

SELECT ID, Name, Stadt

FROM table1

UNION

SELECT ID, Name, Stadt

FROM table2

 

 

UNION ALL

Verbindet zwei tables zu einer, dabei werden die identischen einträge NICHT  entferent, sodass Einträge doppelt seien können

 

 

___________________________-

 

Einfügen

Attribute mit Werten befüllen. Hier kann ein Datensatz ergänzt werden.

INSERT INTO Mitarbeiter

VALUES (8,"Name","Nachnameschmidt","82 geboren");

oder auch

INSERT INTO Mitarbeiter(ID,vor,Nach,Alter)

VALUES (8,"Name","Nachnameschmidt","82 geboren");

-----

 

UPADTE Mitarbeiter

 

SET name="marco"      //auch mehrer Änderungen möglich

WHERE id=1

 

DELETE

löscht aus einer Tabele einen bestimmte Zeile bzw Datensatz 

DELETE FROM table

WHERE ID=1

 

 

------------------

 

 

greate Table