Синтаксис оператора ALTER TABLE

Вступление

Для модификации (изменения) отдельных объектов базы данных в SQL языке есть команды и основанные на них sql запросы: SQL ALTER TABLE. Применяется эта команда (запрос), когда нужно сохранить данные в таблицы, и лишь исправить (модифицировать) некоторые из них.

В прошлой статье, мы разбирали команду CREATE и sql , применяемый для создания новой таблицы базы данных. Сегодня посмотрим, как изменить отдельные данные в таблице базы данных на основе запроса sql ALTER TABLE.

Примечание. Команда ALTER относится к подмножеству SQL, языку DDL, — языку определения данных. С её помощью можно модифицировать не только таблицы, но и процедуры, пользователей, представления, табличные области. Есть целое семейство таких команд: ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER TRIGGER, ALTER USER, ALTER ROLE.

Что может выполнить команда ALTER

С помощью использования команды ALTER можно:

  • Добавить столбец в таблицу;
  • Добавить ограничение целостности;
  • Изменить тип данных в столбце таблицы, его размер, значение по умолчанию (переопределить столбец);
  • Удалить столбец;
  • Включить, выключить, удалить триггер или ограничение целостности.

Примечание. Целостность БД- любое отношение должно иметь первичный ключ и для каждого внешнего ключа должен существовать первичный ключ.

Важно! Для использования команды ALTER пользователь должен иметь привилегии ALTER, INSERT и CREATE для этой таблицы.

Урок 8, Серии уроков «Язык SQL»

Команда SQL ALTER TABLE, синтаксис команды

Посмотрим на синтаксис команды ALTER TABLE.

ALTER TABLE имя_таблицы опции_модификации_таблицы

IGNORE необязательная опция для защиты первичного ключа.

Примеры использования команды ALTER TABLE

№ 1 Добавляем столбец в таблицу

ALTER TABLE client(client_site varchar(10));//Добавить в таблицу client столбец client_site//

№ 2 Меняем размер поля столбца

ALTER TABLE client(client_passwd varchar(25));//Изменение размера поля столбца client_passwd//

№ 3 Меняем размер поля столбца с использованием modify

ALTER TABLE client modify client_passwd varchar(25);//Изменение размера поля столбца client_passwd//

№ 4 Добавляем столбец, после определенного столбца

ALTER TABLE client add client_site varchar(50) after client_telefon;//Добавить в таблицу client столбец client_site, после столбца client_telefon//

Итоги статьи

  • В этой статье мы познакомились с командой SQL языка ALTER TABLE.
  • Посмотрели, как использовать ALTER TABLE на примерах таблицы базы данных.

Изменяет определение таблицы путем изменения, добавления или удаления столбцов и ограничений, переназначения и перестраивания секций, а также отключения или включения ограничений и триггеров.

Синтаксис

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name { ALTER COLUMN column_name { [ type_schema_name. ] type_name [ ({ precision [ , scale ] | max | xml_schema_collection }) ] [ COLLATE collation_name ] [ NULL | NOT NULL ] [ SPARSE ] | {ADD | DROP } { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE } } | [ WITH { CHECK | NOCHECK } ] | ADD { | | | } [ ,...n ] | DROP { [ CONSTRAINT ] { constraint_name [ WITH ( [ ,...n ]) ] } [ ,...n ] | COLUMN { column_name } [ ,...n ] } [ ,...n ] | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT { ALL | constraint_name [ ,...n ] } | { ENABLE | DISABLE } TRIGGER { ALL | trigger_name [ ,...n ] } | { ENABLE | DISABLE } CHANGE_TRACKING [ WITH (TRACK_COLUMNS_UPDATED = { ON | OFF }) ] | SWITCH [ PARTITION source_partition_number_expression ] TO target_table [ PARTITION target_partition_number_expression ] [ WITH () ] | SET (FILESTREAM_ON = { partition_scheme_name | filegroup | "default" | "NULL" }) | REBUILD [ [ WITH ( [ ,...n ]) ] | [ PARTITION = partition_number [ WITH ( [ ,...n ]) ] ] ] | | } [ ; ] -- ALTER TABLE options ::= column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS ::= { MAXDOP = max_degree_of_parallelism | ONLINE = { ON | OFF } | MOVE TO { partition_scheme_name (column_name) | filegroup | "default" } } ::= { SET (LOCK_ESCALATION = { AUTO | TABLE | DISABLE }) } ::= { [ { ENABLE | DISABLE } FILETABLE_NAMESPACE ] [ SET (FILETABLE_DIRECTORY = directory_name) ] } ::= { SORT_IN_TEMPDB = { ON | OFF } | MAXDOP = max_degree_of_parallelism | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE} } | ONLINE = { ON [() ] | OFF } } ::= { WAIT_AT_LOW_PRIORITY (MAX_DURATION =