SQL Server における、テーブルのデータをコピーする方法です。
SQL Server でテーブルのデータをコピーする
SQL Server でテーブルのデータをコピーするSQL文は2つあります。
- SELECT INTO ~を使う
- INSERT INTO ~を使う
どちらでも結果は同じです。サンプルの構文は以下。
--SELECT INTO を使用したテーブルのデータコピー
SELECT * INTO 新しいテーブル名
FROM 元のテーブル名;
--INSERT INTO を使用したテーブルのデータコピー
INSERT INTO 新しいテーブル名 (列1, 列2, 列3, ...)
SELECT 列1, 列2, 列3, ...
FROM 元のテーブル名;
状況に応じて使い分けて下さい。
実行例
では実際に実行してみます。サンプルのテーブルを用意しましたので、試しに実行してみて下さい。
--テスト用テーブルCREATE文
CREATE TABLE WeekDays (
DayOfWeekCD char(2),
DayOfWeekName nvarchar(10)
);
--テスト用テーブルデータINSERT文
INSERT INTO WeekDays (DayOfWeekCD, DayOfWeekName)
VALUES
('01', N'Sunday'),
('02', N'Monday'),
('03', N'Tuesday'),
('04', N'Wednesday'),
('05', N'Thursday'),
('06', N'Friday'),
('07', N'Saturday');
SELECT * FROM WeekDays
上記を実行すると、以下になります。

テスト用データ確認(コピー元テーブル)
で、これをコピーするSQLは以下。コピー元テーブルは「WeekDays」で、コピー先テーブルを「WeekDays_Copy」とします。
--SELECT INTO のパターン
SELECT *
INTO WeekDays_Copy --コピー先テーブル名
FROM WeekDays;
--INSERT INTO のパターン
INSERT INTO WeekDays_Copy (DayOfWeekCD, DayOfWeekName) --コピー先テーブル名
SELECT DayOfWeekCD, DayOfWeekName
FROM WeekDays;
どちらでも大丈夫なのですが、今回は「SELECT INTO ~」のパターンで実行してみます。

コピー用クエリ実行

実行結果確認
ちゃんとコピーされてますね。
テーブルの構造のみコピー(データ無しコピー)する方法
「データは不要だから、テーブルの構造だけコピーしたい」という場合は、次の様に記載します。
-- テーブルの構造だけをコピーする
SELECT *
INTO 新しいテーブル
FROM 元のテーブル
WHERE 1 = 0;
WHERE句に「1 = 0」と記載することで、全ての条件を否定(常に偽となる条件)ということになるので、構造のみコピーされます。いわゆる、テーブルのヘッダーのみコピーするというやつです。