テーブルを新しく作るには?SQL Server CREATE TABLE文の基本と列定義の仕組みを解説
SQL Serverでデータを管理するには、まずテーブル(Table)を作成する必要があります。
テーブルは「データを入れる箱」のようなもので、その構造を定義するのがCREATE TABLE文です。
この記事では、テーブル作成の基本構文から列(カラム)の定義、制約やデータ型の指定方法までを初心者にもわかりやすく紹介します。
目次
CREATE TABLE文の基本構文
基本形
CREATE TABLE文は、新しいテーブルを作成するためのSQL命令です。基本構文は次のようになります。
CREATE TABLE テーブル名 (
列名1 データ型 [制約],
列名2 データ型 [制約],
...
);
例えば、顧客情報を管理するテーブルを作る場合:
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name NVARCHAR(50),
City NVARCHAR(50),
CreatedAt DATETIME DEFAULT GETDATE()
);
これで「Customers」というテーブルが作成され、4つの列が定義されます。
列(カラム)の定義とデータ型
列の定義
各列には「名前」「データ型」「制約(任意)」を指定します。
データ型は、整数なら INT、文字列なら NVARCHAR(50) のように指定します。
主なデータ型の例
| カテゴリ | 型名 | 用途 |
|---|---|---|
| 文字列 | NVARCHAR(50) | 日本語を含む名前・住所など |
| 数値 | INT, DECIMAL(10,2) | IDや金額など |
| 日付 | DATETIME2 | 登録日時など |
| 論理値 | BIT | フラグ(0/1) |
データ型の選び方は、SQL Server データ型の基礎と選び方を参照してください。
制約(Constraints)の指定
主な制約の種類
制約を設定することで、テーブル内のデータ整合性を自動的に保証できます。
| 制約名 | 意味 | 例 |
|---|---|---|
| PRIMARY KEY | 主キー(重複・NULL禁止) | CustomerID INT PRIMARY KEY |
| FOREIGN KEY | 外部キー(他テーブル参照) | FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) |
| CHECK | 値の範囲制限 | CHECK (Age >= 0) |
| DEFAULT | 初期値設定 | CreatedAt DATETIME DEFAULT GETDATE() |
制約の詳細は、制約(Constraints)の種類と使い方でも詳しく解説しています。
テーブル作成の実例
顧客管理テーブルを作る例
CREATE TABLE Customers (
CustomerID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(100) NOT NULL,
Email NVARCHAR(100),
City NVARCHAR(50),
RegisteredAt DATETIME2 DEFAULT SYSDATETIME()
);
この例では、自動採番(IDENTITY)とDEFAULT制約を組み合わせています。
注文テーブルを作る例(外部キー付き)
CREATE TABLE Orders (
OrderID INT IDENTITY(1,1) PRIMARY KEY,
CustomerID INT NOT NULL,
OrderDate DATETIME2 DEFAULT SYSDATETIME(),
Amount DECIMAL(10,2) CHECK (Amount > 0),
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
このように、他のテーブルとの関連(外部キー)を設定することで整合性を保てます。
テーブルの変更・削除
列を追加・変更する
ALTER TABLE Customers
ADD Phone NVARCHAR(20);
ALTER TABLE Customers
ALTER COLUMN Name NVARCHAR(200);
ALTER TABLEを使うと、列や制約を後から変更できます。
テーブルを削除する
DROP TABLE Orders;
DELETEとは異なり、DROP TABLEはテーブル構造そのものを削除します。元に戻せないため注意が必要です。
実務で気をつけたいポイント
- 列名やテーブル名は業務上の意味がわかるように付ける。
- NOT NULLを適切に使って、データ欠損を防ぐ。
- IDENTITYやDEFAULTで自動化できる部分は自動化する。
- 外部キーやCHECK制約を活用して整合性を担保する。
- 変更頻度の高い列はデータ型を余裕をもって設計する。
まとめと次のステップ
学んだ内容の整理
- CREATE TABLE文はテーブル構造を定義する基本コマンド。
- 各列にデータ型や制約を設定して整合性を維持する。
- ALTER TABLEで変更、DROP TABLEで削除が可能。
- 設計段階で制約とデータ型を正しく選ぶことが重要。
参考リンク

0 件のコメント:
コメントを投稿