SAK 図書館
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 応用実地編資料