English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL ターブル作成 CREATE TABLE

このチュートリアルでは、SQLを使用してデータベース内にテーブルを作成する方法を学びます。

テーブルの作成

前章では、データベースサーバー上でデータベースを作成する方法を学びました。今やデータベース内にテーブルを作成する時が来ました。これらのテーブルは実際にデータを保存します。データベースのテーブルは情報を行と列に構成されています。

SQL CREATE TABLE文はテーブルを作成するために使用されます。

文法

テーブルを作成する基本的な文法は以下のように示されます:

CREATE TABLE table_name(column1_name data_type constraints,column2_name data_type constraints,...
);

この文法を簡単に理解するために、以下で説明しますデモデータベース内にテーブルを作成するためには、MySQLコマンドラインツールで以下の文を入力し、Enterキーを押します:

-- MySQLデータベースの文法
CREATE TABLE persons(
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);
-- SQL Serverデータベースの文法
CREATE TABLE persons(
    id INT NOT NULL PRIMARY KEY IDENTITY(1,1)、
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

の上記の文を基に、以下の名前のテーブルを作成しますpersonのテーブル、このテーブルは以下の特徴を持っていますidnamebirth_dateおよびphone4つの列。注意、各列名の後にはデータ型の宣言があります;この宣言は、列がどのようなデータを保存するかを指定します。整数、文字列、日付などです。

一部のデータ型lengthパラメータを使用して宣言することができます。このパラメータは、列にどれだけの文字を保存できるかを示します。例えば、VARCHAR(50)まで含まれます。5文字。

注意:列のデータ型は、データベースシステムによって異なる場合があります。例えば、MySQLとSQL ServerはINTの整数データ型をサポートしていますが、OracleデータベースはNUMBERデータ型をサポートしています。

以下の表は、MySQLがサポートする最も一般的なデータ型をまとめています。

データ型説明
INTの間を保存します。-2147483648から2147483647の間の数値
DECIMAL正確な精度で十進値を保存します。
CHAR最大長が255文字の定長文字列を保存します。
VARCHAR可変長文字列を保存し、最大長が65,535文字。
TEXT最大サイズが65,535文字の文字列を保存します。
DATEでYYYY-MM-DD形式で日付値を保存します。
DATETIMEでYYYY-MM-DD HH:MM:SS形式で組み合わせた日付を保存します。/時間値。
TIMESTAMP時間スタンプ値を保存します。TIMESTAMP値はUnixエポック('1970-01-01 00:00:01(UTC)からの秒数。

参照部分を確認してください。SQL DBデータ型、MySQLやSQL Serverなどの一般的なRDBMS(リレーショナルデータベース管理システム)で利用可能なすべてのデータ型の詳細情報。

前の文では、テーブル列に他の制約(制約とも呼ばれます)を設定しました。修飾子)。制約は、列中で許可される値のルールを定義します。

  • NOT NULL制約は、フィールドがNULL値を受け入れられないことを保証します。

  • PRIMARY KEY制約は、対応するフィールドをテーブルの主キーとしてマークします。

  • AUTO_INCREMENT属性はMySQLの標準SQL拡張であり、値が指定されていない場合、前の値を増分してMySQLに伝えることを示します。1自動的に値を割り当てるために使用されます。数値フィールドにのみ適用されます。

  • UNIQUE制約は、一つのカラムの各行がユニークな値を持つことを保証します。

次の章では、以下について学びます。SQL制約の詳細情報。

注意: Microsoft SQL ServerはIDENTITY属性を使用して自動増分機能を実行します。デフォルト値はIDENTITY(1,1)、シード値または初期値として1、増分値が1.

ヒント:MySQLやOracleデータベースのどのテーブルのカラム情報や構造も、SQL Serverでは(次のように)コマンドを実行して確認できます。table_name実際のテーブル名に置き換えてください)。DESC table_name;EXEC sp_columns table_name;

存在しなければテーブルを作成する

データベース内に既存のテーブルを作成しようとするとエラーメッセージが表示されます。このような状況を避けるために、MySQLではIF NOT EXISTSオプションを使用できます。以下のように:

CREATE TABLE IF NOT EXISTS persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

ヒント:現在選択中のデータベース内のテーブルリストを表示するには、SHOW TABLES;をMySQLコマンドラインで実行してください。