<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # INSERT ## Name INSERT?--?在表中創建新行 ## Synopsis ``` [ WITH [ RECURSIVE ] _with_query_ [, ...] ] INSERT INTO _table_name_ [ ( _column_name_ [, ...] ) ] { DEFAULT VALUES | VALUES ( { _expression_ | DEFAULT } [, ...] ) [, ...] | _query_ } [ RETURNING * | _output_expression_ [ [ AS ] _output_name_ ] [, ...] ] ``` ## 描述 `INSERT`向表中插入新行。可以一次插入用值表達式聲明的一行或多行, 或者一個查詢結果表現出來的零行或多個行。 目標列表中的列/字段可以按任何順序排列。如果完全沒有列出任何字段名,那么缺省是全部字段, 順序是按照表聲明的時候的順序;如果`VALUES`子句或者`_query_` 里面只提供了`_N_`個字段,那么就是頭`_N_`個字段。`VALUES` 子句或者`_query_`提供的數值是以從左到右的方式與明確或者隱含的字段列表關聯的。 每個沒有在明確或者隱含的字段列表中出現的字段都將填充缺省值, 如果有聲明的缺省值則用聲明的那個,如果沒有則用 NULL 。 如果每個字段的表達式不是正確的數據類型,系統將試圖進行自動的類型轉換。 可選的`RETURNING`子句將導致`INSERT`計算和返回實際插入的行, 它主要用于獲取缺省的計算值(比如序列值),不過,任何使用該表字段的表達式都是允許的。 `RETURNING`列表的語法都與`SELECT`的輸出列表相同。 要想向表中插入數據,你必須有`INSERT`權限。如果指定了一個字段列表, 那么只需要在列表字段上的`INSERT`權限。使用`RETURNING` 子句需要要在`RETURNING`中提到的所有字段上的`SELECT`權限。 如果你使用了`_query_`子句插入來自查詢里的數據行, 你還需要擁有在查詢里使用的表或字段的`SELECT`權限。 ## 參數 `_with_query_` `WITH`子句允許聲明一個或多個可以在`INSERT` 查詢中通過名字引用的子查詢。參閱[Section 7.8](#calibre_link-515)和 [SELECT](#calibre_link-104)獲取詳細信息。 `_query_`(`SELECT` 語句) 也包含一個`WITH`子句是可能的。在這種情況下,兩套 `_with_query_`都可以在`_query_` 中引用,但是第二個優先,因為它嵌套更緊密。 `_table_name_` 現存表的名稱(可以有模式修飾)。 `_column_name_` 通過`_table_name_`命名的表中的字段名。必要時, 字段名可以有子字段名或者數組下標修飾。向一個復合類型中的某些字段插入數據的話, 其它字段將是 NULL 。 `DEFAULT VALUES` 所有字段都會用它們的缺省值填充。 `_expression_` 賦予對應的 column 的一個有效表達式或值。 `DEFAULT` 對應的 column 將被它的缺省值填充。 `_query_` 一個查詢(`SELECT`語句),它提供插入的數據行。請參考[SELECT](#calibre_link-104) 語句獲取語法描述。 `_output_expression_` `INSERT`命令在每一行都被插入之后用于計算輸出結果的表達式。該表達式可以使用 通過`_table_name_`命名的表的的任意字段。 可以使用`*`返回被插入行的所有字段。 `_output_name_` 一個字段的輸出名稱。 ## 輸出 成功完成后,一條 `INSERT`命令返回一個下面形式的命令標簽 ``` INSERT _oid_ _count_ ``` `_count_`是插入的行數。如果 `_count_`正好是一,并且目標表有 OID , 那么`_oid_`是賦予插入行的OID。 否則`_oid_`是零。 如果`INSERT`命令包含`RETURNING`子句,其結果將和一個`SELECT` 語句相同,包含那些基于該命令實際插入的行計算的、定義在`RETURNING`列表中的字段的值。 ## 例子 向表`films`里插入單獨一行: ``` INSERT INTO films VALUES ('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes'); ``` 在這個例子里面省略了字段`len`,因此在它里面將存儲缺省值: ``` INSERT INTO films (code, title, did, date_prod, kind) VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama'); ``` 在這個例子里,用`DEFAULT`子句作為日期字段,而不是聲明一個數值: ``` INSERT INTO films VALUES ('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes'); INSERT INTO films (code, title, did, date_prod, kind) VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama'); ``` 插入一行完全由缺省值組成的數據行: ``` INSERT INTO films DEFAULT VALUES; ``` 使用多行`VALUES`語法插入多行: ``` INSERT INTO films (code, title, did, date_prod, kind) VALUES ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'), ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy'); ``` 從表`tmp_films`中插入幾行到表 `films`中, 字段布局與`films`相同: ``` INSERT INTO films SELECT * FROM tmp_films WHERE date_prod < '2004-05-07'; ``` 插入數組: ``` -- 創建一個空的3x3游戲板來玩圈-和-叉游戲(這些查詢創建相同的板屬性) INSERT INTO tictactoe (game, board[1:3][1:3]) VALUES (1, '{{" "," "," "},{" "," "," "},{" "," "," "}}'); -- 上述例子中的下標并非真正必須 INSERT INTO tictactoe (game, board) VALUES (2, '{{X," "," "},{" ",O," "},{" ",X," "}}'); ``` 向`distributors`表插入一個單獨的行,并返回由`DEFAULT` 子句生成的序列值: ``` INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets') RETURNING did; ``` 增加銷售人員為Acme Corporation的打折力度,并且在日志表中記錄真個更新了的行和當前時間: ``` WITH upd AS ( UPDATE employees SET sales_count = sales_count + 1 WHERE id = (SELECT sales_person FROM accounts WHERE name = 'Acme Corporation') RETURNING * ) INSERT INTO employees_log SELECT *, current_timestamp FROM upd; ``` ## 兼容性 `INSERT`語句與 SQL 標準兼容。但`RETURNING`子句是 PostgreSQL擴展,就像在`INSERT`中使用`WITH`。 同樣,省略字段名列表,但是并非所有字段都從`VALUES`子句或者`_query_` 填充的這種用法是標準不允許的。 可能碰到的關于`_query_`子句特性的限制在 [SELECT](#calibre_link-104)語句中有相關文檔。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看