DataBase(MySQL)

MySQL

MySQLとはオープンソースRDBMSです。オープンソースといっても高速性や信頼性に定評があり、多数の商用サイトにも用いられている実績の高いDBソフトウエアです。現在の最新バージョンは5.1(08/12現在)であり、5系よりViewやトリガーなども利用できるため、新規に利用する場合は5系を利用したらよいでしょう.(4系の安定バージョンの4.1の利用もまだ多い)
また、MySQLは非同期レプリケーションの構築が容易でこの機能により複数台のサーバにDBのレプリカを作ることが可能です。大量のアクセスのあるアプリケーションもDB負荷分散の技術で処理を行うことができます。

MySQLの基本操作

MAMPで利用できるMySQLはuser:root pass:root port:8889で立ち上がっています。MySQLのコマンドは
/Applications/MAMP/Library/bin/
以下に色々あります。試しに接続してみます

bash-3.2$ /Applications/MAMP/Library/bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.0.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test               | 
+--------------------+
3 rows in set (0.00 sec)

デフォルトのDBがあります。prog9というDBを作ってみます

bash-3.2$ /Applications/MAMP/Library/bin/mysqladmin -u root -p create prog9

もう一度接続して show databases; すると prog9が増えているはずです.もう少し実験してみましょう。簡単なテーブルを作成します

mysql> create table sample ( id int auto_increment, name varchar(64), age int, primary key(id));
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+-----------------+
| Tables_in_prog9 |
+-----------------+
| sample          | 
+-----------------+
1 row in set (0.00 sec)

mysql> show fields from sample;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment | 
| name  | varchar(64) | YES  |     | NULL    |                | 
| age   | int(11)     | YES  |     | NULL    |                | 
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

作ったテーブルに値を入れてみます

mysql> insert into sample (name,age) values ('tanaka', 25);
Query OK, 1 row affected (0.00 sec)

mysql> insert into sample (name,age) values ('yamada', 30);
Query OK, 1 row affected (0.00 sec)

mysql> select * from sample;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tanaka |   25 | 
|  2 | yamada |   30 | 
+----+--------+------+
2 rows in set (0.00 sec)

perlからMySQLを操作する

perlからDBを操作する場合は DBIモジュールとMySQL用のドライバDBD-MySQLが必要です。下の例はmac-portsからインストールした環境(perl5.8, p5-dbi, p5-dbd-mysql)での例です

bash-3.2$ cat test.pl 
#!/opt/local/bin/perl

use strict;
use warnings;
use Data::Dumper;
use DBI;

my $dbh = DBI->connect('DBI:mysql:prog9:127.0.0.1:8889', 'root', 'root');
my $sth = $dbh->prepare("SELECT * FROM sample");
$sth->execute;
while(my $ref = $sth->fetchrow_hashref) {
    print Dumper($ref);
}
$sth->finish;
$dbh->disconnect;
bash-3.2$ 
bash-3.2$ ./test.pl 
$VAR1 = {
          'name' => 'tanaka',
          'id' => '1',
          'age' => '25'
        };
$VAR1 = {
          'name' => 'yamada',
          'id' => '2',
          'age' => '30'
        };

PHPからMySQLを操作する

phpinfoの画面で組み込む済みモジュール一覧でmysqlまたはmysqliがあれば利用できますmysqliはmysql拡張モジュールです (マニュアル: mysql , mysqli )
pearライブラリにはDB(サポート終了.非推奨)やMDB2がありますが,標準のmysqliも使いやすいです。以下はmysqliのサンプル例です

bash-3.2$ cat test.php 
<?php
    $mysqli = new mysqli("127.0.0.1", "root", "root", "prog9", 8889);
    $result = $mysqli->query("SELECT * FROM sample");
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        print_r($row);
    }
    $mysqli->close();
?>
bash-3.2$ /Applications/MAMP/bin/php5/bin/php test.php 
Array
(
    [id] => 1
    [name] => tanaka
    [age] => 25
)
Array
(
    [id] => 2
    [name] => yamada
    [age] => 30
)