CREATE文は、SQL Serverにおいて新しいデータベースオブジェクトを作成するためのSQLコマンドです。これには以下のようなオブジェクトが含まれます:
- データベース
- テーブル
- インデックス
- ビュー
- ストアドプロシージャ
SQL Serverを使うプロジェクトでは、まずテーブルやデータベースを作成し、その上にデータを操作するクエリを組み立てていきます。この記事では、CREATE文の基本的な使い方と注意点を詳しく解説します。
CREATE文の基本構文
CREATE文の一般的な構文は以下のようになります:
CREATE オブジェクトタイプ オブジェクト名 (定義);
例えば、テーブルを作成する場合は以下のような形式です:
CREATE TABLE テーブル名 (
カラム名1 データ型 [制約],
カラム名2 データ型 [制約],
...
);
CREATE TABLEの具体例
CREATE TABLE文は、テーブル(データの格納先)を作成します。例えば、顧客情報を管理するCustomersテーブルを作るには以下のSQLを使用します。
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
Email NVARCHAR(100),
PhoneNumber NVARCHAR(15),
CreatedAt DATETIME DEFAULT GETDATE()
);
コードの説明
- CustomerID: 整数型の主キー(重複不可)
- FirstName, LastName: それぞれ50文字までの文字列
- Email, PhoneNumber: 連絡先情報(必須ではない)
- CreatedAt: 作成日時を自動的に取得
その他のCREATE文の使い方
CREATE DATABASE
新しいデータベースを作成する場合:
CREATE DATABASE ShopDB;
CREATE VIEW
既存テーブルから特定のデータを簡単に参照するビューを作成:
CREATE VIEW ActiveCustomers AS
SELECT CustomerID, FirstName, LastName
FROM Customers
WHERE Active = 1;
CREATE INDEX
検索のパフォーマンス向上のためにインデックスを作成:
CREATE INDEX idx_email ON Customers (Email);
CREATE PROCEDURE
よく使うSQLをプロシージャとして定義:
CREATE PROCEDURE GetCustomerByID @CustomerID INT AS
BEGIN
SELECT * FROM Customers WHERE CustomerID = @CustomerID;
END;
エラーの原因と解決策
CREATE文を使用する際に発生するよくあるエラーの原因とその解決策を紹介します。
エラー内容 | 原因 | 解決策 |
---|---|---|
Table already exists | 同名のテーブルが既に存在する | テーブル名を変更、または削除してから作成 |
Syntax error near ‘CREATE’ | 文法のミス | SQL構文を確認 |
Invalid column type | データ型の指定が間違っている | 正しいデータ型(INTやVARCHARなど)を使用 |
Primary key violation | 主キーの重複が発生 | 重複しないデータを挿入 |
演習問題
以下の演習を通じて、SQL ServerでのCREATE文の理解を深めましょう。
演習1: データベースの作成
SchoolDBという名前の新しいデータベースを作成してください。
演習2: テーブルの作成
以下の仕様を持つStudentsテーブルを作成してください。
- StudentID: 整数型、主キー
- FirstName: 50文字までの文字列、必須
- LastName: 50文字までの文字列、必須
- BirthDate: 日付型
- EnrollmentDate: 日時型、デフォルトで現在日時
演習3: ビューの作成
Studentsテーブルから「2020年以降に入学した学生」を表示するRecentStudentsビューを作成してください。
演習4: インデックスの作成
LastNameカラムにインデックスを作成してください。
演習5: ストアドプロシージャの作成
StudentIDを引数にとり、その学生の情報を取得するストアドプロシージャGetStudentByIDを作成してください。
解答例
解答1: データベースの作成
CREATE DATABASE SchoolDB;
解答2: テーブルの作成
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
BirthDate DATE,
EnrollmentDate DATETIME DEFAULT GETDATE()
);
解答3: ビューの作成
CREATE VIEW RecentStudents AS
SELECT StudentID, FirstName, LastName, EnrollmentDate
FROM Students
WHERE EnrollmentDate >= '2020-01-01';
解答4: インデックスの作成
CREATE INDEX idx_lastname ON Students (LastName);
解答5: ストアドプロシージャの作成
CREATE PROCEDURE GetStudentByID @StudentID INT AS
BEGIN
SELECT * FROM Students WHERE StudentID = @StudentID;
END;
まとめ
本記事では、SQL ServerにおけるCREATE文の使い方について解説しました。CREATE文は、データベースやテーブルの設計段階で必須のコマンドです。特に、テーブルの設計ではカラムのデータ型や制約を正しく設定することが重要です。
今回紹介した内容を理解し、自分のプロジェクトで実際に試してみることで、SQL Serverでのデータ管理がよりスムーズになるでしょう。演習問題を解いて、CREATE文の理解をさらに深めてください。
以上で「SQL ServerのCREATE文」の記事を終了します。質問や不明点があれば、ぜひコメントしてください!