PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

चयन * कथन में कॉलम ऑर्डर - गारंटीकृत?

आइए SQL मानक पर विचार करें, खंड 7.9 <query specification> जैसा कि यहां बताया गया है:

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

<query specification> ::=
          SELECT [ <set quantifier> ] <select list> <table expression>
[...]
<select list> ::=
            <asterisk>
          | <select sublist> [ { <comma> <select sublist> }... ]

[...]
Syntax Rules
1) Let T be the result of the <table expression>.
3) Case:
       a) [...]
       b) Otherwise, the <select list> "*" is equivalent to a <value
          expression> sequence in which each <value expression> is a
          <column reference> that references a column of T and each
          column of T is referenced exactly once. The columns are ref-
          erenced in the ascending sequence of their ordinal position
          within T.

तो, दूसरे शब्दों में, हाँ, SQL मानक निर्दिष्ट करता है कि स्तंभों को T के भीतर उनकी क्रमिक स्थिति के अनुसार प्रक्षेपित किया जाना है . ध्यान दें, चीजें थोड़ी मुश्किल हो जाती हैं, जब आपकी <table expression> JOIN .. USING . को शामिल करने वाली कई तालिकाएं शामिल हैं या NATURAL JOIN खंड। हालांकि, एक साधारण तालिका से चयन करते समय, आप शायद यह मानकर ठीक हैं कि आदेश अपेक्षित है।

पूर्णता के लिए, ordinal position within T . का अर्थ तालिकाओं के लिए 11.4 <column definition> . में और नीचे समझाया गया है :

General Rules
     5) [...] The ordinal position included
        in the column descriptor is equal to the degree of T. [...]

और फिर 11.11 <add column definition> . में (ALTER TABLE के लिए बयान)

General Rules
     4) [...] In particular, the degree of T
        is increased by 1 and the ordinal position of that column is
        equal to the new degree of T as specified in the General Rules
        of Subclause 11.4, "<column definition>".

कुछ अन्य SQL कथन और खंड हैं जो ordinal positions के औपचारिक विनिर्देश पर निर्भर करते हैं <table expressions> के भीतर . कुछ उदाहरण:

13.8 <insert statement> 
     (when omitting the `<insert column list>`)
20.2 <direct select statement: multiple rows>
     (when `<sort specification>` contains an `<unsigned integer>`)

पोस्टग्रेज, विशेष रूप से, काफी मानकों के अनुरूप है, इसलिए यदि आप वास्तव में SELECT * . करना चाहते हैं , आगे बढ़ो!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज के लिए पोस्टग्रेएसक्यूएल विकसित करना, भाग 3

  2. Postgresql में आईडी कॉलम स्थिति महत्वपूर्ण है?

  3. कैसे सिंह () PostgreSQL में काम करता है

  4. विंडोज के लिए पोस्टग्रेएसक्यूएल विकसित करना, भाग 2

  5. मैं PostgreSQL ट्रिगर से ईमेल कैसे भेज सकता हूं?