SQLite

コマンドプロンプトを起動して Data Base を作成する簡単な例です。
SQLite をインストールしなくてもサーバー環境で PHP を使うことは出来るのですが、このページはローカル環境で使うのでインストールが必要です。

データベース(meibo.db)を作成

  1. PHP で SQLite を使うには、SQLite の基本とコマンドの使い方を知らなければ話になりません。
    ここではコマンドプロンプトを起動して、基本的なデータベースの作成方法を説明します。
  2. 次のページを参照して SQLite をインストールして実行環境を整えて下さい。
    SQLiteインストール(Window版)
    インストールは簡単で、解凍したファイル(sqlite3.exe)を C:\sqlite\ に置くだけです。
  3. SQLite のコマンド一覧を表示します。
    .help で一覧が表示され .exit で SQLite が終了します。
    C:\sqlite>sqlite3
    sqlite> .help
    sqlite> .exit
    
  4. データベース(meibo.db)を作成します。
    コマンドプロンプトを起動して、次のコマンドを実行して下さい。
    C:\sqlite>sqlite3 meibo.db
    create table table1(id, name, sex, age);
    insert into table1 values('n1', '花子', 2, 20);
    insert into table1 values('n2', '太郎', 1, 21);
    insert into table1 values('n3', '涼子', 2, 22);
    insert into table1 values('n4', '和也', 1, 22);
    insert into table1 values('n5', '美里', 2, 22);
    .mode column
    .header on
    select * from table1;
    .exit
    
  5. 【実行画面】
    C:\Windows\System32>cd \sqlite
    C:\sqlite>sqlite3 meibo.db
    SQLite version 3.8.8.3 2015-02-25 13:29:11
    Enter ".help" for usage hints.
    sqlite> create table table1(id, name, sex, age);
    sqlite> insert into table1 values('n1', '花子', 2, 20);
    sqlite> insert into table1 values('n2', '太郎', 1, 21);
    sqlite> insert into table1 values('n3', '涼子', 2, 22);
    sqlite> insert into table1 values('n4', '和也', 1, 22);
    sqlite> insert into table1 values('n5', '美里', 2, 22);
    sqlite> .mode column
    sqlite> .header on
    sqlite> select * from table1;
    id          name        sex         age
    ----------  ----------  ----------  ----------
    n1          花子        2           20
    n2          太郎        1           21
    n3          涼子        2           22
    n4          和也        1           22
    n5          美里        2           22
    sqlite>
    sqlite> .exit
    C:\sqlite>
    

プログラムの説明

  1. sqlite3 meibo.db で meibo.db を作成します。
  2. create table table1(id, name, sex, age); で table1 を作成します。
    アイテムとして id, name, sex, age を持ちます。
  3. insert into table1 で5件のデータを登録します。
  4. カラムとヘッダーを設定して select * from table1; で印字します。
  5. .exit で終了します。

スクリプトファイル(.sql)

  1. 事前にコマンドをタイプしたスクリプトファイルを作成しておいて、実行することも出来ます。
    meibo.db を作成するコマンドをタイプした meibo.sql です。
    create table table1(id, name, sex, age);
    insert into table1 values('n1', '花子', 2, 20);
    insert into table1 values('n2', '太郎', 1, 21);
    insert into table1 values('n3', '涼子', 2, 22);
    insert into table1 values('n4', '和也', 1, 22);
    insert into table1 values('n5', '美里', 2, 22);
    .mode column
    .header on
    select * from table1;
    
  2. コマンドプロンプトを起動して meibo.db を指定します。
    C:\Windows\System32>CD C:\sqlite
    C:\sqlite>sqlite3 meibo.db
    
  3. .read で meibo.sql を指定して実行します。
    sqlite> .read meibo.sql
    
  4. 【実行画面】
    C:\SQLite>sqlite3 meibo.db
    SQLite version 3.8.8.3 2015-02-25 13:29:11
    Enter ".help" for usage hints.
    sqlite> .read meibo.sql
    id          name        sex         age
    ----------  ----------  ----------  ----------
    n1          花子        2           20
    n2          太郎        1           21
    n3          涼子        2           22
    n4          和也        1           22
    n5          美里        2           22
    
    sqlite>
    
  5. sqlite3 の実行を終了します。
    sqlite> .exit
    C:\sqlite>
    
  6. データベースファイルを .open で開くことも出来ます。
    meibo.sql の中で meibo.db を .open してみます。
    .open meibo.db
    create table table1(id, name, sex, age);
    insert into table1 values('n1', '花子', 2, 20);
    insert into table1 values('n2', '太郎', 1, 21);
    insert into table1 values('n3', '涼子', 2, 22);
    insert into table1 values('n4', '和也', 1, 22);
    insert into table1 values('n5', '美里', 2, 22);
    .mode column
    .header on
    select * from table1;
    
    実行の仕方は次のようになります。
    C:\SQLite>sqlite3
    sqlite> .read meibo.sql
    sqlite> .exit
    C:\sqlite>
    

table2 を作成

  1. meibo.db に table2 を追加して、電話番号と住所を登録してみます。
    meibo.db には既に table1(id, name, sex, age)が登録されています。
    コマンドをタイプした meibo2.sql を使います。
    create table table2(id, tel, addr);
    insert into table2 values('n1', '07-123-4567', '神戸市');
    insert into table2 values('n2', '06-111-1111', '大阪市');
    insert into table2 values('n3', '03-456-7890', '東京都');
    insert into table2 values('n4', '06-222-2222', '大阪市');
    insert into table2 values('n5', '06-333-3333', '大阪市');
    .mode column
    .header on
    select * from table2;
    
  2. 【実行画面】
    C:\Windows\System32>cd c:\sqlite
    c:\SQLite>sqlite3 meibo.db
    SQLite version 3.8.8.3 2015-02-25 13:29:11
    Enter ".help" for usage hints.
    sqlite> .read meibo2.sql
    id          tel          addr
    ----------  -----------  ----------
    n1          07-123-4567  神戸市
    n2          06-111-1111  大阪市
    n3          03-456-7890  東京都
    n4          06-222-2222  大阪市
    n5          06-333-3333  大阪市
    sqlite> .exit
    C:\sqlite>
    

プログラムの説明

  1. sqlite3 meibo.db で meibo.db を開きます。
    データベース(meibo.db)を作成と同じ書き方ですが、既に存在するときは開かれます。
  2. create table table2(id, tel, addr); で table2 を作成します。
    アイテムとして id, tel, addr を持ちます。
  3. insert into table2 で5件のデータを登録します。
  4. カラムとヘッダーを設定して select * from table2; で印字します。
  5. .exit で終了します。

データを抽出

  1. select 句で取得するデータの条件を設定します。
    table1 から id='n1' のデータを抽出します。
    select * from table1 where id='n1';
    
  2. 【実行画面】
    C:\SQLite>sqlite3 meibo.db
    SQLite version 3.8.8.3 2015-02-25 13:29:11
    Enter ".help" for usage hints.
    sqlite> select * from table1 where id='n1';
    n1|花子|2|20
    sqlite>
    
  3. 次に table1 から sex=2 のデータを抽出します。
    select * from table1 where sex=2;
    
  4. 【実行画面】
    sqlite> select * from table1 where sex=2;
    n1|花子|2|20
    n3|涼子|2|22
    n5|美里|2|22
    sqlite>
    

テーブルを結合

  1. table1 と table2 を結合したデータを取得します。
    選択条件として table1.id と table2.id が一致するものを拾い出します。
    select * from table1 inner join table2 on table1.id=table2.id;
    
  2. 【実行画面】
    sqlite> select * from table1 inner join table2 on table1.id=table2.id;
    n1|花子|2|20|n1|07-123-4567|神戸市
    n2|太郎|1|21|n2|06-111-1111|大阪市
    n3|涼子|2|22|n3|03-456-7890|東京都
    n4|和也|1|22|n4|06-222-2222|大阪市
    n5|美里|2|22|n5|06-333-3333|大阪市
    sqlite>
    
  3. 表示する項目を id, name, tel, addr に絞ってデータを取得します。
    .mode column と .header on を設定して印字を見やすくします。
    コマンドが長いときは、適当な所で改行することが出来ます。
    .mode column
    .header on
    select table1.id, table1.name, table2.tel, table2.addr
    from table1 inner join table2 on table1.id=table2.id;
    
  4. 【実行画面】
    C:\SQLite>sqlite3 meibo.db
    SQLite version 3.8.8.3 2015-02-25 13:29:11
    Enter ".help" for usage hints.
    sqlite> .mode column
    sqlite> .header on
    sqlite> select table1.id, table1.name, table2.tel, table2.addr
       ...> from table1 inner join table2 on table1.id=table2.id;
    id          name        tel          addr
    ----------  ----------  -----------  ----------
    n1          花子        07-123-4567  神戸市
    n2          太郎        06-111-1111  大阪市
    n3          涼子        03-456-7890  東京都
    n4          和也        06-222-2222  大阪市
    n5          美里        06-333-3333  大阪市
    sqlite>
    

前田稔の超初心者のプログラム入門
PHP Program