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

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

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

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

    MySQL

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

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        (create_definition,...)
        [table_options]
        [partition_options]
    
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        [(create_definition,...)]
        [table_options]
        [partition_options]
        [IGNORE | REPLACE]
        [AS] query_expression
    
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        { LIKE old_tbl_name | (LIKE old_tbl_name) }
    
    create_definition:
        col_name column_definition
      | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
          [index_option] ...
      | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
          [index_option] ...
      | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]
          [index_name] [index_type] (index_col_name,...)
          [index_option] ...
      | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)
          [index_option] ...
      | [CONSTRAINT [symbol]] FOREIGN KEY
          [index_name] (index_col_name,...) reference_definition
      | CHECK (expr)
    
    column_definition:
        data_type [NOT NULL | NULL] [DEFAULT default_value]
          [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
          [COMMENT 'string']
          [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
          [STORAGE {DISK|MEMORY|DEFAULT}]
          [reference_definition]
      | data_type [GENERATED ALWAYS] AS (expression)
          [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment]
          [NOT NULL | NULL] [[PRIMARY] KEY]
    
    data_type:
        BIT[(length)]
      | TINYINT[(length)] [UNSIGNED] [ZEROFILL]
      | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
      | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
      | INT[(length)] [UNSIGNED] [ZEROFILL]
      | INTEGER[(length)] [UNSIGNED] [ZEROFILL]
      | BIGINT[(length)] [UNSIGNED] [ZEROFILL]
      | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
      | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
      | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
      | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]
      | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]
      | DATE
      | TIME[(fsp)]
      | TIMESTAMP[(fsp)]
      | DATETIME[(fsp)]
      | YEAR
      | CHAR[(length)] [BINARY]
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | VARCHAR(length) [BINARY]
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | BINARY[(length)]
      | VARBINARY(length)
      | TINYBLOB
      | BLOB
      | MEDIUMBLOB
      | LONGBLOB
      | TINYTEXT [BINARY]
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | TEXT [BINARY]
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | MEDIUMTEXT [BINARY]
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | LONGTEXT [BINARY]
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | ENUM(value1,value2,value3,...)
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | SET(value1,value2,value3,...)
          [CHARACTER SET charset_name] [COLLATE collation_name]
      | JSON
      | spatial_type
    
    index_col_name:
        col_name [(length)] [ASC | DESC]
    
    index_type:
        USING {BTREE | HASH}
    
    index_option:
        KEY_BLOCK_SIZE [=] value
      | index_type
      | WITH PARSER parser_name
      | COMMENT 'string'
    
    reference_definition:
        REFERENCES tbl_name (index_col_name,...)
          [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
          [ON DELETE reference_option]
          [ON UPDATE reference_option]
    
    reference_option:
        RESTRICT | CASCADE | SET NULL | NO ACTION
    
    table_options:
        table_option [[,] table_option] ...
    
    table_option:
        ENGINE [=] engine_name
      | AUTO_INCREMENT [=] value
      | AVG_ROW_LENGTH [=] value
      | [DEFAULT] CHARACTER SET [=] charset_name
      | CHECKSUM [=] {0 | 1}
      | [DEFAULT] COLLATE [=] collation_name
      | COMMENT [=] 'string'
      | COMPRESSION [=] {'ZLIB'|'LZ4'|'NONE'}
      | CONNECTION [=] 'connect_string'
      | DATA DIRECTORY [=] 'absolute path to directory'
      | DELAY_KEY_WRITE [=] {0 | 1}
      | ENCRYPTION [=] {'Y' | 'N'}
      | INDEX DIRECTORY [=] 'absolute path to directory'
      | INSERT_METHOD [=] { NO | FIRST | LAST }
      | KEY_BLOCK_SIZE [=] value
      | MAX_ROWS [=] value
      | MIN_ROWS [=] value
      | PACK_KEYS [=] {0 | 1 | DEFAULT}
      | PASSWORD [=] 'string'
      | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
      | STATS_AUTO_RECALC [=] {DEFAULT|0|1}
      | STATS_PERSISTENT [=] {DEFAULT|0|1}
      | STATS_SAMPLE_PAGES [=] value
      | TABLESPACE tablespace_name
      | UNION [=] (tbl_name[,tbl_name]...)
    
    partition_options:
        PARTITION BY
            { [LINEAR] HASH(expr)
            | [LINEAR] KEY [ALGORITHM={1|2}] (column_list)
            | RANGE{(expr) | COLUMNS(column_list)}
            | LIST{(expr) | COLUMNS(column_list)} }
        [PARTITIONS num]
        [SUBPARTITION BY
            { [LINEAR] HASH(expr)
            | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) }
          [SUBPARTITIONS num]
        ]
        [(partition_definition [, partition_definition] ...)]
    
    partition_definition:
        PARTITION partition_name
            [VALUES 
                {LESS THAN {(expr | value_list) | MAXVALUE} 
                | 
                IN (value_list)}]
            [[STORAGE] ENGINE [=] engine_name]
            [COMMENT [=] 'comment_text' ]
            [DATA DIRECTORY [=] 'data_dir']
            [INDEX DIRECTORY [=] 'index_dir']
            [MAX_ROWS [=] max_number_of_rows]
            [MIN_ROWS [=] min_number_of_rows]
            [TABLESPACE [=] tablespace_name] 
            [(subpartition_definition [, subpartition_definition] ...)]
    
    subpartition_definition:
        SUBPARTITION logical_name
            [[STORAGE] ENGINE [=] engine_name]
            [COMMENT [=] 'comment_text' ]
            [DATA DIRECTORY [=] 'data_dir']
            [INDEX DIRECTORY [=] 'index_dir']
            [MAX_ROWS [=] max_number_of_rows]
            [MIN_ROWS [=] min_number_of_rows]
            [TABLESPACE [=] tablespace_name] 
    
    query_expression:
        SELECT ...   (Some valid select or union statement)

    SQL Server

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

    CREATE TABLE 
        [ database_name . [ schema_name ] . | schema_name . ] table_name 
        [ AS FileTable ]
        ( { <column_definition> | <computed_column_definition> 
            | <column_set_definition> | [ <table_constraint> ] [ ,...n ] } )
        [ ON { partition_scheme_name ( partition_column_name ) | filegroup 
            | "default" } ] 
        [ { TEXTIMAGE_ON { filegroup | "default" } ] 
        [ FILESTREAM_ON { partition_scheme_name | filegroup 
            | "default" } ]
        [ WITH ( <table_option> [ ,...n ] ) ]
    [ ; ]
    
    <column_definition> ::= 
    column_name <data_type>
        [ FILESTREAM ]
        [ COLLATE collation_name ] 
        [ SPARSE ]
        [ NULL | NOT NULL ]
        [ 
            [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] 
          | [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ] 
        ]
        [ ROWGUIDCOL ] 
        [ <column_constraint> [ ...n ] ] 
    
    <data type> ::= 
    [ type_schema_name . ] type_name 
        [ ( precision [ , scale ] | max | 
            [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ] 
    
    <column_constraint> ::= 
    [ CONSTRAINT constraint_name ] 
    {     { PRIMARY KEY | UNIQUE } 
            [ CLUSTERED | NONCLUSTERED ] 
            [ 
                WITH FILLFACTOR = fillfactor  
              | WITH ( < index_option > [ , ...n ] ) 
            ] 
            [ ON { partition_scheme_name ( partition_column_name ) 
                | filegroup | "default" } ]
    
      | [ FOREIGN KEY ] 
            REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] 
            [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
            [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
            [ NOT FOR REPLICATION ] 
    
      | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
    } 
    
    <computed_column_definition> ::= 
    column_name AS computed_column_expression 
    [ PERSISTED [ NOT NULL ] ]
    [ 
        [ CONSTRAINT constraint_name ]
        { PRIMARY KEY | UNIQUE }
            [ CLUSTERED | NONCLUSTERED ]
            [ 
                WITH FILLFACTOR = fillfactor 
              | WITH ( <index_option> [ , ...n ] )
            ]
            [ ON { partition_scheme_name ( partition_column_name ) 
            | filegroup | "default" } ]
    
        | [ FOREIGN KEY ] 
            REFERENCES referenced_table_name [ ( ref_column ) ] 
            [ ON DELETE { NO ACTION | CASCADE } ] 
            [ ON UPDATE { NO ACTION } ] 
            [ NOT FOR REPLICATION ] 
    
        | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
    ] 
    
    <column_set_definition> ::= 
    column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
    
    < table_constraint > ::=
    [ CONSTRAINT constraint_name ] 
    { 
        { PRIMARY KEY | UNIQUE } 
            [ CLUSTERED | NONCLUSTERED ] 
            (column [ ASC | DESC ] [ ,...n ] ) 
            [ 
                WITH FILLFACTOR = fillfactor 
               |WITH ( <index_option> [ , ...n ] ) 
            ]
            [ ON { partition_scheme_name (partition_column_name)
                | filegroup | "default" } ] 
        | FOREIGN KEY 
            ( column [ ,...n ] ) 
            REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
            [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
            [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
            [ NOT FOR REPLICATION ] 
        | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
    } 
    <table_option> ::=
    {
        [DATA_COMPRESSION = { NONE | ROW | PAGE }
          [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
          [ , ...n ] ) ]]
        [ FILETABLE_DIRECTORY = <directory_name> ] 
        [ FILETABLE_COLLATE_FILENAME = { <collation_name> | database_default } ]
        [ FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME = <constraint_name> ]
        [ FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME = <constraint_name> ]
        [ FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME = <constraint_name> ]
    }
    
    <index_option> ::=
    { 
        PAD_INDEX = { ON | OFF } 
      | FILLFACTOR = fillfactor 
      | IGNORE_DUP_KEY = { ON | OFF } 
      | STATISTICS_NORECOMPUTE = { ON | OFF } 
      | ALLOW_ROW_LOCKS = { ON | OFF} 
      | ALLOW_PAGE_LOCKS ={ ON | OFF} 
      | DATA_COMPRESSION = { NONE | ROW | PAGE }
           [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
           [ , ...n ] ) ]
    }
    <range> ::= 
    <partition_number_expression> TO <partition_number_expression>

    PostgreSQL

    PostgreSQL 9.5マニュアルから:

    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
      { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
        | table_constraint
        | LIKE source_table [ like_option ... ] }
        [, ... ]
    ] )
    [ INHERITS ( parent_table [, ... ] ) ]
    [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    
    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
        OF type_name [ (
      { column_name WITH OPTIONS [ column_constraint [ ... ] ]
        | table_constraint }
        [, ... ]
    ) ]
    [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    
    where column_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { NOT NULL |
      NULL |
      CHECK ( expression ) [ NO INHERIT ] |
      DEFAULT default_expr |
      UNIQUE index_parameters |
      PRIMARY KEY index_parameters |
      REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
        [ ON DELETE action ] [ ON UPDATE action ] }
    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    and table_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { CHECK ( expression ) [ NO INHERIT ] |
      UNIQUE ( column_name [, ... ] ) index_parameters |
      PRIMARY KEY ( column_name [, ... ] ) index_parameters |
      EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
      FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
        [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    and like_option is:
    
    { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | ALL }
    
    index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
    
    [ WITH ( storage_parameter [= value] [, ... ] ) ]
    [ USING INDEX TABLESPACE tablespace_name ]
    
    exclude_element in an EXCLUDE constraint is:
    
    { column_name | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]

    Oracleデータベース

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

    CREATE [ GLOBAL TEMPORARY ] TABLE [ schema. ] table
      { relational_table | object_table | XMLType_table } ;

    以下に、3つのオプションのそれぞれについて詳しく説明します。

    ratio_table

    [ (relational_properties) ]
    [ ON COMMIT { DELETE | PRESERVE } ROWS ]
    [ physical_properties ]
    [ table_properties ]

    object_table

    OF
       [ schema. ] object_type
       [ object_table_substitution ]
       [ (object_properties) ]
       [ ON COMMIT { DELETE | PRESERVE } ROWS ]
       [ OID_clause ]
       [ OID_index_clause ]
       [ physical_properties ]
       [ table_properties ]

    XMLType_table

    OF XMLTYPE
      [ (oject_properties) ]
      [ XMLTYPE XMLType_storage ]
      [ XMLSchema_spec ]
      [ XMLType_virtual_columns ]
      [ ON COMMIT { DELETE | PRESERVE } ROWS ]
      [ OID_clause ]
      [ OID_index_clause ]
      [ physical_properties ]
      [ table_properties ]

    これらのそれぞれで利用可能なその他のオプションの詳細については、Oracleの公式ドキュメントを参照してください。

    GUIの使用

    テーブルの作成は、各データベース管理システムのGUIを介して、またはその製品で使用できるGUIツールのいずれかを使用して行うこともできます。

    たとえば、MySQL Workbenchを使用する場合は、GUIを介してテーブルを作成できます。


    1. cPanelでMySQLデータベースを作成する方法

    2. DBCC_OBJECT_METADATAラッチ

    3. Mysql ::Error:指定されたキーが長すぎました。キーの最大長は1000バイトです

    4. SQL Serverクエリの最大サイズ? IN句?より良いアプローチはありますか