SQL DQL Grundlagen einfach erklärt - simpleclub (2024)

SQL DQL Grundlagen einfach erklärt - simpleclub (1)

FächerSQL DQL Grundlagen einfach erklärt - simpleclub (2)Fachinformatiker*inSQL DQL Grundlagen einfach erklärt - simpleclub (3)LF 8: Daten systemübergreifend bereitstellenSQL DQL Grundlagen einfach erklärt - simpleclub (4)

SQL DQL Grundlagen

Inhaltsübersicht

SQL DQL Grundlagen einfach erklärt - simpleclub (5)

Die Data Query Language (DQL) umfasst alle Befehle in SQL, die zur Abfrage von Daten und Datensätzen in der Datenbank genutzt werden.

Erklärung

Damit Daten nicht nur in die Datenbank eingetragen werden und dort für ewig verweilen, kannst du mit SQL DQL die Daten aus der Datenbank wieder abfragen.
Du formulierst dazu sogenannte Queries (deutsch: Abfragen), welche die folgenden Informationen zwingend enthalten:

  • Aus welchen Tabellen willst du Daten abfragen?
  • Auf welche Spalten/Attribute dieser Tabellen willst du zugreifen?

Optional kannst du z.B. noch folgende Angaben bei der Query machen

  • Welche Eigenschaften sollen die Daten haben (z.B. soll der Attributwert größer als 1000 sein)?
  • Sollen die Daten auf eine bestimmte Weise angeordnet werden?

Als Beispieltabelle wird hier eine einfache Tabelle namens Personen verwendet. Sie sieht folgendermaßen aus:

\underline{\textsf{PersonenID}}PersonenID\underline{\textsf{PersonenID}}PersonenID

\textsf{Vorname}Vorname\textsf{Vorname}Vorname

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{AktuellesAlter}AktuellesAlter\textsf{AktuellesAlter}AktuellesAlter

\textsf{1}1\textsf{1}1

\textsf{Leon}Leon\textsf{Leon}Leon

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{18}18\textsf{18}18

\textsf{2}2\textsf{2}2

\textsf{Emma}Emma\textsf{Emma}Emma

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{16}16\textsf{16}16

\textsf{3}3\textsf{3}3

\textsf{Max}Max\textsf{Max}Max

\textsf{Mustermann}Mustermann\textsf{Mustermann}Mustermann

\textsf{25}25\textsf{25}25

\textsf{4}4\textsf{4}4

\textsf{Amir}Amir\textsf{Amir}Amir

\textsf{Schneider}Schneider\textsf{Schneider}Schneider

\textsf{17}17\textsf{17}17

SELECT FROM

Die Grundlage einer SQL Anfrage ist SELECT FROM. Diese zwei magischen Worte erlauben dir, einfache Abfragen für deine Datenbank zu schreiben. Sie sind zwingend erforderlich in jeder Query. Wir starten mit dem einfachsten Fall, wo wir Daten nur aus einer Tabelle abfragen.

  • Bei SELECT gibst du an, welche Attribute du abfragen willst.
  • Im FROM-Teil hingegen gibst du die Tabellen an, aus denen die Attribute extrahiert werden sollen.

Das Grundgerüst sieht folgendermaßen aus:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Beachte den Strichpunkt bzw. das Semikolon am Ende jeder Anfrage. Willst du einfach alle Attribute der Tabelle erhalten, schreibst du ein * anstelle der Attribute:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Möchten wir nun sämtliche Daten aus der Tabelle Personen abfragen, verwenden wir die folgende SQL-Anweisung:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Die Ergebnistabelle sieht dann genauso aus wie die Tabelle oben.

Falls du nur an den Vornamen und dem Alter der Personen interessiert sind, verwendest du:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Du erhältst das Ergebnis:

\textsf{Vorname}Vorname\textsf{Vorname}Vorname

\textsf{AktuellesAlter}AktuellesAlter\textsf{AktuellesAlter}AktuellesAlter

\textsf{Leon}Leon\textsf{Leon}Leon

\textsf{18}18\textsf{18}18

\textsf{Emma}Emma\textsf{Emma}Emma

\textsf{16}16\textsf{16}16

\textsf{Max}Max\textsf{Max}Max

\textsf{25}25\textsf{25}25

\textsf{Amir}Amir\textsf{Amir}Amir

\textsf{17}17\textsf{17}17

Bedingungen mittels WHERE

Mit dem Befehl WHERE kannst du zusätzliche Bedingungen definieren, welche die Datensätze erfüllen müssen. Der Befehl ...

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

... gibt alle Tupel zurück, deren Nachname 'Maier' ist:

\underline{\textsf{PersonenID}}PersonenID\underline{\textsf{PersonenID}}PersonenID

\textsf{Vorname}Vorname\textsf{Vorname}Vorname

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{AktuellesAlter}AktuellesAlter\textsf{AktuellesAlter}AktuellesAlter

\textsf{1}1\textsf{1}1

\textsf{Leon}Leon\textsf{Leon}Leon

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{18}18\textsf{18}18

\textsf{2}2\textsf{2}2

\textsf{Emma}Emma\textsf{Emma}Emma

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{16}16\textsf{16}16

Statt Gleichheit (=) kannst du auch

  • größer/kleiner ( >,< ),
  • größer gleich / kleiner gleich (>=, <=) und
  • ungleich (<>)

als Bedingungen formulieren. Möchtest du eine Bedingung verneinen, setzt du das Wörtchen NOT vor diese Bedingung. Im nächsten Abschnitt siehst du ein Beispiel dazu.

Bedinungen verknüpfen: AND und OR

Im WHERE-Teil der Abfrage kannst du mit Hilfe von den Modifikatoren OR und NOT mehrere Bedingungen miteinander verknüpfen. Das sieht dann beispielsweise so aus:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Tipp: Arbeite mit Klammern, um Überblick über deine Bedingungen zu behalten. Setze die Klammern so, dass alle Ausdrücke, die zu einer Bedingung gehören, zusammen gefasst werden.

Alternativ kannst du auch jede Bedingung in eine neue Zeile schreiben. Dazu siehst du im nächsten Abschnitt ein Beispiel.

Die Abfrage von oben gibt dir alle Tupel aus der Tabelle Personen zurück, die NICHT den Nachnamen Maier haben und gleichzeitig über 18 Jahre alt sind. In der Tabelle Personen trifft das auf genau einen Eintrag zu:

\underline{\textsf{PersonenID}}PersonenID\underline{\textsf{PersonenID}}PersonenID

\textsf{Vorname}Vorname\textsf{Vorname}Vorname

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{AktuellesAlter}AktuellesAlter\textsf{AktuellesAlter}AktuellesAlter

\textsf{3}3\textsf{3}3

\textsf{Max}Max\textsf{Max}Max

\textsf{Mustermann}Mustermann\textsf{Mustermann}Mustermann

\textsf{25}25\textsf{25}25

Komplexe Bedingungen: LIKE, IN und BETWEEN

Stell dir vor, du möchtest in der Tabelle eine Personen finden, deren Namen du nicht ganz sicher kennst. Du weißt nur, dass ihr Nachname mit M beginnt und sie zwischen 18 und 23 Jahre alt ist. Außerdem vermutest du, dass der Vorname entweder Leon, Max oder Stephan ist.

Wie kannst du eine Anfrage formulieren, die dir alle Einträge zurück liefert, die auf diese Beschreibungen zutrifft?

\rhd\rhd Dazu gibt es in SQL folgende Möglichkeiten:

  • LIKE: Nach diesem Wort kannst du ein Pattern (deutsch: Muster) festlegen, das auf die gesuchten Attributwerte zutreffen muss. Dabei steht das Prozentzeichen % für beliebig viele Zeichen, während der Unterstrich _ für genau ein Zeichen steht.

Der Ausdruck 'M%' bedeutet beispielsweise dass der erste Buchstabe ein M ist, gefolgt von beliebig vielen Zeichen, während beispielsweise 'a%' bedeutet, dass vor dem a genau ein Buchstabe kommt und nach dem a mindestens ein weiteres Zeichen.

  • BETWEEN x AND y: Du kannst einen Bereich definieren, zwischen denen die Werte des Attributs liegen soll. Die beiden Grenzen x und y sind eingeschlossen.
  • IN: Dieser Operator wird gefolgt von einer Liste in runden Klammern. Das entsprechende Attribut muss einen der Werte in dieser Liste annehmen.

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Hinweis: Du hast immer mehrere Möglichkeiten, eine Anfrage zu stellen. Beispielsweise könntest du statt IN auch schreiben:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Ergebnis:

\underline{\textsf{PersonenID}}PersonenID\underline{\textsf{PersonenID}}PersonenID

\textsf{Vorname}Vorname\textsf{Vorname}Vorname

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{AktuellesAlter}AktuellesAlter\textsf{AktuellesAlter}AktuellesAlter

\textsf{1}1\textsf{1}1

\textsf{Leon}Leon\textsf{Leon}Leon

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{18}18\textsf{18}18

Karteikarten zu diesem Thema?

Mit der Karteikartenfunktion kannst du deine Vokabeln, Definitionen oder andere Themen, die du auswendig lernen musst, einfach einscannen.

SQL DQL Grundlagen einfach erklärt - simpleclub (6)

SQL DQL Grundlagen einfach erklärt - simpleclub (7)

Karteikarten zu diesem Thema erstellen?

Zusatz: ORDER BY

Gerade bei größeren Tabellen sollen Ausgaben manchmal nach Attributwerten geordnet werden. Dies kannst du in SQL mit dem Befehl ORDER BY ganz am Ende deiner Abfrage umsetzen.

  • ORDER BY Attribut1, Attribut2,... ASC = Ausgabe wird anhand der Attribute aufsteigend geordnet (englisch ascending bedeutet aufsteigend)
  • ORDER BY Attribut1, Attribut2,... DESC = Ausgabe wird anhand der Attribute absteigend geordnet (englisch descending bedeutet absteigend)

Der folgende Befehl gibt dir die Tupel der Tabelle Personen zurück, bei denen die Personen unter 20 Jahre alt sind (WHERE-Teil). Die Rückgabe wird nach dem Alter der Personen aufsteigend geordnet (ORDER BY-Teil):

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\underline{\textsf{PersonenID}}PersonenID\underline{\textsf{PersonenID}}PersonenID

\textsf{Vorname}Vorname\textsf{Vorname}Vorname

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{AktuellesAlter}AktuellesAlter\textsf{AktuellesAlter}AktuellesAlter

\textsf{2}2\textsf{2}2

\textsf{Emma}Emma\textsf{Emma}Emma

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{16}16\textsf{16}16

\textsf{4}4\textsf{4}4

\textsf{Amir}Amir\textsf{Amir}Amir

\textsf{Schneider}Schneider\textsf{Schneider}Schneider

\textsf{17}17\textsf{17}17

\textsf{1}1\textsf{1}1

\textsf{Leon}Leon\textsf{Leon}Leon

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{18}18\textsf{18}18

SELECT DISTINCT

Aus der Tabelle Personen sollen nun alle verschiedenen Nachnamen ausgegeben werden. Es liegt nahe, dies mit folgender SQL-Anweisung zu lösen:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Diese Anweisung liefert folgendes Ergebnis:

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{Mustermann}Mustermann\textsf{Mustermann}Mustermann

\textsf{Schneider}Schneider\textsf{Schneider}Schneider

Wie dir sicher auffällt, kommt der Name Maier nun zwei Mal in der Liste vor. Das liegt daran, dass der obige SQL Befehl dir alle Attributwerte zurück gibt, die in der Tabelle vorkommen. Wenn du Duplikate vermeiden möchtest, dann kannst du den Zusatz DISTINCT hinter SELECT nutzen:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

Du erhältst nun folgende Rückgabe:

\textsf{Nachname}Nachname\textsf{Nachname}Nachname

\textsf{Maier}Maier\textsf{Maier}Maier

\textsf{Mustermann}Mustermann\textsf{Mustermann}Mustermann

\textsf{Schneider}Schneider\textsf{Schneider}Schneider

Beispiele

Die folgenden Beispiele beziehen sich auf die bereits in der Datenbank angelegten Tabelle Staedte. Ein Ausschnitt der Tabelle sieht folgendermaßen aus. Die drei Punkte deuten an, dass sich hier weitere Daten befinden, die aber zur bessren Übersicht nicht angegeben sind.

\underline{\textsf{StadtID}}StadtID\underline{\textsf{StadtID}}StadtID

\textsf{Stadtname}Stadtname\textsf{Stadtname}Stadtname

\textsf{Einwohnerzahl}Einwohnerzahl\textsf{Einwohnerzahl}Einwohnerzahl

\textsf{Land}Land\textsf{Land}Land

\textsf{1}1\textsf{1}1

\textsf{Berlin}Berlin\textsf{Berlin}Berlin

\textsf{3.600.000}3.600.000\textsf{3.600.000}3.600.000

\textsf{Deutschland}Deutschland\textsf{Deutschland}Deutschland

...

...

...

...

WHERE Abfrage

Zunächst sollen die Namen und IDs aller französischen Städte ausgeben werden:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\textsf{Stadtname}Stadtname\textsf{Stadtname}Stadtname

\underline{\textsf{StadtID}}StadtID\underline{\textsf{StadtID}}StadtID

...

...

ORDER BY

Es sollen Namen und Einwohnerzahl aller Städte zurückgegeben werden, welche mehr als eine Millionen Einwohner haben, absteigend geordnet nach Einwohnerzahl:

Hier versteckt sich noch mehr!

Besuche die App, um alle Inhalte zu sehen!

\textsf{Stadtname}Stadtname\textsf{Stadtname}Stadtname

\textsf{Einwohnerzahl}Einwohnerzahl\textsf{Einwohnerzahl}Einwohnerzahl

...

...

Nächstes Thema:

SQL Joins

Weiter

SQL DQL Grundlagen einfach erklärt - simpleclub (8)

SQL DQL Grundlagen einfach erklärt - simpleclub (2024)

References

Top Articles
Irish Brown Bread Recipe {Guinness Bread} | Happy Money Saver
Portuguese Egg Tart Recipe - Tasting Table
Devotion Showtimes Near Xscape Theatres Blankenbaker 16
Get train & bus departures - Android
25X11X10 Atv Tires Tractor Supply
Slapstick Sound Effect Crossword
Skip The Games Norfolk Virginia
New Day Usa Blonde Spokeswoman 2022
Bbc 5Live Schedule
How Quickly Do I Lose My Bike Fitness?
What is a basic financial statement?
New Mexico Craigslist Cars And Trucks - By Owner
Cvs Learnet Modules
Facebook Marketplace Charlottesville
Methodist Laborworkx
Nioh 2: Divine Gear [Hands-on Experience]
Job Shop Hearthside Schedule
Dr Manish Patel Mooresville Nc
Byte Delta Dental
National Weather Service Denver Co Forecast
Scenes from Paradise: Where to Visit Filming Locations Around the World - Paradise
Q33 Bus Schedule Pdf
Puretalkusa.com/Amac
Csi Tv Series Wiki
Golden Abyss - Chapter 5 - Lunar_Angel
Busted Newspaper Fauquier County Va
Jenna Ortega’s Height, Age, Net Worth & Biography
Filthy Rich Boys (Rich Boys Of Burberry Prep #1) - C.M. Stunich [PDF] | Online Book Share
The best brunch spots in Berlin
Aliciabibs
Pain Out Maxx Kratom
4Oxfun
Marokko houdt honderden mensen tegen die illegaal grens met Spaanse stad Ceuta wilden oversteken
Marilyn Seipt Obituary
What Is Opm1 Treas 310 Deposit
The Posturepedic Difference | Sealy New Zealand
Southern Democrat vs. MAGA Republican: Why NC governor race is a defining contest for 2024
67-72 Chevy Truck Parts Craigslist
Police Academy Butler Tech
Grapes And Hops Festival Jamestown Ny
Best Restaurant In Glendale Az
National Insider Threat Awareness Month - 2024 DCSA Conference For Insider Threat Virtual Registration Still Available
Prior Authorization Requirements for Health Insurance Marketplace
Clausen's Car Wash
VPN Free - Betternet Unlimited VPN Proxy - Chrome Web Store
Iman Fashion Clearance
St Anthony Hospital Crown Point Visiting Hours
Jigidi Free Jigsaw
Dying Light Mother's Day Roof
Mega Millions Lottery - Winning Numbers & Results
Terrell Buckley Net Worth
Acellus Grading Scale
Latest Posts
Article information

Author: Golda Nolan II

Last Updated:

Views: 5929

Rating: 4.8 / 5 (78 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Golda Nolan II

Birthday: 1998-05-14

Address: Suite 369 9754 Roberts Pines, West Benitaburgh, NM 69180-7958

Phone: +522993866487

Job: Sales Executive

Hobby: Worldbuilding, Shopping, Quilting, Cooking, Homebrewing, Leather crafting, Pet

Introduction: My name is Golda Nolan II, I am a thoughtful, clever, cute, jolly, brave, powerful, splendid person who loves writing and wants to share my knowledge and understanding with you.