В SQL Server для изменения структуры существующей таблицы используется команда ALTER TABLE
. Это мощный инструмент, позволяющий вносить различные изменения без необходимости пересоздания таблицы.
ALTER TABLE Employees
ADD Email VARCHAR(100) NULL;
Можно указать дополнительные параметры:
ALTER TABLE Employees
ADD BirthDate DATE NOT NULL DEFAULT '1900-01-01';
ALTER TABLE Employees
DROP COLUMN MiddleName;
Важно: Удаление столбца - необратимая операция, которая может повлиять на зависимые объекты.
ALTER TABLE Employees
ALTER COLUMN PhoneNumber VARCHAR(20);
Ограничения:
Добавление первичного ключа:
ALTER TABLE Employees
ADD CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID);
Добавление внешнего ключа:
ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Employees
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID);
ALTER TABLE Employees
DROP CONSTRAINT PK_Employees;
ALTER TABLE Employees
ALTER COLUMN Email VARCHAR(100) NOT NULL;
Важно: Для установки NOT NULL все существующие записи должны иметь значения в этом столбце.
Для переименования таблицы:
EXEC sp_rename 'OldTableName', 'NewTableName';
Для переименования столбца:
EXEC sp_rename 'Employees.OldColumnName', 'NewColumnName', 'COLUMN';
ALTER SCHEMA NewSchema TRANSFER OldSchema.TableName;
ALTER TABLE Employees
ADD FullName AS (FirstName + ' ' + LastName);
ALTER TABLE Employees
ADD RowID INT IDENTITY(1,1);
EXEC sp_help 'Employees';
BEGIN TRANSACTION;
-- Создаем временную таблицу с новой структурой
-- Копируем данные
-- Удаляем старую таблицу
-- Переименовываем временную таблицу
COMMIT TRANSACTION;
SELECT * FROM sys.foreign_keys
WHERE referenced_object_id = OBJECT_ID('Employees');
Резюмируем: изменение схемы таблицы в SQL Server выполняется преимущественно через команду ALTER TABLE с различными опциями. Важно учитывать влияние изменений на целостность данных, производительность и зависимые объекты. Для сложных изменений рекомендуется использовать транзакции и временные таблицы.