sql >> データベース >  >> RDS >> SQLite

SQLiteテーブルの作成

    概要 :このチュートリアルでは、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 ACTIONCode language: SQL (Structured Query Language) (sql)
    FOREIGN KEY (group_id) 
        REFERENCES groups (group_id) 
          ON DELETE CASCADE 
          ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql)

    FOREIGN KEYで説明することに注意してください 後続のチュートリアルで詳細に制約します。

    このチュートリアルでは、SQLite CREATE TABLE を使用して、さまざまなオプションを使用して新しいテーブルを作成する方法を学習しました。 ステートメント。


    1. 特定のtable.columnを参照し、それらの外部キーの値を持つ外部キーを持つすべてのテーブルを見つけるにはどうすればよいですか?

    2. SQLServerでフォルダー内のファイルを一覧表示する方法

    3. 2011年春のPostgreSQLカンファレンス、米国/カナダ

    4. JOINとINNERJOINの違い