Top > MySQL

MySQLとは

MySQLとは、MySQL ABという企業によって開発されているオープンソースのデータベースエンジンである。

MySQLのインストール

MySQLの入手先

http://www.mysql.com/

インストールファイルを入手したら、普通にインストールするだけ。途中サインアップをするか聞かれるが、スキップしてもインストールは正常に完了できる。Windowsのサービスとして登録することもできるので便利である。

Default Charactorの変更

日本語が化けるのを防止するため、my.iniファイルを変更する。
default-character-setのlatin1をcp932に変更する。my.iniにこの設定値が2箇所あるので、2箇所ともcp932に変更する。

default-character-set = latin1

↓以下のように変更する。  ※2箇所

default-character-set = cp932

修正が完了したら、設定を有効にするためサービスの再起動を行う。

データベース領域

データベース領域は以下のコマンドで確認することができる。

mysql> SHOW DATABASES;

実行結果

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

デフォルトで上記3つのデータベース領域が用意されている。

データベース領域の作成

CREATE DATABASE [データベース領域名称];

MySQLの起動

基本的にWindowsXPのサービスとして制御できるが、コマンドプロンプトからの起動方法は以下のとおり。

c:\>net start mysql

実行結果

MySQL サービスを開始します.
MySQL サービスは正常に開始されました。

MySQLの停止

C:\>net stop mysql

実行結果

MySQL サービスを停止中です..
MySQL サービスは正常に停止されました。

MySQL用のコンソールの起動方法

データベースエンジンに接続するためのクライアントプログラム。基本的にはOracleやSQL Serverと同じ感じ。

c:\>mysql -u root -p

このあとパスワードを入力して起動!起動に成功するとプロンプトが以下のようになる、

mysql>

実践してみる

とりあえずデータベース領域とテーブルを作って適当にいろいろやってみる。

データベース領域の作成

GOLF_SCOREという名称のデータベース領域を作成する。

mysql>CREATE DATABASE GOLF_SCORE;

データベース領域の選択

MySQLに接続したら使用するデータベース領域を選択する。

mysql>USE GOLF_SCORE;

PLAYERテーブルの作成

作成したGOLF_SCOREデータベース領域にPLAYERというテーブルを作成する。このテーブルはユーザーマスタで、とりあえずユーザー番号と名称を持つシンプルなテーブル。

mysql> CREATE TABLE PLAYER (
    ->  UCODE  INTEGER     NOT NULL,
    ->  UNAME1 VARCHAR(50) NOT NULL,
    ->  UNAME2 VARCHAR(50),
    ->  PRIMARY KEY(UCODE)
    -> );
Query OK, 0 rows affected (0.60 sec)

これでテーブルの作成完了。それにしても軽い。

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

カラム一覧

テーブルのカラムを確認するには・・・

mysql> SHOW COLUMNS FROM PLAYER;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| UCODE  | int(11)     | NO   | PRI |         |       |
| UNAME1 | varchar(50) | NO   |     |         |       |
| UNAME2 | varchar(50) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

データのINSERT

作成したPLAYERテーブルにレコードを登録してみる。

mysql> INSERT INTO PLAYER
    ->   VALUES ( 100 , '沖田' , '圭介');
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO PLAYER
    ->   VALUES ( 101 , 'タイガー' , 'ウッズ');
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO PLAYER
    ->   VALUES ( 102 , '田仲' , '雪利');
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO PLAYER
    ->   VALUES ( 103 , 'サンタ' , 'クロース');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO PLAYER
    ->   VALUES ( 104 , 'ジャム' , 'おじさん');
Query OK, 1 row affected (0.28 sec)

データの抽出

PLAYERテーブルからデータを抽出して表示する。

mysql> SELECT * FROM PLAYER;
+-------+----------+----------+
| UCODE | UNAME1   | UNAME2   |
+-------+----------+----------+
|   100 | 沖田     | 圭介     |
|   101 | タイガー | ウッズ   |
|   102 | 田仲     | 雪利     |
|   103 | サンタ   | クロース |
|   104 | ジャム   | おじさん |
+-------+----------+----------+
5 rows in set (0.00 sec)

UPDATE,DELETE,WHERE,JOIN,LEFT JOIN,RIGHT JOIN,LIKE,ORDER BYなどなどは省略。

ユーザーの追加(権限)

MySQLのインストールの際にrootという管理者アカウントを作成したが、アプリケーションからアクセスするための権限つきのユーザーを作成しておく。

GRANT 権限
ON データベース領域.テーブル名
TO ユーザー
IDENTIFIED BY 'パスワード';

ここでは面倒なのでALL権限をつける。データベース領域名やテーブル名は*指定可能。

mysql> GRANT ALL ON GOLF_SCORE.PLAYER
    -> TO USER1
    -> IDENTIFIED BY 'INIT';
Query OK, 0 rows affected (0.14 sec)

以下は主な権限の一覧

権限意味
ALTERテーブルとインデックスの変更権限
CREATEデータベース領域とテーブルの作成権限
DELETEテーブルのレコード削除権限
DROPデータベース領域とテーブルの削除権限
INDEXインデックスの作成と削除権限
INSERTレコードの登録権限
SELECTレコードの抽出権限
UPDATEレコードの更新権限
ALLすべての権限

WITH GRANT OPTION をつけると他のユーザーの権限まで設定できる管理者ユーザーとなる。

スクリプトファイル

スクリプトファイルとは、SQL文をファイルに保存しておき、まとめて実行するためのファイルのことである。複数のコマンドを連続的に実行したり、テストデータを作成したり、データベースの初期データを登録したりできる。

  • ファイル名:player.sql
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
    
     
     
     
     
     
     
     
     
     
     
    -
    |
    |
    |
    |
    !
     
     
     
     
     
     
     
    
    #既存のデータベース領域の削除
    DROP DATABASE golf_score;
     
    #データベース領域の作成
    CREATE DATABASE golf_score;
     
    #データベース領域の選択
    USE golf_score;
     
    #テーブルの作成
    CREATE TABLE PLAYER (
        UCODE  INTEGER     NOT NULL,
        UNAME1 VARCHAR(50) NOT NULL,
        UNAME2 VARCHAR(50),
        PRIMARY KEY(UCODE)
    ); 
     
    #レコードの追加
    INSERT INTO PLAYER VALUES ( 100 , '沖田' , '圭介');
    INSERT INTO PLAYER VALUES ( 101 , 'タイガー' , 'ウッズ');
    INSERT INTO PLAYER VALUES ( 102 , '田仲' , '雪利');
    INSERT INTO PLAYER VALUES ( 103 , 'サンタ' , 'クロース');
    INSERT INTO PLAYER VALUES ( 104 , 'ジャム' , 'おじさん');

MySQLコンソールからの実行方法は以下のとおり

mysql> \. c:\java\golf_score\player.sql
Query OK, 1 row affected (0.48 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.12 sec)

Query OK, 1 row affected (0.03 sec)

Query OK, 1 row affected (0.03 sec)

Query OK, 1 row affected (0.03 sec)

Query OK, 1 row affected (0.03 sec)

Query OK, 1 row affected (0.04 sec)

ちなみにWindowsのコマンドプロンプトから実行する場合は以下のように指定する。

C:\java\golf_score>mysql -u root -p < player.sql
Enter password: ********

C:\java\golf_score>

エクスポートとインポート

エクスポートコマンド

C:\>mysqldump [データベース名] > [ダンプファイル名] -u [ユーザー名] -p 

インポートコマンド

 C:\>mysql [データベース名] < [ダンプファイル名] -u [ユーザー名] -p 

覚書き

R/3のABAP SQLが染みついた頭のための覚書き

表示件数の指定

LIMITを指定することでデータの抽出件数を指定することができる。抽出対象のデータが大量にある場合に使用するとのことだが有効性についてはまだ実感できず。

SELECT * FROM score LIMIT 3;

上記の例はscoreテーブルからデータを最初の3件だけ抽出して表示する。

SELECT * FROM score LIMIT 3,3;

上記の例は抽出の[開始行,表示行]を指定する例。開始行は0からカウントするので注意が必要。つまりこの例だと4行目から3件表示することになる。


リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2008-06-22 (日) 22:58:54 (3986d)