Haupt-Reiter

SQL

SQL

SQL (Structured Query Language) hat sich als Abfragesprache für relationale Datenbanken durchgesetzt.
Zu den bekanntesten freien SQL-Datenbanken zählen MySQL, PostgreSQL und MaxDB.
Zu den größten kommerziellen Datenbankherstellern zählen Oracle und IBM.

Statisch/dynamisches SQL

  1. Bei statischem SQL ist die SQL-Anweisung dem Datenbanksystem zum Zeitpunkt der Programmübersetzung bekannt und festgelegt (z. B. wenn die Abfrage eines Kontos vorformuliert ist und zur Laufzeit nur die Kontonummer eingesetzt wird).

  2. Bei dynamischem SQL ist die SQL-Anweisung dem Datenbanksystem erst zum Zeitpunkt der Programmausführung bekannt (z. B. weil der Benutzer die komplette Abfrage eingibt). So sind z. B. alle SQL-Anweisungen, die mittels SQL/CLI oder JDBC ausgeführt werden grundsätzlich dynamisch. Ausgeführt werden dynamische SQL-Anweisungen im Allgemeinen mit execute immediate (SQL-String).

 

MySQL-Abfragen

CRUD-Prinzip: Das Akronym "CRUD" beschreibt die Datenbankoperationen, auf denen jegliche Kommunikation mit der Datenbank beruht.

Alle Datensätze anzeigenMySQL-Code  SELECT * FROM tabellenname  

zeigt alle Datensätze der Tabelle tabellennamean.

Einzelne Felder aller Datensätze anzeigenMySQL-Code  SELECT kunde_name FROM tabellenname  

zeigt alle Felder kunde_namealler Datensätze der Tabelle tabellennamean.

MySQL-Code  SELECT kunde_name, kunde_vorname FROM tabellenname  

zeigt alle Felder kunde_nameund kunde_vornamealler Datensätze der Tabelle tabellennamean.

Einschränkungen mit WHEREMySQL-Code  SELECT kunde_name, kunde_vorname FROM tabellenname WHERE kunde_ort='Hamburg'

Schränkt die Ausgabe auf alle Kunden aus Hamburg ein. Groß- und Kleinschreibung ist hier nicht relevant (Hamburg, hamburg).

Platzhalter mit LIKE %MySQL-Code  SELECT * FROM tabellenname WHERE kundeOrt LIKE '%freiburg%'

findet die Orte “Ostfreiburg”, “Freiburg West” und “Freiburg-Süd”. Die Prozentzeichen sind Platzhalter für eine beliebige (oder keine) Zeichenfolge.

Verknüpfung von Abfragen mit OR und ANDMySQL-Code  SELECT * FROM tabellenname WHERE kunde_ort=freiburg' AND kunde_name='müller'   SELECT * FROM tabellenname WHERE kunde_name='mayer' OR kunde_name='maier' OR kunde_name='meyer' OR kunde_name='meier' Ausgabe sortieren mit ORDER BYMySQL-Code  SELECT * FROM tabellenname ORDER BY kunde_id  

sortiert nach Kunde-ID aufsteigend (bei Text: alphabetisch aufsteigend).

MySQL-Code  SELECT * FROM tabellenname ORDER BY kunde_ort, kunde_name  

sortiert nach Ort und dann nach Name (d.h. innerhalb eines Ortes nach Name, alphabetisch aufsteigend).

Um nicht aufsteigend, sondern absteigend zu sortieren, hängt man ein DESC an:

MySQL-Code

  SELECT * FROM tabellenname ORDER BY kunde_name DESC

Aktualisierung eines Datensatzes durch UPDATE:MySQL-Code  UPDATE tabellenname SET variablenname='neuer Inhalt' WHERE id=3 UPDATE tabellenname SET telefonnummer='neuer Inhalt', postleitzahl='neuer Inhalt' WHERE kunde_id=7

Statt id=3 kann auch ein anderes eindeutig identifizierendes Feld benutzt werden.

Ändern der Tabellenstruktur mit ALTER TABLE:

Mit ALTER TABLE tabellenname [Spezifikation]wird eine Tabelle verändert. Mögliche Spezifikationen:

RENAME– benennt die Tabelle um, z.B.

MySQL-Code  ALTER TABLE kunden RENAME bestandskunden  

ADD COLUMN– fügt ein Feld hinzu, z.B.

MySQL-Code  ALTER TABLE kunden ADD COLUMN registrierungsdatum TIMESTAMP

Die Position kann mit FIRST und AFTER angegeben werden (FIRST = neues Feld wird an den Anfang gesetzt, AFTER feldname= neues Feld wird nach feldnameeingefügt).

DROP COLUMN– löscht ein Feld, z.B.

MySQL-Code  ALTER TABLE kunden DROP COLUMN registrierungsdatum

CHANGE– Änderung eines Feldes, wobei die Attribute des Feldes neu angegeben werden müssen, z.B.

MySQL-Code  ALTER TABLE kunden CHANGE altername neuername VARCHAR(255) NOT NULL

oder um nur die Attribute zu ändern

MySQL-Code  ALTER TABLE search CHANGE altername altername VARCHAR(200) NOT NULLLöschen von Daten mit DELETE

DELETElöscht einen/mehrere Datensätze aus einer Tabelle. Mit

MySQL-Code  DELETE FROM tabellenname  

würden sämtliche Datensätze einer Tabelle gelöscht werden. Durch die Einschränkung WHERE

MySQL-Code  DELETE FROM tabellenname WHERE id=8

… würden im Beispiel alle Datensätze gelöscht werden, in denen das Feld idden Wert 8hat.

Löschen einer ganzen Tabelle mit DROP TABLEMySQL-Code  DROP TABLE tabellenname 

 

Quelle: http://www.informatikzentrale.de/mysql-abfragen.html

 

Nützliche Videos zu SQL:
• https://www.youtube.com/watch?v=E4uDCxUF45E&index=4&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_
• https://www.youtube.com/watch?v=hAxnxdCj4KQ&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=2
• https://www.youtube.com/watch?v=c0RGHsrb-5A&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=3
• https://www.youtube.com/watch?v=r0Eyhl7AQrM&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=1

 

Bewertung: 
5
Durchschnitt: 5 (2 Stimmen)

Kommentare

Heute startet unsere Serie zu SQL. Damit die gezeigte Datenbank-Anwendung klarer wird, beginnen wir mit einem ER-Modell. Im zweiten Video wird die Datenbank mit CREATE erzeugt und auch die Tabellen.

ER-Modell

https://www.youtube.com/watch?v=hAxnxdCj4KQ&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=1

CREATE

https://www.youtube.com/watch?v=hAxnxdCj4KQ&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=2

Neues Video online:

https://www.youtube.com/watch?v=c0RGHsrb-5A&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_&index=3

Wir schreiben mit SQL INSERT INTO Daten in die Datenbank. Im gezeigten Beispiel geschieht dies mit variablen Werten. Wir nutzen INSERT INTO um zum einen die 4 vorhandenen Tabellen mit einer vorgefertigten CSV zu befüllen und danach um mit dem Formular Daten zu erfassen.

 

(SQL 4) SELECT ORDER BY JOIN AS COUNT(*)

Der SQL Befel SELECT kann sehr vielfältig benutzt werden. Z.B. zum sortieren, zählen oder verknüpfen von Tabellen.

https://www.youtube.com/watch?v=E4uDCxUF45E&index=4&list=PLPjKx80JC4CCT8Mbazn4uKaplp-v3Jwz_

Der Hinweis auf SELECT AS ist sicherlich berechtig - sprengt aber den Rahmen im Bereich der allgemeinen (nicht digitalen) Verortung für Mediengestalter völligst! (Völlig subjektiver Erfahrungswert aus den Prüfungen seit 2000). Viel wichtiger wären in dem Kontext elementare Selects und deren Aufbau. Sowie UPDATE und DELETE. ALTER wird auch im Leben nicht drankommen, Genau so wenig wie CREATE, DROP und SELECT ORDER BY JOIN AS COUNT. Ein (einfacher) JOIN allerdings schon. Auch das Erfahrungswerte aus vorangegangenen Prüfungen.

Auch nullst vollständig, aber in dem Fall nur als Ergänzung (schon was älter, müsste ich mal ergänzen): Abschlussprüfung Mediengestalter Sommer 2013, Medienproduktion, Alle Fachrichtungen: U8 – SQL

Bin kompletter Neuling auf dem SQL Gebiet, hätte mal eine Frage zur Richtigkeit zur 1. Übung

auf dem hier hochgeladenen Pdf.. (Tabelle articles mit Apfel, Tomate, etc.)

Ist die Abfrage  

SELECT price FROM articles; WHERE name="Tomate"

korrekt?

 

Hallo Janmorres,

die Lösung ist korrekt - bis auf einen formalen Fehler.

Der Semikolon muss ans Ende. Mehrere Tabellen werden mit Kommata abgetrennt.

Viele Grüße

Thomas Hagenhofer

Ich hab da mal eine Frage an die Experten... kommen die Abfragen auf's gleiche raus und kann man beide so anwenden?: 

 

SELECT * FROM tabelle WHERE PLZ="06755";

SELECT * FROM tabelle WHERE PLZ LIKE "06755";

 

Kann man sowohl = als auch LIKE verwenden und ich komme zum gleichen Ergebnis?