English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、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のテーブル、このテーブルは以下の特徴を持っていますid、name、birth_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コマンドラインで実行してください。