W tym artykule wymieniono tabelę SQL ALTER TABLE
składnia, zaimplementowana przez różne systemy zarządzania bazami danych (DBMS). Składnia jest podana dokładnie tak, jak każdy dostawca podał ją na swojej stronie internetowej. Kliknij odpowiedni link, aby wyświetlić więcej szczegółów na temat składni konkretnego dostawcy.
Omówione DBMS to MySQL, SQL Server, PostgreSQL i Oracle Database.
MySQL
Z podręcznika MySQL 5.7 Reference:
ALTER [IGNORE] TABLEtbl_name
[alter_specification
[,alter_specification
] ...] [partition_options
]alter_specification
:table_options
| DODAJ [KOLUMNĘ]col_name
column_definition
[PIERWSZY | POcol_name
] | DODAJ [KOLUMNĘ] (col_name
column_definition
,...) | DODAJ {INDEKS|KLUCZ} [index_name
] [index_type
] (index_col_name
,...) [index_option
] ... | DODAJ [OGRANICZENIE [symbol
]] KLUCZ PODSTAWOWY [index_type
] (index_col_name
,...) [index_option
] ... | DODAJ [OGRANICZENIE [symbol
]] UNIKALNY [INDEKS|KLUCZ] [index_name
] [index_type
] (index_col_name
,...) [index_option
] ... | DODAJ PEŁNY TEKST [INDEKS|KLUCZ] [index_name
] (index_col_name
,...) [index_option
] ... | DODAJ PRZESTRZENNY [INDEKS|KLUCZ] [index_name
] (index_col_name
,...) [index_option
] ... | DODAJ [OGRANICZENIE [symbol
]] KLUCZ OBCY [index_name
] (index_col_name
,...)reference_definition
| ALGORYTM [=] {DOMYŚLNIE|WSTAWIĆ|KOPIUJ} | ALTER [COLUMN]col_name
{USTAW DOMYŚLNEliteral
| UPUŚĆ DOMYŚLNE} | ZMIEŃ [KOLUMNA]old_col_name
new_col_name
column_definition
[PIERWSZY|POcol_name
] | LOCK [=] {DOMYŚLNE|BRAK|UDOSTĘPNIONE|WYŁĄCZNE} | MODYFIKUJ [KOLUMNA]col_name
column_definition
[PIERWSZY | POcol_name
] | DROP [COLUMN]col_name
| UPUŚĆ KLUCZ GŁÓWNY | UPUŚĆ {INDEX|KLUCZ}index_name
| UPUŚĆ KLUCZ OBCYfk_symbol
| WYŁĄCZ KLAWISZE | WŁĄCZ KLAWISZE | RENAME [TO|AS]new_tbl_name
| ZMIEŃ NAZWĘ {INDEX|KLUCZ}old_index_name
DOnew_index_name
| ZAMÓW WGcol_name
[,col_name
] ... | KONWERTUJ NA ZESTAW ZNAKÓWcharset_name
[COLLATEcollation_name
] | [DOMYŚLNE] ZESTAW ZNAKÓW [=]charset_name
[COLLATE [=]collation_name
] | ODRZUCAJ MIEJSCE STOŁOWE | IMPORTUJ PRZESTRZEŃ STOŁÓW | SIŁA | {BEZ|Z} WALIDACJI | DODAJ PARTYCJĘ (partition_definition
) | DROP PARTITIONpartition_names
| DISCARD PARTITION {partition_names
| WSZYSTKIE} PRZESTRZEŃ STOŁOWA | IMPORTUJ PARTYCJĘ {partition_names
| WSZYSTKIE} PRZESTRZEŃ STOŁOWA | OBRÓĆ PARTYCJĘ {partition_names
| WSZYSTKIE} | PARTYCJA COALESCEnumber
| REORGANIZUJ PARTYCJĘpartition_names
INTO (partition_definitions
) | PARTYCJA WYMIANYpartition_name
Z TABELĄtbl_name
[{Z|BEZ} WALIDACJI] | ANALIZA PARTYCJI {partition_names
| WSZYSTKIE} | SPRAWDŹ PARTYCJĘ {partition_names
| WSZYSTKIE} | OPTYMALIZUJ PARTYCJĘ {partition_names
| WSZYSTKIE} | ODBUDUJ PARTYCJĘ {partition_names
| WSZYSTKIE} | NAPRAWA PARTYCJI {partition_names
| WSZYSTKIE} | USUŃ PARTYCJE | UPGRADE PARTITIONINGindex_col_name
:col_name
[(length
)] [ASC | DESC]index_type
:UŻYWAJĄC {BTREE | HASH}index_option
:KEY_BLOCK_SIZE [=]value
|index_type
| Z PARSEREMparser_name
| KOMENTARZ 'string
'table_options
:table_option
[[,]table_option
] ...table_option
:SILNIK [=]engine_name
| AUTO_INCREMENT [=]value
| AVG_ROW_LENGTH [=]value
| [DOMYŚLNE] ZESTAW ZNAKÓW [=]charset_name
| SUMA KONTROLNA [=] {0 | 1} | [DEFAULT] COLLATE [=]collation_name
| KOMENTARZ [=] 'string
' | KOMPRESJA [=] {'ZLIB'|'LZ4'|'BRAK'} | CONNECTION [=] 'connect_string
' | KATALOG DANYCH [=] 'absolute path to directory
' | DELAY_KEY_WRITE [=] {0 | 1} | SZYFROWANIE [=] {'T' | 'N'} | INDEX DIRECTORY [=] 'absolute path to directory
' | INSERT_METHOD [=] { NIE | PIERWSZY | OSTATNI } | KEY_BLOCK_SIZE [=]value
| MAX_ROWS [=]value
| MIN_ROWS [=]value
| PACK_KEYS [=] {0 | 1 | DOMYŚLNE} | HASŁO [=] 'string
' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT|0|1} | STATS_PERSISTENT [=] {DEFAULT|0|1} | STATS_SAMPLE_PAGES [=]value
| TABLESPACEtablespace_name
| UNION [=] (tbl_name
[,tbl_name
]...)partition_options
:PARTYCJA BY { [LINEAR] HASH(expr
) | [LINEAR] KLUCZ [ALGORYTM={1|2}] (column_list
) | RANGE{(expr
) | KOLUMNY(column_list
)} | LIST{(expr
) | KOLUMNY(column_list
)} } [PARTYCJEnum
] [SUBPARTITION BY { [LINEAR] HASH(expr
) | [LINEAR] KLUCZ [ALGORYTM={1|2}] (column_list
) } [SUBPARTITIONSnum
] ] [(partition_definition
[,partition_definition
] ...)]partition_definition
:PARTYCJApartition_name
[WARTOŚCI {MNIEJSZE NIŻ {(expr
|value_list
) |MAXVALUE
} | IN (value_list
)}] [[STORAGE] SILNIK [=]engine_name
] [KOMENTARZ [=]'comment_text'
] [KATALOG DANYCH [=] ''] [INDEX DIRECTORY [=] '
data_dir
'] [MAX_ROWS [=]
index_dir
max_number_of_rows
] [MIN_ROWS [=]min_number_of_rows
] [TABLESPACE [=] tablespace_name] [(subpartition_definition
[,subpartition_definition
] ...)]subpartition_definition
:SUBPARTITIONlogical_name
[[STORAGE] SILNIK [=]engine_name
] [KOMENTARZ [=]'comment_text'
] [KATALOG DANYCH [=] ''] [INDEX DIRECTORY [=] '
data_dir
'] [MAX_ROWS [=]
index_dir
max_number_of_rows
] [MIN_ROWS [=]min_number_of_rows
] [TABLESPACE [=] tablespace_name]
Serwer SQL
Z dokumentacji Transact-SQL:
ALTER TABLE [ nazwa_bazy_danych . [ nazwa_schematu ] . | nazwa_schematu . ] nazwa_tabeli { ALTER COLUMN nazwa_kolumny { [ nazwa_schematu_typu. ] nazwa_typu [ ( { precyzja [ , skala ] | max | xml_schema_collection } ) ] [ COLLATE nazwa_porównania ] [ NULL | NIE NULL ] [ SPARSE ] | {DODAJ | UPUŚĆ } { ROWGUIDCOL | UTRZYMANE | NIE DO REPLIKACJI | SPARSE } } | [ Z { SPRAWDŹ | NOCHECK } ] | DODAJ {| | | } [ ,...n ] | DROP { [ CONSTRAINT ] { constraint_name [ WITH ( [ ,...n ] ) ] } [ ,...n ] | COLUMN { column_name } [ ,...n ] } [ ,...n ] | [ Z { SPRAWDŹ | NOCHECK } ] { SPRAWDŹ | NOCHECK } OGRANICZENIE { WSZYSTKIE | nazwa_ograniczenia [ ,...n ] } | { WŁĄCZ | WYŁĄCZ } WYZWALANIE { WSZYSTKIE | nazwa_wyzwalacza [ ,...n ] } | { WŁĄCZ | DISABLE } CHANGE_TRACKING [ WITH ( TRACK_COLUMNS_UPDATED ={ ON | OFF } ) ] | PRZEŁĄCZ [ PARTYCJA numer_wyrażenia_źródłowego_partycji ] DO tabela_docelowa [ PARTYCJA wyrażenie_numer_partycji_docelowej ] | SET ( FILESTREAM_ON ={ nazwa_schematu_partycji | grupa plików | "domyślna" | "NULL" } ) | REBUILD [ [PARTITION =ALL] [ WITH ( [ ,...n ] ) ] | [ PARTITION =numer_partycji [ WITH ( [ ,...n ] ) ] ] ] | | }[; ]
Opcje
PostgreSQL
Z podręcznika PostgreSQL 9.5:
ALTER TABLE [ JEŚLI ISTNIEJE ] [ TYLKO ] nazwa [ * ] działanie [, ... ]ALTER TABLE [ JEŚLI ISTNIEJE ] [ TYLKO ] nazwa [ * ] ZMIEŃ NAZWĘ [ KOLUMNA ] nazwa_kolumny ABY nowa_nazwa_kolumny ALTER TABLE [ JEŚLI ISTNIEJE ] [ TYLKO ] nazwa [ * ] ZMIEŃ NAZWĘ OGRANICZENIA nazwa_ograniczenia ABY new_constraint_name ALTER TABLE [ IF EXISTS ] nazwa ZMIEŃ NAZWĘ NA nowa_nazwa ALTER TABLE [ IF EXISTS ] nazwa USTAW SCHEMAT nowy_schemat ALTER TABLE ALL IN TABLESPACE nazwa [ WŁAŚCICIEL role_name [, ... ] ] SET TABLESPACE new_tablespace [ NOWAIT ]gdzie akcja jest jednym z:ADD [ COLUMN ] nazwa_kolumny rodzaj_danych [ UKŁADANIE porównywanie ] [ kolumna_ograniczenie [ ... ] ] DROP [ COLUMN ] [ IF EXISTS ] nazwa_kolumny [ OGRANICZ | KASKADA ] ALTER [ KOLUMNA ] nazwa_kolumny [ USTAW DANE ] TYP data_type [ UKŁADANIE porównywanie ] [ UŻYWAJĄC wyrażenia ] ALTER [ KOLUMNA ] nazwa_kolumny SET DEFAULT wyrażenie ALTER [ KOLUMNA ] nazwa_kolumny DROP DEFAULT ALTER [ COLUMN ] nazwa_kolumny { USTAW | DROP } NOT NULL ALTER [ COLUMN ] nazwa_kolumny USTAW STATYSTYKI liczba całkowita ALTER [ KOLUMNA ] nazwa_kolumny SET ( attribute_option =wartość [, ... ] ) ALTER [ KOLUMNA ] nazwa_kolumny RESETUJ ( attribute_option [, ... ] ) ALTER [ KOLUMNA ] nazwa_kolumny USTAW PRZECHOWYWANIE { ZWYKŁY | ZEWNĘTRZNY | ROZSZERZONY | MAIN } DODAJ table_constraint [ NIE WAŻNE ] DODAJ table_constraint_using_index ALTER CONSTRAINT nazwa_ograniczenia [ ODROCZONY | NIE ODROCZONY ] [ PIERWOTNIE ODROCZONY | POCZĄTKOWO NATYCHMIAST ] WERYFIKACJA OGRANICZENIA nazwa_ograniczenia DROP CONSTRAINT [ JEŚLI ISTNIEJE ] constraint_name [ OGRANICZ | KASKADA ] WYŁĄCZ WYZWALANIE [ nazwa_wyzwalacza | WSZYSTKIE | UŻYTKOWNIK ] ENABLE TRIGGER [ trigger_name | WSZYSTKIE | UŻYTKOWNIK ] WŁĄCZ WYZWALANIE REPLIKI nazwa_wyzwalacza WŁĄCZ ZAWSZE WYZWALANIE nazwa_wyzwalacza WYŁĄCZ REGUŁĘ rewrite_rule_name WŁĄCZ REGUŁĘ rewrite_rule_name WŁĄCZ REPLICA REPLICA rewrite_rule_name WŁĄCZ ZAWSZE REGUŁĘ rewrite_rule_name WYŁĄCZ POZIOM WIERSZ ZABEZPIECZENIE WŁĄCZ POZIOM WIERSZU ZABEZPIECZENIE POZIOM WIERSZ ZABEZPIECZENIE POZIOM WIERSZ NIE WYMAGAJ ZABEZPIECZENIA POZIOM WIERSZEGO KLASTRA BEZPIECZEŃSTWA ON index_name ZESTAW BEZ KLASTRA ZESTAW Z OIDS ZESTAW BEZ OIDS ZESTAW TABLESPACE new_tablespace ZESTAW { ZALOGOWANE | UNLOGGED } SET ( parametr_magazynu =wartość [, ... ] ) RESET ( parametr_magazynu [, ... ] ) DZIEDZICZ tabela_rodzica NO INHERIT tabela_rodzica OF nazwa_typu NIE JEST WŁAŚCICIELEM { nowy_właściciel | CURRENT_USER | SESSION_USER } TOŻSAMOŚĆ REPLIKI { DOMYŚLNE | UŻYWANIE INDEKSU index_name | PEŁNE | NIC }i table_constraint_using_index to:[ OGRANICZENIE nazwa_ograniczenia ] { WYJĄTKOWE | KLUCZ PODSTAWOWY } PRZY UŻYCIU INDEKSU index_name [ ODROCZONY | NIE ODROCZONY ] [ PIERWOTNIE ODROCZONY | POCZĄTKOWO NATYCHMIAST ]
Baza danych Oracle
Z dokumentacji online bazy danych Oracle 12c Wydanie 1 (12.1):
ZMIANA TABELI [ schemat. ] table [ alter_table_properties | kolumny_klauzule | klauzule_ograniczeń | alter_table_partitioning | alter_external_table | move_table_clause | mod_opaque_type ] [ enable_disable_clause | { WŁĄCZ | WYŁĄCZ } { BLOKADA TABELI | WSZYSTKIE AKTYWATORY } ] ...;
Poniżej przedstawiono szczegóły różnych opcji.
alter_table_properties::=
{ { { Physical_attributes_clause | logging_clause | table_compression | inmemory_alter_table_clause | klauzula_ilm | Supplemental_table_logging | allocate_extent_clause | deallocate_unused_clause | { Pamięć podręczna | NOCACHE } | RESULT_CACHE ( TRYB {DOMYŚLNE | SIŁA } ) | upgrade_table_clause | records_per_block_clause | klauzula_równoległa | row_movement_clause | flashback_archive_clause }... | ZMIEŃ NAZWĘ nowa_nazwa_tabeli } [ alter_iot_clauses ] [ alter_XMLSchema_clause ]| { skurcz_klauzula | TYLKO DO ODCZYTU | CZYTAJ NAPISZ | REKEY Specyfikacja_szyfrowania | [NIE ] ARCHIWALNE WIERSZÓW | DODAJ attribute_clustering_clause | MODYFIKUJ KLASTROWANIE [ klastrowanie_kiedy ] [ strefamap_klauzula ] | ZRZUĆ KLASTER }}
column_clauses::=
{ { add_column_clause | modyfikować_kolumny_klauzule | drop_column_clause | add_period_clause | drop_period_clause }...| zmień nazwę_kolumny_klauzula| { modyfikacja_kolekcji_pobieranie }...| { modyfikacja_LOB_storage_clause }...| { alter_varray_col_properties }...}
constraint_clauses::=
{ DODAJ { { out_of_line_constraint }... | out_of_line_REF_constraint }| MODYFIKUJ { OGRANICZENIE nazwa_ograniczenia | PODSTAWOWA KLUCZ | UNIKALNE (kolumna [, kolumna ]...) } stan_ograniczenia [ KASKADA ]| ZMIEŃ NAZWĘ OGRANICZENIE stara_nazwa DO nowa_nazwa| { drop_constraint_clause }...}
alter_table_partitioning ::=
{ modyfikacja_tabeli_default_attrs| alter_interval_partitioning| set_subpartition_template| modyfikacja_tabeli_partycji| modyfikacja_tabeli_subpartycja| move_table_partition| move_table_subpartition| add_table_partition| coalesce_table_partition| drop_table_partition| drop_table_subpartition| zmień nazwę_partycji_subpart| truncate_partition_subpart| split_table_partition| split_table_subpartition| merge_table_partitions| merge_table_subpartitions| exchange_partition_subpart}
alter_external_table ::=
{ add_column_clause| modyfikacja_kolumn_klauzule| drop_column_clause| klauzula_równoległa| external_data_properties| LIMIT ODRZUCENIA { liczba całkowita | BEZ OGRANICZEŃ }| KOLUMNA PROJEKT { WSZYSTKIE | ODNIESIENIA }} [ add_column_clause | modyfikować_kolumny_klauzule | drop_column_clause | klauzula_równoległa | external_data_properties | LIMIT ODRZUCENIA { liczba całkowita | BEZ OGRANICZEŃ } | KOLUMNA PROJEKT { WSZYSTKIE | ODNIESIENIA } ]...
move_table_clause ::=
PRZENIEŚ [ ONLINE ] [ segment_attributes_clause ] [ table_compression ] [ index_org_table_clause ] [ { LOB_storage_clause | varray_col_properties }... ] [ parallel_clause ] [ allow_disallow_clustering ]
modify_opaque_type::=
MODYFIKUJ TYP KRYJĄCY anydata_columnSKLEP ( nazwa_typu [, nazwa_typu ]... ) ROZPAKOWANE
enable_disable_clause::=
{ WŁĄCZ | WYŁĄCZ }[ WERYFIKACJA | NOWALIZACJA ]{ UNIKALNE (kolumna [, kolumna ]...)| KLUCZ PODSTAWOWY | OGRANICZENIE ograniczenie_nazwa}[ using_index_clause ][ wyjątki_clause ][ KASKADA ][ { ZACHOWAJ | UPUŚĆ } INDEKS ]
Aby uzyskać szczegółowe informacje na temat różnych podrozdziałów dotyczących komponentów, zapoznaj się z oficjalną dokumentacją Oracle.
Korzystanie z GUI
Zmieniania tabel można również dokonać za pomocą graficznego interfejsu użytkownika w każdym z systemów zarządzania bazami danych lub za pomocą dowolnego narzędzia graficznego dostępnego do użytku z tym produktem.
Na przykład MySQL Workbench może być używany z MySQL.