In der SQL-Syntax ist 'from' in 'delete from' optional, wenn Sie 'where' verwenden möchten?

9

Ich bin neu in SQL. Wir haben etwas Code, der auf SQL Server 2005/2008, Oracle 10 sowie Sybase funktionieren sollte.

Ich habe ein Skript geschrieben, um herauszufinden, welche Tabellen eine bestimmte gespeicherte Prozedur ändert (aber nicht ablegt), z. B. insert , update und delete .

Das delete erwies sich als rätselhaft - manchmal sehe ich Aussagen wie:

%Vor%

im Gegensatz zu:

%Vor%

Also ... ist das from Schlüsselwort in diesem Fall wirklich optional? Ist das problematisch? Ist es nur ein schlechter Stil oder ist das egal?

Ich habe keinen Verweis auf T-SQL gefunden, der from optional machen würde. Ich nehme an, dass dies alle drei Anbieter, die ich oben erwähnt habe, vereinheitlichen würde.

Fragen / Kommentare / Links sind willkommen (oder willkommen?).

    
Hamish Grubijan 19.12.2010, 17:44
quelle

3 Antworten

7

An dieser Stelle ist FROM optional ( SQL Server , Oracle , Sybase ).

Es gibt jedoch feine Unterschiede: Oracle erlaubt zum Beispiel, dem Tabellennamen einen Alias ​​zuzuweisen, während dies bei SQL Server nicht der Fall ist. und andere Dinge sind auch ein bisschen anders.

Beachten Sie auch, dass sich Ihr FROM -Sample von den folgenden unterscheidet, wo es obligatorisch ist:

%Vor%     
Lucero 19.12.2010 17:48
quelle
5

Kurze Antwort: Luceros Antwort ist richtig: es ist optional

Ich muss sql pflegen und zwischen sql-server und Oracle anpassen. Hier einige Regeln:

  1. Schreiben Sie Skripte manuell, verwenden Sie keinen generierten Code
  2. Verwenden Sie immer INSERT INTO
  3. Allways DELETE - ohne FROM
  4. Verwenden Sie nicht "- Anführungszeichen"
  5. Entferne alle [] und dbo.
  6. Achtung, wenn Sie DELETE ... FROM ...
  7. sehen
  8. Achtung, wenn Sie UPDATE ... FROM ...
  9. sehen
  10. ORACLE Select-Anweisungen benötigen eine from-Klausel, die Sie von DUAL

    verwenden können
    1. OK, Sie können Ihre Objekte skripten und sie auf eine standardisierte Weise bearbeiten
      • USE [Current_DB] - Sie möchten nicht, dass ein Verweis auf Ihre Testdatenbank in das Produktionsskript übernommen wird
      • SET ANSI_NULLS ON - Entscheiden Sie einmal, welche Einstellungen verwendet werden sollen - nicht ein- und ausschalten
      • SET QUOTED_IDENTIFIER ON - Angegebene Bezeichner sind case-sensitive
    2. INSERT INTo wird von ORACLE
    3. benötigt
    4. Das ist mein persönlicher Stil, verwende kein optionales Schlüsselwort, lerne die Standardwerte
    5. Sie müssen einen Bezeichner angeben, wenn Sie eines der von ORACLES reservierten Schlüsselwörter als Spaltenname verwenden, haben wir diesen Fehlerfall entdeckt und auf lange Sicht wäre es besser gewesen, die Spalte auf der SQL Server-Seite umzubenennen >
    6. ORACLE verwendet diese nicht
    7. Oracle unterstützt diese Syntax nicht
    8. Oracle unterstützt diese Syntax nicht
bernd_k 19.12.2010 17:59
quelle
2

Aus der Microsoft SQL Server-Dokumentation ist FROM optional.

    
Joel Spolsky 19.12.2010 17:50
quelle

Tags und Links