SQL Server の CREATE、ALTER、DROP テーブル [T-SQL の例]

⚡ スマートサマリー

SQL Serverのテーブルは、データを行と列に格納します。Transact-SQLでは、CREATE TABLEを使用してテーブルを作成し、ALTER TABLEを使用して列を追加または変更し、DROP TABLEを使用してテーブル、そのデータ、およびその構造を削除します。

  • 🧱 テーブルとは何か? テーブルはデータを行と列に格納するもので、データベース内でデータを保持するための基本的なオブジェクトです。
  • 🛠️ テーブルの作成: CREATE TABLE文は、各列に名前、データ型、およびNULLまたはNOT NULLの設定を定義します。
  • ???? 既存のものから作成する: SELECT … INTO は、既存のテーブルから選択した列と行を新しいテーブルにコピーします。
  • 他の机: ALTER TABLE … ADD は、テーブルを再作成せずに新しい列を追加します。
  • 🗑️ テーブルを削除: DROP TABLEコマンドは、データと構造を含め、テーブル全体を削除します。
  • 🖱️ テーブルデザイナー: SQL Server Management Studioでは、テーブルデザイナーを使用してテーブルを視覚的に作成および変更することもできます。

SQL ServerにおけるT-SQLを用いたテーブルの作成、変更、削除の例

テーブルとは

テーブルはオブジェクトです SQLサーバー データを行と列の形式で格納する。下の図は、それぞれ行と列を示している。

行と列にデータを格納するテーブルの図

T-SQL を使用して SQL Server にテーブルを作成する方法

データを保存する最初のステップは、テーブルを作成することです。 データベース データが格納される場所です。テーブルを作成した後、そこに行を挿入し続けることができます。

テーブルは以下の方法で作成できます。

  • T-SQL: すべての列とそのデータ型を定義して新しいテーブルを作成します。
  • T-SQL: 既存のテーブルを使用して新しいテーブルを作成します。
  • テーブルデザイナーを使用しています。

これを詳しく調べてみましょう。

T-SQL: すべての列とそのデータ型を定義して新しいテーブルを作成する

以下は、SQL Serverでテーブルを作成するための構文です。

構文:

CREATE TABLE tableName
( 
  column_1 datatype [ NULL | NOT NULL ],
  column_2 datatype [ NULL | NOT NULL ],
  ...
);

ここでは、

  • パラメータ tableName は、作成するテーブルの名前を示します。
  • パラメータ column_1、column_2… は、テーブルに追加される列を示します。
  • 列はNULLまたはNOT NULLのいずれかで指定する必要があります。指定しない場合、SQL Serverは既定値としてNULLを使用します。

2つの列を持つ基本的な表を作成してみましょう。

クエリ:

CREATE TABLE COURSE
(
Course_ID Int,
Course_Name Varchar(10)
)

前提条件: テーブルを作成するデータベースを選択してください。

ステップ1) 「実行」をクリックしてクエリを実行します。クエリを実行する前は、以下に示すようにテーブルは存在しません。

CREATE文の実行前にオブジェクトエクスプローラーにコーステーブルが表示されない

クエリを実行した後、「更新」ボタンをクリックしてください。すると、以下に示すように、新しいテーブル「Course」が作成されます。

実行および更新後にオブジェクトエクスプローラーに表示されるコーステーブル

ステップ2) データを挿入してください。以下のスクリーンショットは、行を受け入れる準備ができた、新しく作成されたコーステーブルを示しています。

データ挿入前にオブジェクトエクスプローラーで新しく作成されたコーステーブルを選択します。

データ挿入前の2列のコース表構造を表示

現時点では、テーブルは存在しているだけで、データはまだ入っていません。

Transact-SQLには、テーブルにデータを挿入するためのINSERT文が用意されています。この文を使用すると、テーブルに1行または複数行を挿入できます。

構文:

INSERT INTO tableName
(column_1, column_2, ... )
VALUES
(expression_1, expression_2, ... ),
(expression_1, expression_2, ... ),
...;

上記の構文は、VALUESキーワードを使用してテーブルにデータを挿入する場合のコマンドの基本形式を示しています。

INSERTコマンドを使って4行を挿入してみましょう。

Insert into COURSE values (1,'SQL');
Insert into COURSE values (2,'Python');
Insert into COURSE values (3,'SQL');
Insert into COURSE values (4,'C');

以下のスクリーンショットは、4行の挿入が成功したことを示しています。

コーステーブルに4行が挿入されたことを確認するメッセージペイン

ステップ3) データを表示するには、SELECT ステートメントを使用します。SQL Server でデータを表示するには、次の構文を使用します。

SELECT expression
FROM tableName
[WHERE condition];

クエリの例:

SELECT * FROM COURSE;

テーブルが作成され、現在 4 つのレコードが格納されています。どの列にも重複する値を持つレコードを作成できることに注意してください。 制約.

SELECTによって返された4つのコース行を表示する結果グリッド

T-SQL: 既存のテーブルを使用して新しいテーブルを作成する

上記で作成した COURSE テーブルと同様のテーブルをもう 1 つ作成したいが、Course_ID 列ではなく Course_Name 列だけが必要だとします。

構文:

SELECT (Column 1, …) INTO <New Table name> FROM <Old Table name>;

クエリの例:

SELECT COURSE_NAME INTO COURSE_NAMES FROM COURSE;

ステップ1) 「実行」をクリックしてクエリを実行します。以下に示すように、古いテーブルからコピーされた1つの列と4つのレコードを持つ、COURSE_NAMESという名前の新しいテーブルが作成されます。

既存のテーブルからSELECT INTOを使用して新しいCOURSE_NAMESテーブルを作成します

クエリの例:

SELECT * FROM COURSE_NAMES;

以下に、新しいCOURSE_NAMESテーブルに含まれる4つのCourse_Nameレコードを示します。

COURSE_NAMESテーブルのCourse_Name値を表示する結果グリッド

テーブルデザイナーの使用

また、テーブルを作成することもできます。 SQL Server Management Studio テーブルデザイナーを使用したIDE。

ステップ1) 下の図に示すように、テーブルを右クリックして「新規作成」>「テーブル」を選択します。

オブジェクトエクスプローラーでテーブルを右クリックし、[新規作成]、[テーブル]の順に選択します。

ステップ2) 列名と データ型、そして各列でNULL値を許可するかどうかを選択します。

テーブルデザイナーのツールバーで新しいテーブルを定義します

テーブルデザイナーのグリッドには、列名、データ型、およびNULL値を許可するオプションが表示されます。

ステップ3) Ctrl+Sキーを押してテーブルを保存し、名前を「Course_Title」と入力してください。

「名前」ダイアログを選択して、新しいテーブルを Course_Title として保存します。

「更新」をクリックすると、以下に示すように、「Course_Title」という名前と「Course_Name」という列が1つ含まれた新しいテーブルが表示されます。

オブジェクトエクスプローラー内の Course_Title テーブルに Course_Name 列が 1 つだけあります。

SQL Server でのテーブルの変更

SQL Serverでテーブルを変更するには、2つの方法があります。

  • T-SQL: 新しい列を追加してテーブルを変更します。
  • テーブルデザイナーを使用しています。

T-SQL: 列を挿入してテーブルを変更する

以下は、SQLにおけるALTERコマンドの構文です。

構文:

 Alter TABLE <Table name> ADD Column1 datatype, Column2 datatype;

クエリ:

ALTER TABLE dbo.Course_Title ADD Course_Duration VARCHAR(20);

ステップ1) 「実行」をクリックしてクエリを実行します。すると、以下に示すように、Course_Title テーブル内に Course_Duration という名前の新しい列が作成されます。

ALTER TABLE ADD ステートメントで Course_Duration 列を追加します。

Course_Title列(新しく追加されたCourse_Duration列を含む)

テーブルデザイナーの使用

テーブルデザイナーを使用すれば、UIからテーブルを変更することもできます。

ステップ1) 既存のテーブルを右クリックして、[デザイン]を選択します(下図参照)。

Course_Title テーブルを右クリックして「デザイン」を選択します。

ステップ2) 列名を「Course_Start_Date」として追加し、データ型を選択してください。

テーブルデザイナーで Course_Start_Date 列とそのデータ型を追加する

ステップ3) Ctrl+Sキーを押して、新しく追加した列を保存します。以下に示すように、Course_TitleテーブルにCourse_Start_Dateという名前の新しい列が作成されます。

Course_Title テーブルに、保存された Course_Start_Date 列を表示しています。

SQL Server でテーブルを削除する

テーブルは不要になった時点で削除します。

SQL Serverでテーブルを削除するには、2つの方法があります。

  • SQL Server Management Studioを使用します。
  • T-SQL: DROP TABLE を使用してテーブルを削除します。

SQL Server ManagementStudioの使用

ステップ1) 既存のテーブルを右クリックして「削除」を選択し、以下の図のように「Course_Title」という名前のテーブルを選択します。

Course_Title テーブルを右クリックして「削除」を選択します。

ステップ2) 「オブジェクトの削除」ウィンドウで、「OK」をクリックします。

オブジェクト削除確認ウィンドウ(OKボタン付き)

以下に示すように、Course_Title テーブルはテーブルリストから削除されました。

Course_Title テーブルが削除された後のオブジェクトエクスプローラーのテーブル一覧

T-SQL: テーブルを削除する

以下は、テーブルを削除するための構文です。

構文:

DROP TABLE <tableName>;

パラメータ tableName は、削除するテーブルの名前です。

クエリ:

DROP TABLE COURSE_NAMES;

ステップ1) 「実行」をクリックしてクエリを実行します。以下に示すように、COURSE_NAMES テーブルがテーブルリストから削除されます。

DROP TABLE文でCOURSE_NAMESテーブルを削除します

COURSE_NAMES テーブルを削除した後のオブジェクトエクスプローラーのテーブルリスト

あるいは、ソースコードには、テーブル構造はそのまま残しつつ行(データ)のみを削除することを目的とした DELETE TABLE コマンドが示されており、これによりテーブルを後で再利用することが可能になります。

構文:

DELETE TABLE <Table name>;

注意: 標準のT-SQLでは、行は次のように削除されます。 DELETE FROM <table>、そしてテーブルはすぐに空になる TRUNCATE TABLE <table>; 上記のように、DROP TABLE コマンドでテーブル全体が削除されます。

興味深い事実!

  • XMLや画像などの大きなファイルは、VARBINARY(MAX)、VARCHAR(MAX)、XML型などのラージオブジェクトデータ型を使用して列に格納できます(SQL Serverは Oracle- スタイルの BLOB および CLOB 名)。
  • DELETE は行のみを削除し、トランザクション内ではロールバックできますが、DROP はテーブル構造全体を削除します。SQL Server では、明示的なトランザクション内で実行された場合、DROP もロールバックできます。

よくあるご質問

DELETE は選択した行を削除し、完全なログが記録されます。TRUNCATE はすべての行を迅速に削除し、ID 値をリセットします。DROP はテーブル全体、そのデータ、および構造を削除します。SQL Server では、これら 3 つの操作はすべて明示的なトランザクション内でロールバックできます。

SQL Server 2016 以降で利用可能な DROP TABLE IF EXISTS table_name を使用してください。テーブルが存在する場合は削除し、存在しない場合は何も行わないため、エラーを回避できます。以前のバージョンでは、削除する前に OBJECT_ID を確認してください。ping.

SQL ServerにはRENAME TABLEステートメントはありません。代わりに、システムストアドプロシージャsp_renameを実行してください。例えば、EXEC sp_rename 'old_name', 'new_name'のように実行します。sp_renameはこれらの参照を自動的に変更しないため、実行後に依存ビュー、プロシージャ、およびコードを更新してください。

はい。ALTER TABLE table ALTER COLUMN column new_type は列のデータ型を変更し、ALTER TABLE table DROP COLUMN column は列を削除します。変更は既存のデータと互換性がある場合にのみ成功するため、変換テストを行い、事前にバックアップを作成してください。

CREATE TABLE文内で制約を定義する(例:Course_ID INT PRIMARY KEY)か、後からALTER TABLE ADD CONSTRAINT文で追加します。 主キー 独自性を強化する一方で、 外部キー テーブル間で行をリンクします。

一時テーブルは、# プレフィックスを付けてtempdbに作成され、セッション終了時に自動的に削除されます。通常のテーブルは、削除するまで永続的に保持されます。一時テーブルは、バッチ処理やプロシージャ内の一時的な中間結果を格納するのに適しています。

Yes. GitHubコパイロット 自然言語によるプロンプトからCREATE、ALTER、DROP TABLEスクリプトを生成し、列、データ型、制約を提案します。本番環境で実行する前に、生成されたスキーマ、キー、NULL許容性を必ず確認してください。

AIおよび機械学習ツールは、サンプルデータとクエリパターンに基づいてテーブル構造、データ型、インデックスを推奨し、冗長な列やサイズが大きすぎる列を警告し、リスクの高いDROPまたはALTER操作について警告します。開発者は、適用する前に各提案を確認します。