天天看點

PostgreSQL , Oracle command reference 文法手冊解讀

标簽

PostgreSQL , reference , 文法 , Oracle

https://github.com/digoal/blog/blob/master/201806/20180613_01.md#%E8%83%8C%E6%99%AF 背景

我們在查文法手冊是,比如Oracle, PostgreSQL 文法手冊,經常看到裡面很多這樣的東西,

postgres=# \h insert  
Command:     INSERT  
Description: create new rows in a table  
Syntax:  
[ WITH [ RECURSIVE ] with_query [, ...] ]  
INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]  
    [ OVERRIDING { SYSTEM | USER} VALUE ]  
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }  
    [ ON CONFLICT [ conflict_target ] conflict_action ]  
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]  
  
where conflict_target can be one of:  
  
    ( { index_column_name | ( index_expression ) } [ COLLATE collation ] [ opclass ] [, ...] ) [ WHERE index_predicate ]  
    ON CONSTRAINT constraint_name  
  
and conflict_action is one of:  
  
    DO NOTHING  
    DO UPDATE SET { column_name = { expression | DEFAULT } |  
                    ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |  
                    ( column_name [, ...] ) = ( sub-SELECT )  
                  } [, ...]  
              [ WHERE condition ]  
           

有大寫,有效寫,有沒有括号的,有小括号,有中括号,有大括号,有逗号,有勝利号,有豎線。它們是什麼含義呢:

1、大寫:關鍵字

2、小寫:變量,使用者輸入,或者下面對應的SUB SECTION的内容替換

3、小括号:沒有特别含義,注意在輸入時,小括号本身需要輸入

4、大括号:裡面的内容為必選内容,大括号不需要輸入

5、中括号:裡面的内容為可選内容,中括号不需要輸入

6、豎線:被豎線分開的内容,為任選一的内容,豎線不需要輸入

7、中括号+逗号+省略号:表示中括号前面的内容可以被多次輸入,逗号本身需要輸入

8、中括号+省略号:表示中括号前面的内容可以被多次輸入,沒有逗号

https://github.com/digoal/blog/blob/master/201806/20180613_01.md#%E5%8F%82%E8%80%83 參考

https://www.postgresql.org/docs/current/static/sql-commands.html https://www.postgresql.org/docs/10/static/notation.html