MySQLの最近のブログ記事

char 固定長
varchar 可変長

例えばchar(4)の場合だと、'a'が格納されても'abc'が格納されても4バイト占有する。


http://dev.mysql.com/doc/refman/5.1-olh/ja/char.html
Ubuntu上のMySQLを起動、停止、再起動する方法。
$ sudo /etc/init.d/mysql start    ←起動
$ sudo /etc/init.d/mysql stop     ←停止
$ sudo /etc/init.d/mysql restart  ←再起動

MySQLのINT型の最小値と最大値は、-2147483648~2147483647です。


http://dev.mysql.com/doc/refman//5.1/ja/numeric-types.html

この数字を覚えるコツをお教えしましょう。

  • 「2147483647」は、「21億」と覚えます。
  • 「21億」を分割して、「10億+10億+ちょっと」と覚えます。
  • 10億という数字、身近で聞いたことありませんか?
  • 10億人。そう、中国の人口とインドの人口です。
  • 2009年時点で、中国の人口は13.4億、インドの人口は11.9億です。
  • 中国+インドは25億人です。
  • 中国+インドは、INT型の最大値を超えるのです。
例えば、あなたがTwitterのような大人気サービスを開発したとします。
その際、会員テーブルのIDをINT型で定義したとします。
するとどうなるでしょうか。

インド人と中国人の全員が会員登録しようとすると、INT型では足りないということです。


※ ちなみにPostgresも同じ仕様のようです。
http://www.postgresql.jp/document/current/html/datatype-numeric.html
PerlでDBIモジュールを使ってDB操作を行うためのかんたんなサンプルコードです。

「都道府県マスタ」テーブルを作って、CRUD(レコード追加、読み取り、変更、削除)を行います。

注:
  • コマンドラインから実行することを想定しています。
  • ユーザ名、パスワード、DB接続情報などは環境に合わせて変更してくださいね。
  • サンプルではMySQLを使用していますが、他のRDBMSにも使えると思います。

 #!/usr/bin/perl
 
 use strict;
 use warnings;
 use DBI;
 
 my $user = 'username';
 my $passwd = 'pass';
 my $host = 'localhost';
 my $dbname = 'mysample';
 my $dbh = DBI->connect("DBI:mysql:$dbname:".$host, $user, $passwd);
 
 my $sql;
 my $sth;
 
 # CREATE TABLE
 $sql = "CREATE TABLE prefmaster ( id INT , name VARCHAR(255) ) ";
 $dbh->do($sql);
 
 # INSERT
 $sql = " INSERT INTO prefmaster (id,name) values (1, 'hokkaido') ";
 $dbh->do($sql);
 $sql = " INSERT INTO prefmaster (id,name) values (2, 'akita') ";
 $dbh->do($sql);
 
 # SELECT
 $sql = "SELECT * FROM prefmaster";
 
 $sth = $dbh->prepare($sql);
 $sth->execute;
 
 print "SELECT\n";
 while(my @a = $sth->fetchrow_array){
     print "@a\n";
 }
 print "\n";
 
 # UPDATE
 $sql = " UPDATE prefmaster SET name = 'iwate' WHERE id = 2 ";
 $dbh->do($sql);
 
 # DELETE
 $sql = " DELETE FROM prefmaster WHERE id = 1 ";
 $dbh->do($sql);
 
 # SELECT AGAIN
 $sql = "SELECT * FROM prefmaster";
 
 $sth = $dbh->prepare($sql);
 $sth->execute;
 
 print "SELECT\n";
 while(my @a = $sth->fetchrow_array){
     print "@a\n";
 }
 print "\n";
 
 
 # DROP TABLE
 $sql = " DROP TABLE prefmaster ";
 $dbh->do($sql);
 
 
 $sth->finish;
 $dbh->disconnect;

※ このページは自分用メモなので随時書き換えます。

■コマンドラインでMySQLシェルを呼び出す

C:\>mysql -u ユーザ名 -p
Enter password:  パスワードを入力

■使用するDBを指定する

mysql>use データベース名;

■SELECT文

全て抽出
mysql>SELECT  *  FROM テーブル名;

フィールド名を指定

SELECT フィールド名 FROM テーブル名;
条件指定して抽出
SELECT ... FROM テーブル名 WHERE フィールド名 = 値;
条件を複数指定して抽出
SELECT ... FROM テーブル名 WHERE フィールド名 =値 AND フィールド名=値;

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMySQLカテゴリに属しているものが含まれています。

前のカテゴリはMSDEです。

次のカテゴリはPerlです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 5.02