Опубликован: 11.12.2006 | Уровень: специалист | Доступ: платный
Лекция 15:

Управление таблицами с помощью T-SQL и Enterprise Manager

Добавление или удаление свойства ROWGUIDCOL Property

Чтобы добавить к колонке или удалить из колонки свойство ROWGUIDCOL, используйте следующий синтаксис:

ALTER TABLE		<имя_таблицы>
ALTER COLUMN	<имя_колонки> ADD | DROP ROWGUIDCOL

Свойство ROWGUIDCOL можно добавлять только в колонку типа uniqueidentifier. Если предположить, что в нашу таблицу Bicycle_Sales была включена колонка типа uniqueidentifier с именем unique_id, то вы могли бы добавить свойство ROWGUIDCOL с помощью следующего оператора:

ALTER TABLE		Bicycle_Sales
ALTER COLUMN	unique_id ADD ROWGUIDCOL
GO

И вы могли бы удалить это свойство с помощью следующего оператора:

ALTER TABLE		Bicycle_Sales
ALTER COLUMN	unique_id DROP ROWGUIDCOL 
GO
Добавление колонок

С помощью оператора ALTER TABLE вы можете также добавлять колонки к таблице. Определение колонок происходит почти одинаково – будь то создание или изменение таблицы. Вы должны присвоить колонке имя и тип данных и можете дополнительно присваивать другие атрибуты, свойства и ограничения.

Добавляя колонку с атрибутом NOT NULL, вы должны также объявить значение по умолчанию, чтобы это значение появилось в новой колонке уже существующих строк. Это значение по умолчанию задается с помощью ключевого слова DEFAULT. Чтобы добавить колонку, используйте следующий синтаксис:

ALTER TABLE		<имя_таблицы>
ADD				<имя_колонки> <тип_данных> <null-атрибут>
DEFAULT			значение_по_умолчанию

Например, чтобы добавить к таблице Bicycle_Sales колонку с именем salesperson_id (идентификатор продавца), используйте следующий оператор. (В новой колонке не допускаются null -значения, и она имеет значение по умолчанию, равное 0.)

ALTER TABLE		Bicycle_Sales
ADD				salesperson_id tinyint NOT NULL 
DEFAULT			0 
GO

Поскольку колонка объявлена как NOT NULL, то во всех существующих строках таблицы в новую колонку будет занесено значение 0.

Если вместо этого колонка salesperson_id будет объявлена как NULL (см. ниже), то значение по умолчанию не будет обязательным:

ALTER TABLE		Bicycle_Sales
ADD				salesperson_id tinyint NULL 
DEFAULT			0    	--Необязательное значение по умолчанию
GO

Несмотря на то, что мы задали значение по умолчанию, в колонку salesperson_id существующих строк будет занесено значение NULL, а значение по умолчанию будет присваиваться только в новых строках.

Чтобы в существующих строках вместо значения NULL также было присвоено значение по умолчанию (0), используйте в ключевом слове DEFAULT опцию WITH VALUES, как это показано ниже:

ALTER TABLE		Bicycle_Sales
ADD				salesperson_id tinyint NULL
DEFAULT			0 WITH VALUES 
GO

Опция WITH VALUES указывает, что во всех существующих строках новой колонке будет присвоено вместо значения NULL значение по умолчанию.

Удаление колонок

Вы можете также использовать оператор ALTER TABLE для удаления колонок из таблицы. Все данные удаленной колонки будут удалены из таблицы. При использовании T-SQL для удаления колонок вы не можете удалять следующие типы колонок.

  • Колонка, используемая в ограничении primary key, foreign key, unique или check.
  • Колонка, используемая для репликации.
  • Колонка, используемая в индексе (если не удалить сначала этот индекс).
  • Колонка, ограниченная каким-либо правилом.
  • Колонка, связанная со значением по умолчанию.
Примечание. Эти запрещения тоже действуют, но обрабатываются по-другому, если вы используете для удаления колонки Enterprise Manager. (Более подробную информацию см. в разделе "Модифицирование таблицы с помощью Enterprise Manager" ниже.)

Для удаления колонки из таблицы используйте следующий синтаксис:

ALTER TABLE 	<имя_таблицы>
DROP COLUMN 	<имя_колонки>

Следующий оператор удаляет колонку description из таблицы Bicycle_Sales:

ALTER TABLE		Bicycle_Sales
DROP COLUMN		description 
GO

Колонка description и все ее значения удаляются изо всех строк таблицы.

Внимание. Проявляйте осторожность, удаляя колонки. Вы не сможете получить данные удаленной колонки без восстановления базы данных из резервной копии. А если после резервного копирования запускались транзакции, то вам также потребуется применить журнал транзакций для воспроизведения этих транзакций. Вы можете также повторно создать эту колонку и задать для нее новые значения.
Переименование колонок

Чтобы переименовать колонку с помощью операторов T-SQL, вы должны запустить системную хранимую процедуру sp_rename, используя следующий синтаксис:

sp_rename 'таблица.исходное_имя_колонки', 'новое_имя_колонки', 'COLUMN'

Например, чтобы заменить имя колонки description на Bicycle_desc, вам нужно использовать следующий оператор:

sp_rename 'Bicycle_Sales.description', 'bicycle_desc', 'COLUMN'
GO

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

Максим Ерохин
Максим Ерохин
Россия, г. Санкт-Петербург
Татьяна Лубинец
Татьяна Лубинец
Россия, Уфа, Уфимский авиационный институт, 1987