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」です。
項目名 | 型 | サイズ | その他 |
---|---|---|---|
empno | int | 4バイト整数 | 主キー |
ename | char | 10バイト文字列型 | --- |
job | char | 9バイト文字列型 | --- |
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.