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 )