sql >> データベース >  >> RDS >> Mysql

SQL INSERT構文–DBMSによってリストされます

    この記事では、SQL INSERTを一覧表示します さまざまなデータベース管理システム(DBMS)によって実装される構文。構文は、各ベンダーがWebサイトにリストしているとおりに正確にリストされています。特定のベンダーの構文の詳細を表示するには、該当するリンクをクリックしてください。

    対象となるDBMSは、MySQL、SQL Server、PostgreSQL、およびOracleデータベースです。

    MySQL

    MySQL 5.7リファレンスマニュアルから:

    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name
        [PARTITION (partition_name,...)] 
        [(col_name,...)]
        {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
        [ ON DUPLICATE KEY UPDATE
          col_name=expr
            [, col_name=expr] ... ]

    または:

    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name
        [PARTITION (partition_name,...)]
        SET col_name={expr | DEFAULT}, ...
        [ ON DUPLICATE KEY UPDATE
          col_name=expr
            [, col_name=expr] ... ]

    または:

    INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name
        [PARTITION (partition_name,...)] 
        [(col_name,...)]
        SELECT ...
        [ ON DUPLICATE KEY UPDATE
          col_name=expr
            [, col_name=expr] ... ]

    SQL Server

    Transact-SQLリファレンスから:

    [ WITH <common_table_expression> [ ,...n ] ]
    INSERT 
    {
            [ TOP ( expression ) [ PERCENT ] ] 
            [ INTO ] 
            { <object> | rowset_function_limited 
              [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
            }
        {
            [ ( column_list ) ] 
            [ <OUTPUT Clause> ]
            { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ] 
            | derived_table 
            | execute_statement
            | <dml_table_source>
            | DEFAULT VALUES 
            }
        }
    }
    [;]

    <object> ::=
    { 
        [ server_name . database_name . schema_name . 
          | database_name .[ schema_name ] . 
          | schema_name . 
        ]
      table_or_view_name
    }
    
    <dml_table_source> ::=
        SELECT <select_list>
        FROM ( <dml_statement_with_output_clause> ) 
          [AS] table_alias [ ( column_alias [ ,...n ] ) ]
        [ WHERE <search_condition> ]
            [ OPTION ( <query_hint> [ ,...n ] ) ]
    
    <column_definition> ::=
     column_name <data_type>
        [ COLLATE collation_name ]
        [ NULL | NOT NULL ]
    
    <data type> ::= 
    [ type_schema_name . ] type_name 
        [ ( precision [ , scale ] | max ]

    -- External tool only syntax
    INSERT 
    {
        [BULK]
        [ database_name . [ schema_name ] . | schema_name . ]
        [ table_name | view_name ]
        ( <column_definition> )
        [ WITH (
            [ [ , ] CHECK_CONSTRAINTS ]
            [ [ , ] FIRE_TRIGGERS ]
            [ [ , ] KEEP_NULLS ]
            [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
            [ [ , ] ROWS_PER_BATCH = rows_per_batch ]
            [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
            [ [ , ] TABLOCK ]
        ) ]
    }
    [; ]

    PostgreSQL

    PostgreSQL 9.5マニュアルから:

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]
        { 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 [, ...] ) = ( { expression | DEFAULT } [, ...] ) |
                        ( column_name [, ...] ) = ( sub-SELECT )
                      } [, ...]
                  [ WHERE condition ]

    Oracleデータベース

    Oracle Database Online Documentation 12 cから リリース1(12.1):

    INSERT [ hint ]
       { single_table_insert | multi_table_insert } ;

    以下は、条項とその構成要素の副条項の説明です。

    single_table_insert ::=

    insert_into_clause
    { values_clause [ returning_clause ]
    | subquery 
    } [ error_logging_clause ]

    insert_into_clause ::=

    INTO dml_table_expression_clause [ t_alias ]
    [ (column [, column ]...) ]

    values_clause ::=

    VALUES ({ expr | DEFAULT }
              [, { expr | DEFAULT } ]...
           )

    returning_clause ::=

    { RETURN | RETURNING } expr [, expr ]...
    INTO data_item [, data_item ]...

    multi_table_insert ::=

    { ALL
      { insert_into_clause [ values_clause ] [error_logging_clause] }...
    | conditional_insert_clause
    } subquery

    conditional_insert_clause ::=

    [ ALL | FIRST ]
    WHEN condition
    THEN insert_into_clause
      [ values_clause ]
      [ error_logging_clause ]
      [ insert_into_clause [ values_clause ] [ error_logging_clause ] ]...
    [ WHEN condition
      THEN insert_into_clause
        [ values_clause ]
        [ error_logging_clause ]
        [ insert_into_clause [ values_clause ] [ error_logging_clause ] ]...
    ]...
    [ ELSE insert_into_clause
      [ values_clause ]
      [ error_logging_clause ]
       [ insert_into_clause [ values_clause ] [ error_logging_clause ] ]...
    ]

    DML_table_expression_clause ::=

    { [ schema. ]
      { table
        [ partition_extension_clause
        | @ dblink
        ]
      | { view | materialized view } [ @ dblink ]
      }
    | ( subquery [ subquery_restriction_clause ] )
    | table_collection_expression
    }

    partition_extension_clause ::=

    { PARTITION (partition)
    | PARTITION FOR (partition_key_value [, partition_key_value]...)
    | SUBPARTITION (subpartition)
    | SUBPARTITION FOR (subpartition_key_value [, subpartition_key_value]...)
    }

    subquery_restriction_clause ::=

    WITH { READ ONLY
         | CHECK OPTION 
         } [ CONSTRAINT constraint ]

    table_collection_expression ::=

    TABLE (collection_expression) [ (+) ]

    error_logging_clause ::=

    LOG ERRORS 
      [ INTO [schema.] table ]
      [ (simple_expression) ]
      [ REJECT LIMIT { integer | UNLIMITED } ]

    挿入について ステートメント

    挿入 ステートメントは、新しい行をテーブルに挿入します。値式で指定された1つ以上の行、またはクエリの結果として得られた0つ以上の行を挿入できます。


    1. SQLServer内の正規表現

    2. データモデリングにおけるセキュリティアプローチ。パート4

    3. mySQL-3つのテーブルのデータと列を使用して新しいテーブルを作成する

    4. Moodle3.9でデータベーストラフィックの読み取り/書き込み分割を使用してパフォーマンスを向上させる