SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

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
  1. SQL ServerのINTERSECT演算子とは?構文と使い方を実例付きで解説

    SQL Server(Transact-SQL)における INTERSECT演算子 は、2つのデータセット(SELECT文)の両方に共通して存在するレコードだけを返すために使用されます。片方のクエリにのみ存在し、もう片方には存在しないレコードは、INTERSECTの結果セットから自動的に除外されます。 INTERSECTクエリのイメージ INTERSECTクエリが返す結果のイメージ図 図の説明: INTERSECTクエリは、ベン図の中央にある青く塗りつぶされた領域のレコードを返します。これらは dataset1 と dataset2 の両方に存在するレコードです。 なお、INTERSECT内

  2. SQL ServerのSELECT文の使い方を徹底解説!基本構文と実践例まとめ

    このチュートリアルでは、SQL Server(T-SQL)におけるSELECT文の使い方を、構文と具体的なサンプルコードとともにわかりやすく解説します。 SELECTは、SQL Serverデータベース内の1つまたは複数のテーブルからデータを取得するために使用される、最も基本的かつ重要なコマンドです。 SELECT文の基本構文 最もシンプルな形式では、SELECT文の構文は以下の通りです。 SELECT 式 FROM テーブル [WHERE 条件]; 一方、すべての機能を含んだ完全な形式のSELECT文は次のように記述します。 SELECT [ALL | DISTINCT] [TOP (先頭