Diskussion:Einführung in SQL: SQL-Befehle

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Aus Wikibooks

Formatierung[Bearbeiten]

Formatierung der Statements :

SELECT  v.VNE_NAME, 
       v.VNE_VORNAME, 
       v.VNE_STRASSE, 
       v.VNE_HAUSNUMMER, 
       v.VNE_PLZ, 
       v.VNE_ORT, 
       sum(s.SCF_SCHADENSHOEHE) as Gesamtschaden, 
       count(s.SCF_ID)          as Anzahl 
FROM    VERSICHERUNGSNEHMER v, 
       SCHADENSFAELLE s, 
       ZUORD_VNE_SCF z 
WHERE   year(s.SCF_DATUM)="2006" 
   AND v.VNE_ID         =z.ZVS_VERSICHERUNGSNEHMER_ID 
   AND s.SCF_ID         =z.ZVS_SCHADENSFALL_ID 
GROUP BY v.VNE_NAME, 
       v.VNE_VORNAME, 
       v.VNE_STRASSE, 
       v.VNE_HAUSNUMMER, 
       v.VNE_PLZ, 
       v.VNE_ORT 
ORDER BY Gesamtschaden, 
       Anzahl;

Formatierung der Statements ... Zuhilfename von www.sqlinform.de

Wirklich "nur" Einführungskapitel?[Bearbeiten]

Die Details und Beispiele für DML- und DDL-Befehle haben eine hohe Qualität. Ich glaube aber, dass diese Detailtiefe zu früh in diesem Buch kommt. Ich glaube, dass der Leser hier erschlagen wird. Stattdessen sollte er Schritt für Schritt an dieses Niveau herangeführt werden.

Die Beispiel gehören meiner Meinung nach in die Unterkapitel "Für Fortgeschrittene". Hier sollten wir nur eine Einführung bzw. einen Überblick geben, damit der Leser den Unterschied zwischen DDL- und DML-Befehlen kennen lernt.

Was meint ihr dazu? Gruß Mcflash 18:17, 2. Dez. 2007 (CET)[Beantworten]

Ist eine echt schwierige Frage. IMHO handelt es sich bei den Sachen, die da momentan stehen, tatsächlich nur um Grundlagen. Das Fortgeschrittenenwissen zeigt sich IMHO bei den vielen Feinheiten, die man noch beachten muß, z.B. habe ich die Möglichkeit, mehrere Tabellen zu joinen, nur angedeutet. Nach meiner Erfahrung gibt es da aber noch einiges an Untiefen, was zu umschiffen wäre, und was dann auch zu den Fortgeschrittenen hingehört.
Ich sehe aber, daß man da durchaus anderer Meinung sein kann. Ich habe das Gefühl, daß Du eher derjenige mit dem Plan bist, als ich, und würde mich deshalb auch Deiner Meinung beugen. Beste Grüße --Turelion 22:36, 2. Dez. 2007 (CET)[Beantworten]
Danke für Deine Meinung! Ich denke auch, dass die SQL-Statements nur das Grundlagenwissen enthalten (Das Buch heisst ja auch "Einführung in SQL"). Ich möchte den "SQL-Neuling" aber Schritt für Schritt an dieses Niveau heranbringen.
Vielleicht haben ja auch andere hierzu ein Meinung. Ich schlage vor, dass wir die Diskussion offen lassen, solange die Kapitel "Der Einstieg" noch nicht fertig sind. Dann können wir immer noch entscheiden und vielleicht ergibt sich die Entscheidung dann aus der detaillierteren Struktur des Buches oder es gibt andere (bessere) Vorschläge/Ideen. Gruß Mcflash 19:39, 3. Dez. 2007 (CET)[Beantworten]
Ich finde auch, dass in diesem geundsätzlichen Kapitel schon ziemlich komplexe SQL-Statements stehen. Um die Unterschiede zwischen DDL und DML zu erläutern, würde ein ganz einfaches CREATE TABLE und ein ganz einfaches SELECT-Statement reichen. Wenn dann noch ein Beispiel für DCL als GRANT und noch REVOKE dazukommen, dann wäre aus meiner Sicht die grundsätzliche Einleitung in ein SQL-Buch erst mal erledigt. Den CREATE DATABASE und die ALTER TABLE - Statements würde ich hier nicht reinschreiben, denn diese Befehle sind gar nicht so einfach bei den verschiedenen Datenbanken. Bei Oracle z.B. muss man bei CREATE DATABASE noch etliche weitere Angaben machen. Da würde ich lieber ein eigenen DDL-Kapitel in das Buch hinzufügen, und dann detaillierter auf diese Befehle eingehen. Das Beispiel mit dem Join gehört in dieses Grundlagen-Kapitel auch nicht rein. Joins sind für einen Anfänger erst mal schwer zu verstehen und erfordern noch einiges mehr an Erläuterung. Und gerade dieses Beispiel verwendet zusätzlich noch einige Funktionen. Das stiftet bei einem Anfänger eher Verwirrung und Resignation, als Neugierde und Befriedigung über den gewonnenen Überblick. --Julius-m 10:33, 24. Jan. 2008 (CET)[Beantworten]
Gut, ich gebe mich geschlagen ;-). Vor allem, weil es nicht um die Inhalte an sich, sondern nur um deren Positionierung geht. --Turelion 17:45, 24. Jan. 2008 (CET)[Beantworten]

Verknüpfung von Tabellen mit JOIN oder nicht?[Bearbeiten]

Ich beabsichtige, im Kapitel "Mehrere Tabellen" vorzugsweise JOIN zu verwenden mit entsprechenden Erläuterungen. Wenn ich soweit bin, werde ich aus diesem Kapitel die Meinungsäußerung des bisherigen Autors entfernen und in die Diskussion verschieben mit einem Kommentar meinerseits. Nach allem, was ich in der Literatur gelesen habe, sind JOINs praktischer und vielfältiger zu nutzen als die einfache Verknüpfung mehrerer Tabellen durch WHERE. Juetho 11:15, 6. Jun. 2009 (CEST)[Beantworten]

So, es ist jetzt soweit. Benutzer:Turelion hatte in einer früheren Version als Kommentar eingefügt:

Moderne SQL-Programmierer lieben es, zu den verschiedenen JOIN-Klauseln (INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL JOIN) zu greifen, um Tabellen miteinander zu verknüpfen. Nach meiner unwerten Meinung machen diese jedoch die SELECT-Abfrage unübersichtlich und erschweren die Fehlersuche. Nach dem ISO-Standard SQL-92, nicht mehr aktuell aber immer noch gültig, ist die Verknüpfung mehrerer Tabellen mit FROM und geschickten WHERE-Bedingungen vorgesehen. Meine Praktikumsmentorin meinte sogar, dass die Abarbeitung schneller ist als mit JOINs, aber dazu habe ich auch andere Meinungen gehört. Benutzer:Turelion 13:34, 18. Febr. 2007 (CET)

Alles, was ich bisher gelesen habe, empfiehlt eindeutig die Verknüpfung per JOIN. Dabei ist klar zu erkennen, auf welchem Weg und mit welchen Spalten die Tabellen verknüpft werden; die WHERE-Klausel enthält demgegenüber wirklich "nur" die Bedingungen, welche Datensätze gesucht werden sollen. Insofern halte ich dies für übersichtlicher und leichter verständlich. Aus diesem Grund entferne ich Turelions Anmerkung aus dem Text und arbeite vorzugsweise mit JOIN. Siehe auch die (noch folgende) Erläuterung im Kapitel Mehrere Tabellen. -- Juetho 15:28, 5. Aug. 2009 (CEST)[Beantworten]

Angabe PLAN bei SELECT[Bearbeiten]

Die Angabe PLAN <plan-ausdruck> gehört nicht zum ANSI-SQL-Sprachumfang. Bei vielen Datenbank-Produkten ist eine solche Angabe gar nicht vorgesehen. Außerden sollte ein Einführungskapitel keinen Anspruch auf Vollständigkeit haben, sondern es sollte die wesentlichen Grundzüge der SQL-Sprache beschreiben. Nachfolgend kann man ja zu jedem Detail noch weitere Spezial-Kapitel verfassen, in dem alle Einzelheiten ausführlich beschrieben werden. --Julius-m 22:34, 20. Sep. 2009 (CEST)[Beantworten]

Du hast recht. Das gehört zu den Punkten, warum mir die wiederholte "Einführung in SELECT" nicht (mehr) gefällt. In Einführung in SQL: Ausführliche SELECT-Struktur habe ich es bereits gestrichen. Das muss hier auch noch gemacht werden. -- Juetho 09:01, 21. Sep. 2009 (CEST)[Beantworten]
Erledigt. -- Juetho 11:15, 21. Sep. 2009 (CEST)[Beantworten]

DCL-Befehle[Bearbeiten]

Hier fehlen noch die Befehle COMMIT und ROLLBACK. --Julius-m 22:38, 20. Sep. 2009 (CEST)[Beantworten]

Wirklich DCL? Unter Einführung in SQL: Befehlsreferenz, was früher eine eigenständige Seite war und noch nicht überarbeitet ist, gehören diese Befehle zu DML; das scheint mir auch besser zu passen. Mir gefällt es nicht so sehr, das bereits unter den "grundsätzlichen" Befehlen zu erwähnen (auch wenn es für ein RDBMS eklatant wichtig ist). In Einführung in SQL: Transaktionen muss es natürlich behandelt werden. -- Juetho 09:06, 21. Sep. 2009 (CEST)[Beantworten]
Zur DML gehören diese Befehle ganz sicher nicht, denn dadurch werden keine Anweisungen gegeben, um Daten zu verändern. In der Literatur habe ich diese Befehle auch schon unter einer eigenen Rubrik aufgeführt gesehen: TCL = Transaction Control Language. Ach ja, dazu gehören dann auch noch SAVEPOINT und ROLLBACK TO SAVEPOINT. Ich vermute aber, dass diese Technik nicht von allen DBMS-Produkten unterstützt wird. --Julius-m 22:16, 21. Sep. 2009 (CEST)[Beantworten]
Tatsächlich, TCL = Transaction Control Language habe ich auch schon gelesen. Dann scheint mir eine eigene Rubrik am vernünftigsten zu sein. -- Juetho 10:28, 22. Sep. 2009 (CEST)[Beantworten]
OK, in Einführung in SQL: Befehlsreferenz jetzt so umgesetzt. Hier möchte ich es noch nicht ändern, sondern erst dann, wenn die Gliederung geändert wurde. -- Juetho 12:19, 22. Sep. 2009 (CEST)[Beantworten]

DML-Befehle[Bearbeiten]

Der folgende allgemeine Hinweis war in der früheren Version (vor der Neugliederung vom 03./04.10.2009) im Kapitel "Grundsätzliche SQL-Befehle" enthalten:

Der SQL-Neuling wird sofort bemerken, dass der INSERT-Befehl eine sehr umständliche Methode ist, Daten in eine Datenbank einzugeben, besonders, wenn er schon mit Eingabemasken und GUIs gearbeitet hat. Das ist richtig, DML legt generell mehr Wert auf Genauigkeit als auf Einfachheit. Der Wert von INSERT wird aber schnell deutlich, wenn man sich fragt, wie eine solche Eingabemaske funktioniert. Sie verarbeitet nämlich die vom Benutzer eingegebenen Werte und macht daraus einen passenden INSERT-Befehl (oder UPDATE oder DELETE), der an die Datenbankschnittstelle übergeben wird. Und das ist auch das Haupteinsatzgebiet von DML.

Diesen Absatz möchte ich in irgendeiner Weise behalten, weiß aber noch nicht recht wo; unter "DML (2) - Daten speichern" passt er jedenfalls nicht. Ich habe ihn deshalb vorläufig hier "geparkt". Vielleicht hat jemand einen Vorschlag, wo er (vermutlich mit Umformulierungen) hinpasst. -- Juetho 17:26, 4. Okt. 2009 (CEST)[Beantworten]