SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

PHP + MySQL 編1 - 項目型、テーブル作成、項目削除、件数制限問い合わせ

PHP では、MySQL、PostgreSQL が使用可能である。
以下、簡単に両者の PHP でのアクセスを検証する。
尚、ここの例の PostgreSQL コードは実際には動作させていないので注意のこと。
実際の動作テストは、SQL プログラミング資料の『PostgreSQL 編』で行っている。
PostgreSQL については、そちらとこちら、両方の資料を参考にして下さい。
MySQL は、実動作コードを掲載しておく。
SQL プログラミング資料の『MySQL 編』に新しいバージョンの MySQL 資料がある。
最近の MySQL は、トランザクション機能の追加や ODBC、JDBC アクセスも
サポートされている。

■データベース作成

  ・MySQL では、http://localhost/phpMyAdmin/index.php でデータベースが
    作成できる。(テーブルなし状態)

  ・PostgreSQL も似たような仕組みと推察する。

■テーブル項目型(フィールド型)

  ・MySQL 項目型

    int / integer    4 バイト整数
    smailint         2 バイト整数
    bigint           8 バイト整数
    float            浮動小数点
    double / real    倍精度浮動小数点
    date             日付
    time             時間
    timestamp        日付時間
    char(文字数)     固定長文字列  (最大 256 文字)
    varchar(文字数)  可変長文字列  (最大 256 文字)
    text             ラージ文字列  (最大 65535 文字)
    mediumtext       ラージ文字列  (最大 1677215 文字)
    largetext        ラージ文字列  (最大 4294967295 文字)
    blob             ラージバイナリ(最大 65535 bytes)
    mediumblob       ラージバイナリ(最大 1677215 bytes)
    largeblob        ラージバイナリ(最大 4294967295 bytes)

  ・PostgreSQL 項目型

    smailint / int2                     2 バイト整数
    integer / int / int4                4 バイト整数
    bigint / int8                       8 バイト整数
    decimal(a, a) / numeric(a, s)       10 進型
    real / float4                       6 桁単精度浮動小数点
    double precision / float8           15 桁倍精度浮動小数点
    serial                              4 バイト順序
    bigserial                           8 バイト順序
    date                                日付
    time                                時間
    timestamp                           日付時間
    char(文字数) / character            固定長文字列  (最大 4096 文字)
    varchar(文字数) / charcter varying  可変長文字列  (最大 4096 文字)
    text                                無制限テキスト
    ラージオブジェクト                  oid 型 (いまいちわからん) (^^;
    boolean / bool                      true / false

■テーブル作成

create table test (
  key1   char(8)  primary key,
  data1  bigint,
  data2  bigint,
  data3  bigint
);

  ・ブラウザで RDBMS を操作できるのは素晴らしい〜。
    操作性は別にして、ウェブ上のサービスがうまく考えてある。

  ・MySQL では、テーブル名や項目名に日本語が含まれるとエラーで処理できな
    い。また、項目名に予約語で使用されているものは指定できない。
    サーバが UNIX の場合は、テーブル名に大文字小文字の区別が発生する。
    項目名は大文字小文字の区別なしである。
    テーブル作成は、対話形式でも可能であるが、直接、クエリーで流し込んだ
    方が楽である。
    PostgreSQL のインターフェースは不明。

  ・SQL の構文そのものは、項目型の相違や日本語が扱えない問題はあるが、
    Oracle とほぼ同等である。
    SQL プログラミング言語資料 を参考にすると良い。

■テーブル削除

drop table test;

■項目削除(フィールド削除)

alter table test drop data2;

  ・MySQL では、項目削除ができる。
    PostgreSQL では不可である。

■件数制限問い合わせ

select * from test where key1 like 'a%' limit 0, 10;

  ・MySQL で件数制限問い合わせを指定するには、
      limit 0, 10
            |  |_ 取り出す件数
            |_ レコード番号(先頭レコード = 0)
    と指定する。

select * from test where key1 like 'a%' offset 0 limit 10;

  ・PostgreSQL で件数制限問い合わせを指定するには、
      offset 0 limit 10
             |       |_ 取り出す件数
             |_ レコード番号(先頭レコード = 0)
    と指定する。

■インデックス削除

  ・create index の構文は、MySQL でも PostgreSQL でも同じである。
    しかし、drop index の構文が違う。

drop index ix_key on test;

  ・MySQL でインデックス削除するには、on テーブル名を指定する。

drop index ix_key;

  ・PostgreSQL でインデックス削除するには、on テーブル名を指定しない。

■順序項目(オートナンバー)

  ・MySQL では、auto_increment と指定する。

create table test (
  keyno  auto_increment  primary key,
  data1  bigint,
  data2  bigint,
  data3  bigint
);

  ・PostgreSQL では、serial と指定する。

create table test (
  keyno  serial  primary key,
  data1  int8,
  data2  int8,
  data3  int8
);

他にも MySQL と PostgreSQL で少し細かな違いがあるようだが、ほぼ同一の
構文で SQL を発行できる。

■PHP + MySQL 編資料
■PHP 基礎編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK