SQL ServerのSELECT INTO文とは?基本構文から使い方・注意点まで徹底解説
SQL Server(Transact-SQL)における SELECT INTO 文は、既存のテーブルから列をコピーして新しいテーブルを作成するために使用されます。
この方法でテーブルを作成する場合、新しいテーブルにはSELECT文の条件に基づいて、元のテーブルのレコードもそのまま格納される点に注意してください。
SELECT INTOの基本構文
SELECT 式1, 式2, ...
INTO 新しいテーブル名
FROM 元のテーブル名
[WHERE 条件];
各パラメータの意味
- 式(expression):取得したい列または値を指定します。
- 新しいテーブル名:選択した式とその定義をもとに作成される新しいテーブルです。実行時点でまだ存在していないテーブル名である必要があります。
- 元のテーブル名:レコードを取得する元となるテーブルです。FROM句には少なくとも1つのテーブルを指定しなければなりません。
- WHERE 条件:省略可能です。抽出対象のレコードが満たすべき条件を指定します。
注意点
SQL ServerでSELECT INTO文を使用する際、指定する新しいテーブルは事前に存在していてはいけません。もし同名のテーブルがすでに存在している場合、SELECT INTO文はエラーとなり失敗します。
SELECT INTOの使用例
次の例では、employees(社員)テーブルから社員ID・姓・名を選択し、これらの列とその定義をcontact_listという新しいテーブルへコピーしています。
SELECT employee_id, last_name, first_name
INTO contact_list
FROM employees
WHERE employee_id < 1000;
この例では、SELECT INTO文によってemployeesテーブルから社員ID、姓、名が選択され、それらのフィールドと定義が新しいテーブル「contact_list」にコピーされます。
元のテーブルにレコードが存在していれば、新しいテーブルにもSELECT文が返したレコードが格納されます。
ALIAS(別名)を使って新しいテーブルの列名を変更する
新しいテーブルで元の列名ではなく別の名前を使いたい場合は、SELECT INTO文の中で列にエイリアス(ALIAS)を設定します。
SELECT employee_id AS contact_id, last_name, first_name
INTO contact_list
FROM employees
WHERE employee_id < 1000;
上記の例では、新しいテーブルcontact_listの最初の列名をemployee_idのままにせず、contact_idに変更したいケースを想定しています。これは、次のようにemployee_id列に対してエイリアスを設定することで実現できます。
employee_id AS contact_id
-
SQL ServerのINTERSECT演算子とは?構文と使い方を実例付きで解説
SQL Server(Transact-SQL)における INTERSECT演算子 は、2つのデータセット(SELECT文)の両方に共通して存在するレコードだけを返すために使用されます。片方のクエリにのみ存在し、もう片方には存在しないレコードは、INTERSECTの結果セットから自動的に除外されます。 INTERSECTクエリのイメージ INTERSECTクエリが返す結果のイメージ図 図の説明: INTERSECTクエリは、ベン図の中央にある青く塗りつぶされた領域のレコードを返します。これらは dataset1 と dataset2 の両方に存在するレコードです。 なお、INTERSECT内
-
SQL ServerのSELECT文の使い方を徹底解説!基本構文と実践例まとめ
このチュートリアルでは、SQL Server(T-SQL)におけるSELECT文の使い方を、構文と具体的なサンプルコードとともにわかりやすく解説します。 SELECTは、SQL Serverデータベース内の1つまたは複数のテーブルからデータを取得するために使用される、最も基本的かつ重要なコマンドです。 SELECT文の基本構文 最もシンプルな形式では、SELECT文の構文は以下の通りです。 SELECT 式 FROM テーブル [WHERE 条件]; 一方、すべての機能を含んだ完全な形式のSELECT文は次のように記述します。 SELECT [ALL | DISTINCT] [TOP (先頭