概要 :このチュートリアルでは、SQLite CREATE TABLE
を使用して新しいテーブルを作成する方法を学習します さまざまなオプションを使用したステートメント。
SQLite CREATE TABLE
の紹介 ステートメント
SQLiteで新しいテーブルを作成するには、 CREATE TABLE
を使用します 次の構文を使用したステートメント:
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
Code language: SQL (Structured Query Language) (sql)
この構文では:
- 最初に、
CREATE TABLE
の後に作成するテーブルの名前を指定します キーワード。テーブルの名前をsqlite_
で始めることはできません SQLiteの内部使用のために予約されているためです。 - 次に、
IF NOT EXISTS
を使用します 新しいテーブルが存在しない場合に作成するオプション。IF NOT EXISTS
を使用せずにすでに存在するテーブルを作成しようとしています オプションを選択するとエラーが発生します。 - 3番目に、オプションで
schema_name
を指定します 新しいテーブルが属する。スキーマはメインデータベースtemp
にすることができます データベースまたは接続されているデータベース。 - 4番目に、テーブルの列リストを指定します。各列には、名前、データ型、および列の制約があります。 SQLiteは
PRIMARYKEY
をサポートしています 、UNIQUE
、NOT NULL
、およびCHECK
列の制約。 - 5番目に、
PRIMARY KEY
などのテーブル制約を指定します 、FOREIGN KEY
、UNIQUE
、およびCHECK
制約。 - 最後に、オプションで
WITHOUT ROWID
を使用します オプション。デフォルトでは、テーブルの行には暗黙の列があり、これはrowid
と呼ばれます。 、oid
または_rowid_
桁。rowid
列には、テーブル内の行を一意に識別する64ビットの符号付き整数キーが格納されます。 SQLiteが必要ない場合は、rowid
を作成します 列で、WITHOUT ROWID
を指定します オプション。rowid
を含むテーブル 列はrowid
として知られています テーブル。WITHOUT ROWID
に注意してください オプションはSQLite3.8.2以降でのみ使用できます。
テーブルの主キーは、テーブルの各行を一意に識別する列または列のグループであることに注意してください。
SQLite CREATE TABLE
例
SQLiteを使用して連絡先を管理する必要があるとします。
各連絡先には次の情報があります:
- 名
- 姓
- メール
- 電話
要件は、電子メールと電話が一意である必要があることです。さらに、各連絡先は1つまたは複数のグループに属し、各グループは0または多数の連絡先を持つことができます。
これらの要件に基づいて、次の3つのテーブルを作成しました。
連絡先
連絡先情報を格納するテーブル。グループ
グループ情報を格納するテーブル。-
contact_groups
連絡先とグループ間の関係を格納するテーブル。
次のデータベース図はテーブルを示しています。contacts
グループコード> 、および
contact_groups。
次のステートメントは、 contacts
を作成します テーブル。
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
試してみてください
contact_id
連絡先
の主キーです テーブル。
主キーは1つの列で構成されているため、列制約を使用できます。
first_name
およびlast_name
列にはTEXT
があります ストレージクラスとこれらの列はNOTNULL
。これは、 contacts
の行を挿入または更新するときに値を指定する必要があることを意味します テーブル。
メールと電話は一意であるため、 UNIQUE
を使用します 各列の制約。
次のステートメントは、 groups
を作成します テーブル:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
試してみてください
groups
テーブルは非常に単純で、 group_id
の2つの列があります。 およびname
。 group_id
columnは主キー列です。
次のステートメントは、 contact_groups
を作成します テーブル:
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
Code language: SQL (Structured Query Language) (sql)
試してみてください
contact_groups
テーブルには、 contact_id
の2つの列で構成される主キーがあります。 およびgroup_id
。
テーブルの主キー制約を追加するには、次の構文を使用します。
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
さらに、 contact_id
およびgroup_id
外部キーです。したがって、 FOREIGN KEY
を使用します 各列の外部キーを定義するための制約。
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY
で説明することに注意してください 後続のチュートリアルで詳細に制約します。
このチュートリアルでは、SQLite CREATE TABLE
を使用して、さまざまなオプションを使用して新しいテーブルを作成する方法を学習しました。 ステートメント。