簡単操作でテーブル構造を複製: CREATE TABLE ... LIKE 構文

2024-04-17

SQL Server で既存のテーブルからテーブル構造(スキーマ)を作成する方法

CREATE TABLE ... LIKE 構文を使用する

最も簡単で便利な方法は、CREATE TABLE ... LIKE 構文を使用する方法です。この構文は、既存のテーブルのスキーマをそのまま新しいテーブルに複製します。構文は以下の通りです。

CREATE TABLE new_table_name LIKE existing_table_name;

例:

既存のテーブル customers のスキーマを new_customers という新しいテーブルに複製する場合、以下のクエリを実行します。

CREATE TABLE new_customers LIKE customers;

sp_duplicate_table プロシージャを使用する方法もあります。この方法は、CREATE TABLE ... LIKE 構文よりも詳細な制御が可能です。構文は以下の通りです。

EXEC sp_duplicate_table @source_table_name = N'existing_table_name',
                         @destination_table_name = N'new_table_name',
                         @options = N'schema only';

オプション:

  • @options パラメータを使用して、複製するオブジェクトの種類を指定できます。デフォルトは schema only で、テーブルのスキーマのみを複製します。他のオプションには、データ、制約、トリガー、インデックスなどがあります。
EXEC sp_duplicate_table @source_table_name = N'customers',
                         @destination_table_name = N'new_customers',
                         @options = N'data, schema, constraints, triggers, indexes';

補足:

  • いずれの方法を使用する場合も、新しいテーブルを作成する前に、十分な権限を持っていることを確認してください。
  • CREATE TABLE ... LIKE 構文を使用する場合は、既存のテーブルに後で変更を加えた場合、新しいテーブルに自動的に反映されないことに注意してください。
  • 詳細については、SQL Server のドキュメントを参照してください。



-- 既存のテーブル `customers` のスキーマを `new_customers` という新しいテーブルに複製する

CREATE TABLE new_customers LIKE customers;

sp_duplicate_table プロシージャを使用する

-- 既存のテーブル `customers` のスキーマとデータを `new_customers` という新しいテーブルに複製する

EXEC sp_duplicate_table @source_table_name = N'customers',
                         @destination_table_name = N'new_customers',
                         @options = N'data, schema, constraints, triggers, indexes';

説明:

  • 上記のコードは、AdventureWorks2019 というデータベースの Sales スキーマにある Customers というテーブルを複製するものです。
  • new_customers という名前の新しいテーブルが作成されます。
  • sp_duplicate_table プロシージャを使用する場合は、@options パラメータを使用して、複製するオブジェクトの種類を指定できます。

注:

  • このコードを実行するには、SQL Server に接続し、AdventureWorks2019 データベースにアクセスできる権限を持っている必要があります。
  • 既存のテーブルの名前やスキーマを変更する場合は、コードをそれに合わせて変更する必要があります。



SQL Server で既存のテーブルからテーブル構造(スキーマ)を作成するその他の方法

システムビューを使用して、既存のテーブルのスキーマに関する情報を取得し、その情報を使用して新しいテーブルを作成するスクリプトを生成できます。この方法は、複雑なテーブルや、CREATE TABLE ... LIKE 構文または sp_duplicate_table プロシージャでは簡単に複製できないテーブルに適しています。

既存のテーブル customers のスキーマに関する情報を取得するには、以下のクエリを実行します。

SELECT
    *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'customers';

このクエリは、customers テーブルの各列に関する情報を含む結果セットを返します。この情報を使用して、新しいテーブルを作成するスクリプトを生成できます。

サードパーティ製のツールを使用する

既存のテーブルからテーブル構造を簡単に作成できるサードパーティ製のツールがいくつかあります。これらのツールは、GUI を提供している場合もあり、コーディングの知識がなくても使用できます。

手動でスクリプトを作成する

既存のテーブルのスキーマを理解している場合は、手動でスクリプトを作成して新しいテーブルを作成することもできます。この方法は、柔軟性と制御性に優れていますが、時間がかかり、エラーが発生しやすいという欠点もあります。

既存のテーブル customers のスキーマを新しいテーブル new_customers に手動で作成するスクリプトの例を以下に示します。

CREATE TABLE new_customers (
    customer_id INT PRIMARY KEY,
    first_name NVARCHAR(50),
    last_name NVARCHAR(50),
    email NVARCHAR(100),
    phone_number NVARCHAR(20),
    address NVARCHAR(255),
    city NVARCHAR(50),
    state NVARCHAR(2),
    postal_code NVARCHAR(10),
    country NVARCHAR(50)
);
  • このスクリプトは、customers テーブルのすべての列を new_customers テーブルに含むように単純化されています。実際のシナリオでは、必要な列のみを含めるようにスクリプトを編集する必要があります。
  • スクリプトを実行する前に、構文エラーがないことを確認してください。

SQL Server で既存のテーブルからテーブル構造(スキーマ)を作成するには、さまざまな方法があります。最良の方法は、特定のニーズとスキルレベルによって異なります。

ヒント:

  • 複雑なテーブルや、多くのデータを含むテーブルを複製する場合は、sp_duplicate_table プロシージャを使用することをお勧めします。
  • テーブルのスキーマを頻繁に変更する場合は、サードパーティ製のツールを使用すると便利です。
  • 時間をかけてでも確実に作業したい場合は、手動でスクリプトを作成することをお勧めします。

sql-server


SQL Server で複数の行のテキストを 1 つのテキスト文字列に連結する方法

SQL Server で複数の行のテキストを 1 つのテキスト文字列に連結するには、いくつかの方法があります。方法+ 演算子最も簡単な方法は、+ 演算子を使用することです。この例では、FirstName 列と LastName 列を連結して、FullName という新しい列を作成します。...


サブクエリとEXISTSの意外な落とし穴!SELECTリストで1つの式しか指定できない理由

サブクエリがEXISTSで導入されていない場合、SELECTリストで指定できる式は1つのみです。これは、サブクエリが単一の値を返す必要があることを意味します。複数の値を返す必要がある場合は、EXISTSまたはIN演算子を使用する必要があります。...


SSMSでテーブル編集後の変更を初心者でも簡単に保存する方法

SQL Server Management Studio (SSMS) でテーブルを編集した後、変更を保存するにはいくつかの方法があります。方法ツールバーを使用する編集したテーブルを開きます。ツールバーの [保存] ボタンをクリックします。...


SQL Server 2000: システムビュー、DMV、ツールを使ってトランザクションを可視化

方法 1: システムビューを使用するシステムビューを使用して、開いているトランザクションに関する情報を取得できます。使用できるビューは以下の2つです。sys. dm_tran_active: このビューには、現在アクティブなすべてのトランザクションに関する情報が含まれています。...


SQL DELETE with INNER JOIN の詳細解説:複数テーブル間の関連レコードを効率的に削除する方法

SQL DELETE with INNER JOIN は、複数のテーブル間のリレーションに基づいて、レコードを効率的に削除するための構文です。これは、関連するレコードを個別に削除するよりも効率的で、データ整合性を保つのに役立ちます。構文説明...


SQL SQL SQL SQL Amazon で見る



PostgreSQLでテーブル構造を新しいテーブルにコピーする方法

CREATE TABLE AS を使うこれは、新しいテーブルを作成し、元のテーブルの構造をコピーする最も簡単な方法です。このコマンドは、元のテーブルのすべての列とデータ型を新しいテーブルにコピーします。INSERT INTO を使って、元のテーブルから新しいテーブルにデータを挿入することもできます。


MySQL テーブルの構造だけをコピーしたい?データなしでコピーする方法まとめ

手順コピーしたいテーブルと同じデータベースに接続します。以下の構文を実行します。メリットシンプルで使いやすいテーブル構造を簡単に複製できるデータはコピーされない外部キー制約は複製されない権限設定は複製されない例この例では、customers テーブルを customers_copy という名前でデータなしでコピーします。