SQL Server 2005 で DROP TABLE ステートメントを使って列を削除する方法
SQL Server 2005 で制約付き列を削除する
ALTER TABLE ステートメントを使う
デフォルト制約付きの列を削除するには、ALTER TABLE
ステートメントの DROP COLUMN
句と CONSTRAINT
オプションを使用します。 以下の例では、Customers
テーブルから DefaultCountry
列を削除します。
ALTER TABLE Customers
DROP COLUMN DefaultCountry CONSTRAINT DF_Customers_DefaultCountry;
ALTER TABLE Products
DROP COLUMN Price CONSTRAINT CK_Products_Price;
ALTER TABLE Orders
DROP COLUMN OrderNumber CONSTRAINT UK_Orders_OrderNumber;
ALTER TABLE Employees
DROP COLUMN EmployeeID CONSTRAINT PK_Employees_EmployeeID;
FOREIGN KEY 制約は、親テーブルと子テーブルの間の参照整合性を維持するために使用されます。 子テーブルから列を削除する前に、その列に関連する FOREIGN KEY 制約を削除する必要があります。
以下の例では、Orders
テーブルから CustomerID
列を削除する前に、Customers
テーブルの CustomerID
列を参照する FOREIGN KEY 制約を削除します。
ALTER TABLE Orders
DROP CONSTRAINT FK_Orders_Customers;
ALTER TABLE Orders
DROP COLUMN CustomerID;
DROP TABLE ステートメントを使う
テーブルに大量の列があり、そのうちのいくつかを削除したい場合は、DROP TABLE
ステートメントと CREATE TABLE
ステートメントを使用して、必要な列のみを含む新しいテーブルを作成することができます。
以下の例では、Customers
テーブルから DefaultCountry
列と Address
列を削除します。
DROP TABLE Customers;
CREATE TABLE Customers (
CustomerID int NOT NULL PRIMARY KEY,
FirstName varchar(50) NOT NULL,
LastName varchar(50) NOT NULL,
Email varchar(100) NOT NULL
);
注意事項
- 列を削除する前に、その列に関連するデータの整合性をどのように維持するかを検討する必要があります。
- PRIMARY KEY 制約付きの列を削除すると、テーブルのデータ構造が変更されます。
- FOREIGN KEY 制約を削除すると、親テーブルと子テーブルの間の参照整合性が失われます。
USE AdventureWorks2019;
ALTER TABLE Person.Contact
DROP COLUMN MiddleName CONSTRAINT DF_Person_Contact_MiddleName;
CHECK 制約付きの列を削除する
USE AdventureWorks2019;
ALTER TABLE Production.Product
DROP COLUMN ListPrice CONSTRAINT CK_Production_Product_ListPrice;
USE AdventureWorks2019;
ALTER TABLE Sales.SalesOrderDetail
DROP COLUMN OrderQty CONSTRAINT UK_Sales_SalesOrderDetail_OrderQty;
USE AdventureWorks2019;
ALTER TABLE HumanResources.Employee
DROP COLUMN BusinessEntityID CONSTRAINT PK_HumanResources_Employee_BusinessEntityID;
FOREIGN KEY 制約を削除する
USE AdventureWorks2019;
ALTER TABLE Sales.SalesOrderHeader
DROP CONSTRAINT FK_Sales_SalesOrderHeader_SalesPerson_SalesPersonID;
ALTER TABLE Sales.SalesOrderHeader
DROP COLUMN SalesPersonID;
DROP TABLE ステートメントを使う
USE AdventureWorks2019;
DROP TABLE Person.Address;
CREATE TABLE Person.Address (
AddressID int NOT NULL PRIMARY KEY,
AddressLine1 varchar(60) NOT NULL,
City varchar(30) NOT NULL,
StateProvinceID int NOT NULL,
PostalCode varchar(15) NOT NULL,
rowguid rowguid NOT NULL,
ModifiedDate datetime NOT NULL
);
注意事項
- 上記のコードは、SQL Server 2005 で実行できます。
- コードを実行する前に、データベースのバックアップを取ることをお勧めします。
SQL Server 2005 で制約付き列を削除する他の方法
SSMS を使う
SQL Server Management Studio (SSMS) は、SQL Server を管理するためのグラフィカルツールです。 SSMS を使って制約付き列を削除するには、以下の手順に従います。
- SSMS を起動し、データベースに接続します。
- オブジェクトエクスプローラーで、制約付き列を含むテーブルを展開します。
- テーブルを右クリックし、デザイン を選択します。
- テーブルデザイナーで、削除する列を選択します。
- 列の削除 をクリックします。
- はい をクリックして、削除を確認します。
T-SQL スクリプトを使って、制約付き列を削除することができます。 以下の例では、Customers
テーブルから DefaultCountry
列を削除します。
USE AdventureWorks2019;
BEGIN TRY
ALTER TABLE Person.Contact
DROP COLUMN MiddleName CONSTRAINT DF_Person_Contact_MiddleName;
END TRY
BEGIN CATCH
DECLARE @ErrorMessage varchar(max);
SELECT @ErrorMessage = ERROR_MESSAGE();
PRINT @ErrorMessage;
END CATCH;
- SSMS を使う方法は、GUI 操作に慣れているユーザーにとって使いやすい方法です。
- T-SQL スクリプトを使う方法は、複数の列を削除したり、複雑な制約を削除したりする場合に便利です。
sql-server sql-server-2005