SQL Befehle für Anfänger

Anzeige
Die Grundlagen von der SQL Sprache sind nicht kompliziert, die Anfänger vergessen aber oft die Basisbefehle. Wenn man SQL nicht professionell einsetzt, möchte man nicht unbedingt die SQL Befehle auswendig lernen.

Deswegen habe ich hier eine Liste mit den SQL Basisbefehlen und Beispielen erstellt, die beim Üben oder auch Arbeiten ein bisschen helfen sollte. (Die Fehler sind nicht ausgeschlossen!)

Datenbanken

// Alle Datenbanken anzeigen
show databases;

// Datenbank erstellen
create database datenbank_name;

// Datenbank “öffnen”
use datenbank_name;

// Datenbank löschen
drop database datenbank_name; 
 
Tabellen

// Tabelle erstellen
create table tabellen_name (spalten_name1 integer not null, spalten_name2 char(30), spalten_name3 date, primary key (spalten_name1));
 
Im obigen Beispiel darf die Spalte spalten_name1 den null Wert nicht haben und es ist ein primary key definiert.

// alle Tabellen innerhalb einer Datenbank anzeigen
show tables;

// Tabelle löschen
drop table tabellen_name;
 
// Tabelle umbenennen
alter table tabellen_name rename tabellen_name2;

Spalten

// Spalte erstellen
alter table tabellen_name add (spalten_name Datentyp);

// Spalte umbenennen oder Datentyp ändern
alter table tabellen_name change spalten_name spalten_name2 char(50);
 
// Spalte löschen
alter table tabellen_name drop spalten_name;

// alle Spalten einer Tabelle anzeigen
desc tabellen_name;

//Primary Key löschen
alter table tabellen_name drop primary key;

Datensätze bearbeiten
// Daten eingeben
insert into tabellen_name (spaltenliste)
values (werteliste);

Beispiel:
insert into verkaufte_autos (auto_nr, marke, preis)
values (1, 'BMW', 4999);

oder wenn Werte in alle Spalten eingegeben werden:
insert into verkaufte_autos
values (1, 'BMW', 4999);

oder wenn Datensätze für mehrere Objekte eingegeben werden:
insert into verkaufte_autos
values (1, 'BMW', 4999), (2, 'Mercedes', 5000), (3, 'Audi', 5050);

// Daten ändern
update tabellen_name
set spalte1=wert, spalte2=wert
where id_spalte = wert;

Beispiel:
update verkaufte_autos
set preis=5500, marke='BMW_X5'
where id = 1;

// Daten löschen
delete from tabellen_name
where spalten_name = wert;

Datenabfrage
select - Spalten auswählen
where - Zeile auswählen

// alle Spalten der Tabelle mit allen Datensätze anzeigen
select * from tabellen_name;

// Alle Datensätze von Spalten spalte1 und spalte2 von der Tabelle1 anzeigen
select spalte1, spalte2
from tabelle1;

// Datensätze sortieren (ASC - von A bis Z, DES - von Z bis A)
select spalten_name
from tabellen_name
order by spalte1 asc;

Beispiel:
select id, marke
from verkaufte_autos
order by id asc;

// Zeile in der Tabelle finden, die bestimmten Wert hat.
select * from tabellen_name
where spalten_name = wert;

Beispiel:
select * from tabellen_name
where baujahr = 1998;

// Suchabfrage mit einem logischen Operator (z.B OR)
select id, marke
from verkaufte_autos
where marke = 'BMW' or marke = 'Audi';

// Suchabfrage mit einem mathematischen Operator (z.B. >)
select id, preis
from verkaufte_autos
where preis > 3000;

// Suchabfrage mit null
select id, preis
from verkaufte_autos
where preis is not null;

// Suchabfrage mit BETWEEN
select id, preis
from verkaufte_autos
where preis between 3000 and 5000;
 
// Suchabfrage mit IN
select id, preis
from verkaufte_autos
where id in (1, 2, 3);

Ergebnis:
+--+-------+
| id | preis |
+--+------+
| 1 | 4999 |
| 2 | 5000 |
| 3 | 5050 |
+--+------+

// Suchabfrage mit LIKE
select id, marke
from verkaufte_autos
where marke like '%udi%';

Im oberen beispiel kann man auch wie folgt suchen:
where marke like 'aud%';

// Suchabfrage mit virtuellen Spalten
select id, marke, preis + marge AS einkommen
from verkaufte_autos;

Im obigen Beispiel werden preis und marge addiert und die Summe wird in der Spalte "einkommen" angezeigt.

// Suchabfrage mit Aggregatsfunktionen:
avg - Durchschnitt
max - Maximum
min - Minimum
sum - Summe
count - Anzahl der Zeilen

Syntaxis: select max(spalten_name) from tabellen_name;

// Anzahl der Autos und die Preissumme berechnen
select count(*) as anzahl_von_autos, sum(preis) as Preissumme
from verkaufte_autos;

// Abfragen mit Group BY
(Gleiche Werte von einer Spalte werden gruppiert)

// Anzahl der Bestellungen jeweiliger Marke anzeigen:
select marke, count(*) AS bestellt
from verkaufte_autos
group by marke;


Ergebnis:
+------------+---------+
| marke      | bestellt    |
+------------+---------+
| BMW      | 3              |
| Audi        | 5              |
| Mercedes | 1             |
+------------+---------+

Also, es wurden 3 Autos von BMW, 5 Autos von Audi und 1 Auto von Mercedes bestellt.

// Group by und having
select modell, count(*) as Anzahl_der_Bestellungen
from verkaufte_autos
group by modell
having count(*) > 3;

Es werden die Modelle angezeigt, deren Autos mehr als 3 Mal bestellt wurden.
 

Fehler gefunden?
Bitte über Kommentare melden.
 
Relevante Themas: SQL Basisbefehle, SQL grundlegende Befehle, SQL für Anfänger, SQL Befehle

6 Kommentare

  1. Hi
    Ich habe eine wahrscheinlich dumme´Frage, aber mein SQL ist total eingerostet.
    Ich möchte wie in diesem Beispiel hier folgende Abfrage

    // Group by und having
    select modell, count(*) as Anzahl_der_Bestellungen
    from verkaufte_autos
    group by modell
    having count(*) > 3;
    Es werden die Modelle angezeigt, deren Autos mehr als 3 Mal bestellt wurden.


    verwenden, um eine delete Funktion zu benutzen.
    Wie in diesem Beispiel würde ich also die Modelle die mehr als 3 mal bestellt wurden, direkt löschen wollen. Wie muss ich das machen. Meine Daten sehen so aus

    select count(*), FNR, ART, ARNR, GDATUM
    from ARTNEUPR
    group by FNR, ART, ARNR, GDATUM;
    having count(*) > 6


    Ich schreibe die COUNTsummer nicht in die Datebank. Wie kann ich das löschen ? Gibt´s da eine Variable o.ä. die in folgender Abfrage funktionieren würde ?

    DELETE FROM ARTNEUPR WHERE ??????? COUNTSUMME>6 ???????
    IN
    (
    select count(*) as FELD, FNR, ART, ARNR, GDATUM
    from ARTNEUPR
    group by FNR, ART, ARNR, GDATUM
    having count(*) > 6
    )

    Vielen Dank im Vorraus

    AntwortenLöschen
    Antworten
    1. Hi, leider habe ich SQL lange Zeit nicht mehr geübt, daher kann ich diese Frage nicht beantworten.
      Ich würde an deiner Stelle diese Frage auf http://www.administrator.de/ in der Kategorie "Datenbanken" stellen. Vielleicht hilft da jemand.

      Grüße
      Admin

      Löschen
  2. hallo,

    ich bin bei SQL ein absoluter Neuling. wir haben in der arbeit diese Datenbank. ich würde gerne die Daten in Excel exportieren um mir meine Daten im gewohnten Umfeld sortieren zu können.

    kann mir jemand sagen wie das geht?

    LIEBSTEN DANK!

    Bia

    AntwortenLöschen
    Antworten
    1. Hallo, so gut kenne ich mich damit leider nicht aus.

      Dieser Link könnte evtl. helfen:
      http://stackoverflow.com/questions/10295228/exporting-results-of-a-mysql-query-to-excel

      Wenn nicht, dann wäre es sinnvoll, diese Frage auf folgenden Foren zu erstellen:
      http://www.administrator.de/thema/datenbanken-972736152.html

      Grüße
      Admin

      Löschen
  3. So würde ich es realisieren:

    delete from verkaufte_autos
    where modell in (
    select modell, count(*) as Anzahl_der_Bestellungen
    from verkaufte_autos
    where Anzahl_der_Bestellungen >3
    group by modell
    )

    Grüße

    AntwortenLöschen