トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

MySQLでのデータベース

MySQLでのデータベース

フリーのデータベース「MySQL」のインストール方法・使用方法の簡単なガイドです。http://www.mysql.com/より、最新版のインストールモジュールなどを取得してくることができます。

Windows環境

インストール(Windows)

「mysql-4.0.14b-win.zip」(最新版をmysql.comのサイトより取得するようにしてください)を解凍し、インストールします。また、JavaとJDBCにて連携を取る場合は、ブリッジである「mysql-connector-java-3.0.8-stable.zip」を解凍し、Tomcatの「Tomcat4.1\shared\lib」内に「mysql-connector-java-3.0.8-stable-bin.jar」をコピーします。JDBCの使用については、JDBCのページを参照してください。

その後、以下の作業を行い動作をチェックします。

  • MySQLをインストール後、インストールディレクトリの「bin」にパスを通します。
  • bin\winmysqladmin.exeを実行します。MySQLのプロセスが起動します。
  • DOSプロンプトにて「mysqlshow」にてデータベースの一覧が出るとインストールチェックは完了です。
  • なお、実際のSQL文の指定は、DOSプロンプトで「mysql」と実行してMySQLのコマンドラインモードに移行して行います。

MySQLのコマンドラインモードに移行するには、サービスとしてMySQLのサービスが起動している必要があります。

Linux環境

インストール(Linux)

以下のファイルをLinuxマシンに転送します。最新版をmysql.comのサイトなどから取得するようにしてください。また、同ファイルの最新版はRedHat(Fedora)の製品またはサイトより取得してくることができるかと思います。

MySQL-server-4.0.16-0.i386.rpm
MySQL-client-4.0.16-0.i386.rpm
MySQL-shared-4.0.16-0.i386.rpm

この3つにて、MySQLのサーバソフト・クライアントソフト・共有のファイルが含まれています。

RPMファイルのインストールは以下の要領です。

rpm -iv MySQL-server-4.0.16-0.i386.rpm
rpm -iv MySQL-client-4.0.16-0.i386.rpm
rpm -iv MySQL-shared-4.0.16-0.i386.rpm

なお、必ず「すでにMySQLがインストールされてないか・古くないか」をrpm命令にて確認するようにしてください。

その後、「/var/lib/mysql」の権限を変更します。

chown -R mysql:mysql /var/lib/mysql

サーバプロセスの起動(Linux)

まず、プロセスとしてmysql.serverが起動していないとmysqlのSQL実行などを行うことができません。起動は以下のように行います。

/usr/share/mysql/mysql.server start

常駐しているかどうかは、ps命令で「ps -aux」などとして確認してみてください。

実際の起動は「/etc/rc.d/init.d/」内に起動スクリプト「mysqld」を置いて起動するほうが一般的かもしれません。MySQLをRPMにてインストールした場合は、たいていは自動でインストールされるようです。

/etc/rc.d/init.d/mysqld start

サーバプロセスの停止(Linux)

mysql.serverのプロセスを停止する場合は以下のように行います。

/usr/share/mysql/mysql.server stop

これも同じく以下と同等です。

/etc/rc.d/init.d/mysqld stop

MySQLのrootパスワード設定(Linux)

mysqladmin -u root password xxxx

とすることで、MySQLでのルートのパスワードを設定します。xxxxの部分にパスワードを指定します。これは、mysql.serverプロセスを立ち上げた後に行うという点に注意してください。また、このrootはOSの権限ではなく、あくまでもMySQL上での権限になります。ちなみにrootは管理用のスーパーユーザです。設定の変更を反映するには、「mysqladmin -u root -p reload」にて行います。このコマンドは、MySQL内のシステム設定が変更されたときに、MySQLのプロセス自身に変更を通知します。ここで、パスワードを聞いてくる場合は設定したrootのパスワードを入力します。

MySQLでのSQL実行

「mysql -u root -p」と指定すると、rootでMySQL実行モードに移行します。rootパスワードの指定がない場合は、「mysql」だけで入れます。この後は、コンソール上は「MySQL」のコマンドラインモードとなります。このモードから抜けるには、「exit」と指定してください。なお、mysqlでのSQL実行はサーバプロセスが起動していないと行うことができませんので、必ず起動を確認後に実行してください。MySQLのコマンドラインでは、Windows/UNIX共に同じ指定になります。

MySQLでのSQL実行

MySQLのコマンドラインモードに移行してから、以下のようにSQLを実行していくことになります。これらは、例えばSQL文でデータベースを作成した場合は、MySQLの確保している領域内に対し処理が行われます。Windows/UNIXなどの意識をする必要はありません。

MySQL専用のSQL文

以下の命令は、MySQL特有のものです。Oracleなどではまた別の指定方法になります。また、命令の一番最後は「;」(セミコロン)で閉じとなります。

show databases;
作成されているDB一覧を表示。
use xxx;
DB名xxxを指定し、DBをアクティブ化。
show tables;
現在アクティブなDB内に含まれるテーブル一覧の表示。
show fields from xxx;
テーブルxxxのテーブル構成を表示(Oracleのdesc命令に相当します)
create database xxx;
データベースxxxを新規作成。
drop database xxx;
データベースxxxを削除。
show variables like 'char%';
サーバ・クライアントでの文字コード(character-set)を一覧表示。

テーブルの作成

これも、型自身はMySQLの独自のものです。(他と似通ってはいますが)

create table testtbl
(empno int primary key,
ename char(10),
job char(9));

この場合、以下の内容のテーブルが生成されます。テーブル名は「testtbl」です。

項目名サイズその他
empnoint4バイト整数主キー
enamechar10バイト文字列型---
jobchar9バイト文字列型---

primary key(主キー)となる項目は、ユニークなIDである必要があります。他のレコードと同じものがあってはいけません。いわゆる、一意の情報を引き出すときに使うことができます。ただし、複数のキーにより一意の情報とすることは可能です。

テーブル項目の型

int
4バイト整数(-2147483648 〜 2147483647)
smallint
2バイト整数(-32768 〜 32767)
bigint
8バイト整数
float
単精度浮動小数点
double
倍精度浮動小数点
date
日付型。「1000-01-01」から「9999-12-31」まで。YYYY-MM-DDで表される。
datetime
日時「1000-01-01 00:00:00」から「9999-12-31 23:59:59」まで。YYYY-MM-DD HH:MM:SSで表される。
timestamp
日付時間「1970-01-01 00:00:00」〜2037年末まで。日付の計算が必要なものはこの型にて扱う。
time
時間型。「00:00:00」から「23:59:59」まで。HH:MM:SSで表される。
char(文字数)
固定長文字列(最大255文字)
varchar(文字数)
可変長文字列(最大255文字)
text
ラージ文字列(可変長。最大65535文字)
mediumtext
ラージ文字列(可変長。最大16777215文字)
largetext
ラージ文字列(可変長。最大4294967295文字)
blob
バイナリ(可変長。最大65535バイト)
mediumblob
バイナリ(可変長。最大16777215バイト)
longblob
バイナリ(可変長。最大4294967295バイト)

テーブルでのオートナンバー

以下のようにcreate table時に「auto_increment」を使用することで、自動で番号を割り振ることができます。

create table testm{
  key1 int not null auto_increment primary key,
  data1 int,
  data2 int,
  data3 int);

テーブル作成時にauto_incrementをつけた場合、

insert into testm set data1=10,data2=15,data3=4;
insert into testm set data1=11,data2=16,data3=12;

とすると、自動的にkey1の項目に対して 1,2,3 ...と番号が振られます(1から始まる)。

ただし、delete/insert処理を繰り返すことにより番号がとびとびになることになりますので、

select key1 from testm order by key1 desc;

のようにして、取り出したkey1の番号+1とするのもいいかもしれません(常に最後の番号+1をinsertするようにします)。

MySQLでのUTF-8対応について(Linux)

RPMでMySQLをインストールした場合、設定ファイル(/etc/my.cnf)の[mysqld]に「default-character-set=utf8」を指定するとサービスが起動しませんでした。ソースからのインストールが必要?

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.