Программирование в Microsoft SQL Server 2000

         

Изменение объектов


В то время как оператор CREATE создает новый объект, оператор ALTER предоставляет механизм для изменения определения объекта. Не все объекты, созданные с помощью оператора CREATE, имеют соответствующий оператор ALTER. В таблице 22.2 приведен синтаксис для объектов, которые могут быть изменены.

Таблица 22.2. Операторы ALTER

Синтаксис оператора ALTERДействие
ALTER DATABASE <имя> <спецификация_файла>Изменяет файлы, используемые для хранения базы данных

ALTER FUNCTION <имя> RETURNS <возвращаемое_значение> AS < операторы_tsql>

Изменяет операторы Transact-SQL, содержащие функцию

ALTER PROCEDURE <имя> AS < операторы_tsql>

Изменяет операторы Transact-SQL, содержащие в себе хранимую процедуру (См. урок 28, "Хранимые процедуры")

ALTER TABLE <имя> <определение_изменения>

Изменяет определение таблицы (В этом уроке мы подробно рассмотрим <определение_изменения>.)

ALTER TRIGGER <имя> {FOR | AFTER | INSTEAD OF} <действие_dml>

Изменяет операторы Transact-SQL, содержащие в себе триггер (См. урок 29, "Триггеры")

ALTER VIEW <имя> AS <оператор_выборки>

Изменяет операторы SELECT, которые создают представление

Оператор ALTER TABLE является составным по той же причине, почему и оператор CREATE TABLE: определение таблицы состоит из нескольких различных частей. Упрощенная версия синтаксиса для оператора ALTER TABLE приведена ниже:

ALTER TABLE <имя> { [ALTER COLUMN <определение_столбца>] | [ADD <определение_столбца>] | [DROP COLUMN <имя_столбца>] | [ADD [WITH NOCHECK] CONSTRAINT <ограничение_для_таблицы>] }

Ключевые слова CHECK (подразумевается) и NOCHECK перед ограничением таблицы, предписывают SQL Server тестировать или не тестировать имеющиеся в таблице данные с учетом нового ограничения. WITH NOCHECK используется лишь в крайне редких случаях.

Изменение столбцов

Ниже представлено несколько ограничений для фразы ALTER COLUMN. Столбец не может быть изменена, если он:

  • имеет тип данных text, image, ntext или timestamp;
  • определен в таблице как ROWGIDCOL;
  • является вычисляемым столбцом или используется в вычисляемом столбце;
  • является реплицированным;
  • используется в индексе – если только столбец не имеет тип данных varchar, nvarchar или varbinary; тип данных не изменяется и размер столбца не уменьшается;
  • используется в статистике, генерируемой оператором CREATE STATISTIC;
  • используется в ограничении PRIMARY KEY;
  • используется в ограничении FOREIGN KEY REFERENCES;
  • используется в ограничении CHECK;
  • используется в ограничении UNIQUE;
  • указывается как DEFAULT.


Измените представления

  1. В Object Browser раскройте папку Columns запроса SimpleView.


    увеличить изображение

  2. В окне запроса выберите вкладку Editor (Редактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно)
    для очистки содержимого панели редактирования Editor Pane.
  3. В панели редактирования введите следующий оператор:

    ALTER VIEW SimpleView AS SELECT SimpleDescription, RelatedDescription FROM RelatedTable INNER JOIN SimpleTable ON RelatedTable.SimpleID = SimpleTable.SimpleID



  4. Для выполнения оператора в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос).
  5. Щелкните на любом месте в панели Object Browser для ее выбора и нажмите клавишу F5 для обновления содержимого экрана. Object Browser отобразит только столбцы SimpleDescription и RelatedDescription.




    увеличить изображение



Добавьте столбцы в таблицу

  1. В Object Browser раскройте папку Columns таблицы SimpleTable.


    увеличить изображение

  2. В окне запроса выберите вкладку Editor (Редактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно)
    для очистки содержимого панели редактирования Editor Pane.
  3. В панели редактирования введите следующий оператор:

    ALTER TABLE SimpleTable ADD NewColumn varchar(20)



  4. Для выполнения оператора в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос).
    Query Analyzer добавит столбец в таблицу.
  5. Щелкните на любом месте в панели Object Browser для ее выбора и нажмите клавишу F5 для обновления содержимого окна. Object Browser отобразит новый столбец.


    увеличить изображение



Измените столбцы в таблице

  1. В окне запроса выберите вкладку Editor (Редактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно)
    для очистки содержимого панели редактирования Editor Pane.
  2. В панели редактирования введите следующий оператор:

    ALTER TABLE SimpleTable ADD COLUMN NewColumn varchar(10)





  3. Для выполнения оператора, в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос).
    Query Analyzer добавит столбец в таблицу.
  4. Щелкните на любом месте в панели Object Browser для ее выбора и нажмите клавишу F5 для обновления содержимого окна. Object Browser отобразит новый столбец.


    увеличить изображение



Удалите столбцы из таблицы

  1. В окне запроса выберите вкладку Editor (Радактор) и в панели инструментов анализатора запросов Query Analyzer нажмите кнопку Clear Window (Очистить окно)
    для очистки содержимого панели редактирования Editor Pane.
  2. В панели редактирования введите следующий оператор:

    ALTER TABLE SimpleTable DROP COLUMN NewColumn



  3. Для выполнения оператора в панели инструментов анализатора запросов Query Analyzer нажмите на кнопку Execute Query (Выполнить запрос).
    Query Analyzer удалит столбец из таблицы.
  4. Щелкните на любом месте в панели Object Browser для ее выбора и нажмите клавишу F5 для обновления содержимого окна. Object Browser больше не будет отображать столбец NewColumn.


    увеличить изображение




Содержание раздела