In SQL syntax, is 'from' in 'delete from' optional if you plan to use 'where'?

前端 未结 3 1507
被撕碎了的回忆
被撕碎了的回忆 2021-01-17 08:34

I am new to SQL. We have some code that should work on SQL Server 2005/2008, Oracle 10 as well as Sybase.

I was writing a script to try to figure out which tables a

相关标签:
3条回答
  • 2021-01-17 09:19

    From the Microsoft SQL Server documentation, FROM is optional.

    0 讨论(0)
  • 2021-01-17 09:25

    Short Answer: Luceros answer is correct: it is optional

    I have to maintain sql and adapt it between sql-server and Oracle. Here are some rules:

    1. Write Scripts manually, don't use generated code.
    2. Always use INSERT INTO.
    3. Always DELETE -- without FROM.
    4. Do not use " - quoted identifier.
    5. Remove all [ ] and dbo. (Schema names)
    6. Attention when you see DELETE ... FROM ...
    7. Attention when you see UPDATE ... FROM ...
    8. ORACLE Select statements need a from clause you can use from DUAL

      1. OK you can script your objects and edit them in a standard way
        • USE [Current_DB] -- you don't want a reference to your test database go into production script
        • SET ANSI_NULLS ON -- decide once which settings to use -- don't switch on and off
        • SET QUOTED_IDENTIFIER ON -- quoted identifiers are case-sensitive.
      2. INSERT INTO is required by Oracle.
      3. That is my personal style don't use optional keyword, learn the defaults
      4. You have to quote an identifier, if you use one of ORACLES reserved keywords as column name, we entered that pitfall and in the long run it would have been better to rename the column on the sql-Server side.
      5. Oracle doesn't use these.
      6. Oracle doesn't support this syntax.
      7. Oracle doesn't support this syntax.
    0 讨论(0)
  • 2021-01-17 09:36

    At this place the FROM is optional (SQL Server, Oracle, Sybase).

    However, there are subtle differences: Oracle for instance allows assigning an alias to the table name, where SQL Server doesn't; and other things are also a little bit different.

    Also note that your FROM sample is differnet from the following where it is mandatory:

    DELETE phone_book FROM some_table WHERE ...
    
    0 讨论(0)
提交回复
热议问题