#contents
** ユーザー登録 [#g84160e4]
*** mysql へのログイン [#z28b4175]
- インストール時に設定される mysql という名前のデータベース内にアカウント情報が設定されている
- mysql にログインする時には -u (アカウント名) -p でアカウントを指定する
- 現在の環境では root (システムの root とは別)に対してパスワードを設定している

 [munakata@charisma yellowpages]$ mysql -u root -p
 Enter password:
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7 to server version: 5.0.27
 
 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 
 
 mysql> select user,host,password from mysql.user;
 +------+--------------------+------------------+
 | user | host               | password         |
 +------+--------------------+------------------+
 | root | localhost          | 5eeabd381db11d2b |
 | root | charisma.hmuna.com | 5eeabd381db11d2b |
 |      | charisma.hmuna.com |                  |
 |      | localhost          |                  |
 +------+--------------------+------------------+
 4 rows in set (0.00 sec)
 
 mysql>
*** パスワードの設定 [#w6d8c5e6]
- パスワードの設定のしかた

 mysql> set password for root@localhost=password('xxxxxxxx');

** 表示系 [#x76d5186]
*** データベース名の表示 [#bba2a426]

 mysql> show databases;
 +----------+
 | Database |
 +----------+
 | mysql    |
 | peewee   |
 +----------+
 2 rows in set (0.02 sec)

*** データベースの選択 [#a96b0bc6]

 mysql> use peewee
 Database changed

*** データ-ベース内のテーブルの表示 [#rb74be13]

 mysql> show tables;
 +------------------+
 | Tables_in_peewee |
 +------------------+
 | image            |
 | type_info        |
 +------------------+
 2 rows in set (0.00 sec)

*** テーブル内のカラムの表示 [#hb4f361d]

 mysql> show columns from image;
 +--------------+---------------+------+-----+---------+-------+
 | Field        | Type          | Null | Key | Default | Extra |
 +--------------+---------------+------+-----+---------+-------+
 | file_id      | varchar(20)   | YES  |     | NULL    |       |
 | pict_type    | int(11)       | YES  |     | NULL    |       |
 | pict_size    | int(11)       | YES  |     | NULL    |       |
 | pict_quality | int(11)       | YES  |     | NULL    |       |
 | pict_reality | int(11)       | YES  |     | NULL    |       |
 | pict_date    | date          | YES  |     | NULL    |       |
 | pict_select  | enum('N','Y') | YES  |     | NULL    |       |
 +--------------+---------------+------+-----+---------+-------+
 7 rows in set (0.00 sec)

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
** データベースの初期化(本体、テーブル) [#o6209aa7]
*** データベースの新規作成 [#zd6a0311]

 mysql> create database new;
 Query OK, 1 row affected (0.00 sec)
 
 mysql> show databases;
 +----------+
 | Database |
 +----------+
 | mysql    |
 | new      |
 | peewee   |
 +----------+
 3 rows in set (0.00 sec)
*** データベースの削除 [#z1b214fd]
 
 mysql> drop database new;
 Query OK, 1 row affected (0.00 sec)

*** データの型 (SQL 標準) [#aeedd937]

+ 文字型
|型|最大文字数|使用サイズ|h
|CHAR(文字数)|RIGHT:255バイト|指定文字数+1バイト|
|BINARY(文字数)|RIGHT:255バイト|文字列長+1バイト|
|VARCHAR|RIGHT:255バイト|文字列長+1バイト|
|TINYBLOB / TINYTEXT|RIGHT:255バイト|文字列長+1バイト|
|BLOB / TEXT|RIGHT:64kバイト|文字列長+2バイト|
|MEDIUMBLOB / MEDIUMTEXT|RIGHT:16Mバイト|文字列長+3バイト|
|LONGBLOB / LONGTEXT|RIGHT:4Gバイト|文字列長+4バイト|

+ 数値型
|型|バイト|CENTER:最小値|CENTER:最大値|h
|TINYINT|CENTER:1|-128|127|
|SMALLINT|CENTER:2|-32768|32767|
|MEDIUMINT|CENTER:3|-8388608|8388607|
|INT|CENTER:4|-2147483648|2147483647|
|BIGINT|CENTER:8|-9223372036854775808|9223372036854775807|

+日付時刻型
|型|表示形式|範囲|説明|h
|DATE|YYYY-MM-DD|1000-01-01 〜 9999-12-31|3バイト日付型|
|DATETIME|YYYY-MM-DD HH:MM:SS|1000-01-01 00:00:00〜 9999-12-31 23:59:59|8バイト日付型|
|TIME|HHH:MM:SS|-838:59:59〜 838.59.59|3バイト時刻型|
|YEAR(2)|YY|70 〜 69(1970-2069)|1バイト年型|
|YEAR(4)|YYYY|1901 〜 2155,0000|1バイト年型|
|TIMESTAMP[2]|YY|||
|TIMESTAMP[4]|YYMM|~|~|
|TIMESTAMP[6]|YYMMDD|~|~|
|TIMESTAMP[8]|YYYYMMDD|~|~|
|TIMESTAMP[10]|YYMMDDHHMM|~|~|
|TIMESTAMP[12]|YYMMDDHHMMSS|~|~|
|TIMESTAMP[14]|YYYYMMDDHHMMSS|~|~|

 TIMESTAMP型のフィールドはレコードが更新される時に自動的に現在時刻が設定される。
 複数の TIMESTAMP フォールドがある場合には最初のものだけが自動更新される

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** テーブルの新規作成 (カラム構造の宣言) [#t6394e22]

''  構文 COLOR(RED){CREATE TABLE テーブル名(カラム1 カラム1のデータの型、カラム2 カラム2のデータの型....);}'' 
 mysql> create table type_info (type_id int, type_def varchar(100));
 Query OK, 0 rows affected (0.03 sec)

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** 検索を高速化させる為にインデックスを付加する [#y30751d4]
''COLOR(GREEN){新規にテーブルを作成する時に INDEX を指定する。}''
 mysql> create table pict_info(file_name varchar(20),
     -> category int,
     -> quarity int,
     -> reality int,
     -> index (file_name));
 Query OK, 0 rows affected (0.00 sec)

 mysql> show columns from pict_info;
 +-----------+-------------+------+-----+---------+-------+
 | Field     | Type        | Null | Key | Default | Extra |
 +-----------+-------------+------+-----+---------+-------+
 | file_name | varchar(20) | YES  | MUL | NULL    |       |
 | category  | int(11)     | YES  |     | NULL    |       |
 | quarity   | int(11)     | YES  |     | NULL    |       |
 | reality   | int(11)     | YES  |     | NULL    |       |
 +-----------+-------------+------+-----+---------+-------+
 4 rows in set (0.00 sec)
''COLOR(GREEN){作成済みのテーブルに INDEX  を追加で指定する}''
 mysql> alter table file_dir add index (file_name);
 Query OK, 87 rows affected (0.00 sec)
 Records: 87  Duplicates: 0  Warnings: 0

 mysql> show columns from file_dir;
 +-----------+--------------+------+-----+---------+-------+
 | Field     | Type         | Null | Key | Default | Extra |
 +-----------+--------------+------+-----+---------+-------+
 | file_name | varchar(40)  | YES  | MUL | NULL    |       |
 | size      | int(11)      | YES  |     | NULL    |       |
 | data      | datetime     | YES  |     | NULL    |       |
 | dir       | varchar(100) | YES  |     | NULL    |       |
 +-----------+--------------+------+-----+---------+-------+
 4 rows in set (0.00 sec)
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** カラム構造(データベースメンバー)の表示 [#w2fc561d]

 mysql> show columns from image;
 +--------------+---------------+------+-----+---------+-------+
 | Field        | Type          | Null | Key | Default | Extra |
 +--------------+---------------+------+-----+---------+-------+
 | file_id      | varchar(20)   | YES  |     | NULL    |       |
 | pict_type    | int(11)       | YES  |     | NULL    |       |
 | pict_size    | int(11)       | YES  |     | NULL    |       |
 | pict_quality | int(11)       | YES  |     | NULL    |       |
 | pict_reality | int(11)       | YES  |     | NULL    |       |
 | pict_date    | date          | YES  |     | NULL    |       |
 | pict_select  | enum('N','Y') | YES  |     | NULL    |       |
 +--------------+---------------+------+-----+---------+-------+
 7 rows in set (0.00 sec)
*** カラムの削除 [ALTER TABLE xxx DROP yyy] [#pc1493b6]

 mysql> alter table type_info drop type_id;
 Query OK, 0 rows affected (0.06 sec)
 Records: 0  Duplicates: 0  Warnings: 0

*** カラムの追加 [ALTER TABLE xxx ADD yyy zzz] [#s360afbb]

 mysql> alter table type_info add pict_type int;
 Query OK, 0 rows affected (0.06 sec)
 Records: 0  Duplicates: 0  Warnings: 0
 
 mysql> show columns from type_info;
 +-----------+--------------+------+-----+---------+-------+
 | Field     | Type         | Null | Key | Default | Extra |
 +-----------+--------------+------+-----+---------+-------+
 | type_def  | varchar(100) | YES  |     | NULL    |       |
 | pict_type | int(11)      | YES  |     | NULL    |       |
 +-----------+--------------+------+-----+---------+-------+
 2 rows in set (0.00 sec)
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
** レコード登録 [#o85abb81]
*** レコード登録(内容を指定しないカラムは NULL に初期化される) [#k43ce064]

 mysql> insert into image (file_id, pict_type, pict_size) VALUES
     -> ('123456.jpg',1,1024);
 Query OK, 1 row affected (0.03 sec)

*** ファイルからのレコードの一括登録 [LOAD DATA 文] [#f77a709f]
+ ''COLOR(GREEN){カラムの構造とマッチしたデータが TAB で区切られたテキストデータのファイルを一括で読み込ませることができる。}''

++ COLOR(BLUE){最初にデータを読み込ませるテーブルを準備する}
 mysql> create table file_dir (file_name varchar(40),
     -> size int,
     -> data datetime,
     -> dir varchar(100));
 Query OK, 0 rows affected (0.01 sec)
 
 mysql> show columns from file_dir;
 +-----------+--------------+------+-----+---------+-------+
 | Field     | Type         | Null | Key | Default | Extra |
 +-----------+--------------+------+-----+---------+-------+
 | file_name | varchar(40)  | YES  |     | NULL    |       |
 | size      | int(11)      | YES  |     | NULL    |       |
 | data      | datetime     | YES  |     | NULL    |       |
 | dir       | varchar(100) | YES  |     | NULL    |       |
 +-----------+--------------+------+-----+---------+-------+
 4 rows in set (0.00 sec) 


++ COLOR(BLUE){読み込ませる為に作成したデータのテクストファイル (タブ区切り)}
 [root@rh01 root]# cat /home/munakata/dir_data.txt
 20100000.jpg    40236        2002/07/05  09:35       C:\data\mydata
 20100001.jpg    45323        2002/08/06  00:35       C:\data\mydata
 20100002.jpg    44296        2002/07/05  09:36       C:\data\mydata
 20100003.jpg    43769        2002/07/05  09:41       C:\data\mydata
 20100004.jpg    38132        2002/07/05  09:37       C:\data\mydata
 20100005.jpg    40826        2002/08/14  18:20       C:\data\mydata
 20100006.jpg    42708        2002/08/06  00:36       C:\data\mydata
 20100007.jpg    46642        2002/08/06  00:36       C:\data\mydata
 20100008.jpg    55897        2002/08/06  00:30       C:\data\mydata
 20100009.jpg    44572        2002/08/06  00:31       C:\data\mydata
 20100010.jpg    41688        2002/08/06  00:31       C:\data\mydata

++ COLOR(BLUE){クライアント上のファイル(local file)をテーブルに読み込む}
 mysql> load data local infile '/home/munakata/dir_data.txt'
     -> into table file_dir;
 Query OK, 87 rows affected (0.00 sec)
 Records: 87  Deleted: 0  Skipped: 0  Warnings: 0

++ COLOR(BLUE){レコードが正しく書き込まれたことを確認}}
 mysql> select * from file_dir;
 +--------------+--------+---------------------+--------------+
 | file_name    | size   | data                | dir          |
 +--------------+--------+---------------------+--------------+
 | 20100000.jpg |  40236 | 2002-07-05 09:35:00 | C:datamydata |
 | 20100001.jpg |  45323 | 2002-08-06 00:35:00 | C:datamydata |
 | 20100002.jpg |  44296 | 2002-07-05 09:36:00 | C:datamydata |
  
             途中省略
 
 | 20100085.jpg |  72163 | 2003-05-14 10:07:00 | C:datamydata |
 | 20100086.jpg |  61625 | 2003-06-02 18:11:00 | C:datamydata |
 | 20100087.jpg | 118352 | 2003-08-01 00:34:00 | C:datamydata |
 +--------------+--------+---------------------+--------------+
 87 rows in set (0.00 sec)
*** ファイルからの一括登録時のオプション指定 [#zfd47217]
+''COLOR(GREEN){レコードの先頭何行かを無視させる方法 ・・・・ IGNORE 指定}''
 mysql> load data local infile '/home/munakata/dir_data.txt'
     -> into table file_dir
     -> ignore 1 lines;
+''COLOR(GREEN){サーバー上のファイルを読み込ませる方法 ・・・・ LOCAL を取る}''
 mysql> load data infile '/home/munakata/dir_data.txt'
     -> into table file_dir;
+''COLOR(GREEN){TAB 以外のデリミタを読み込む方法 ・・・・ FIELDS TERMINATED BY 指定}''
 mysql> load data local infile '/home/munakata/dir_data.txt'
     -> into table file_dir
     -> fields terminated by ':';
+''COLOR(GREEN){データが ”データ” などのように括られている場合・・・・ ENCLOSED BY 指定}''
 mysql> load data local infile '/home/munakata/dir_data.txt'
     -> into table file_dir
     -> enclosed by '"';
+''COLOR(GREEN){レコードの並び順が異なる場合 ・・・・ ファイル内のカラム指定}''
 mysql> load data local infile '/home/munakata/dir_data.txt'
     -> into table file_dir
     -> { 項目1、項目2、... };
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** レコードの更新 [#oef1e402]

 mysql> update image set pict_quality = 9999;
 Query OK, 2 rows affected (0.00 sec)
 
 mysql> insert into image (file_id, pict_size) values ('998866.jpg',2048);
 Query OK, 1 row affected (0.00 sec)
 
 mysql> insert into image (file_id, pict_size) values ('96680.jpg',4096);
 Query OK, 1 row affected (0.00 sec)

*** 指定した条件にマッチしたデータの変更 [update 演算子] [#tf246256]

 mysql> select file_id, pict_type from image;
 +------------+-----------+
 | file_id    | pict_type |
 +------------+-----------+
 | 123555.jpg |         0 |
 | 998866.jpg |      NULL |
 | 96680.jpg  |      NULL |
 +------------+-----------+
 3 rows in set (0.00 sec)

 mysql> update image set pict_type=1 where file_id='123555.jpg';
 Query OK, 1 row affected (0.02 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 
 mysql> update image set pict_type=2 where file_id='998866.jpg';
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 
 mysql> update image set pict_type=3 where file_id='96680.jpg';
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0

 mysql> select file_id, pict_type from image;
 +------------+-----------+
 | file_id    | pict_type |
 +------------+-----------+
 | 123555.jpg |         1 |
 | 998866.jpg |         2 |
 | 96680.jpg  |         3 |
 +------------+-----------+
 3 rows in set (0.00 sec)
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** レコードの削除(条件付、何も指定しないと全て削除される) [#fa4ee364]

 mysql> delete from image where file_id='123456.jpg';
 Query OK, 1 row affected (0.03 sec)
 
 mysql> select file_id, pict_size, pict_quality from image;
 +------------+-----------+--------------+
 | file_id    | pict_size | pict_quality |
 +------------+-----------+--------------+
 | 123555.jpg |      2048 |         9999 |
 +------------+-----------+--------------+
 1 row in set (0.00 sec)

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
** 検索系 [#aab30e72]
*** データの単純抽出 [SELECT 演算子] [#pa10e98e]

 mysql> select file_id,pict_size from image;
 +------------+-----------+
 | file_id    | pict_size |
 +------------+-----------+
 | 123456.jpg |      1024 |
 | 123555.jpg |      2048 |
 +------------+-----------+
 2 rows in set (0.00 sec)

 mysql> select file_id, pict_size, pict_quality from image;
 +------------+-----------+--------------+
 | file_id    | pict_size | pict_quality |
 +------------+-----------+--------------+
 | 123456.jpg |      1024 |         9999 |
 | 123555.jpg |      2048 |         9999 |
 +------------+-----------+--------------+
 2 rows in set (0.00 sec)
*** select 文はレコードの検索以外の目的でも使用できる [#i6570259]
 mysql> select CURDATE() as Today;
 +------------+
 | Today      |
 +------------+
 | 2004-04-17 |
 +------------+
 1 row in set (0.00 sec)
*** データ抽出時に演算を行うこともできる [#r0bebdb6]

 mysql> select file_id, pict_size, (pict_quality/2) from image;
 +------------+-----------+------------------+
 | file_id    | pict_size | (pict_quality/2) |
 +------------+-----------+------------------+
 | 123555.jpg |      2048 |          4999.50 |
 | 998866.jpg |      2048 |             NULL |
 | 96680.jpg  |      4096 |             NULL |
 +------------+-----------+------------------+
 3 rows in set (0.00 sec)

 mysql> select file_id, (pict_size+100), (pict_quality/2) from image;
 +------------+-----------------+------------------+
 | file_id    | (pict_size+100) | (pict_quality/2) |
 +------------+-----------------+------------------+
 | 123555.jpg |            2148 |          4999.50 |
 | 998866.jpg |            2148 |             NULL |
 | 96680.jpg  |            4196 |             NULL |
 +------------+-----------------+------------------+
 3 rows in set (0.00 sec)

 mysql> select file_id, (pict_size+100), (pict_quality/2) from image
     -> where pict_quality > 100;
 +------------+-----------------+------------------+
 | file_id    | (pict_size+100) | (pict_quality/2) |
 +------------+-----------------+------------------+
 | 123555.jpg |            2148 |          4999.50 |
 +------------+-----------------+------------------+
 1 row in set (0.00 sec)

*** データ抽出時にカラムを指定して並び替え [ORDER BY 演算子] [#j57e7404]

 mysql> select file_id, pict_size, pict_quality from image
     -> order by file_id;
 +------------+-----------+--------------+
 | file_id    | pict_size | pict_quality |
 +------------+-----------+--------------+
 | 123555.jpg |      2048 |         9999 |
 | 96680.jpg  |      4096 |         NULL |
 | 998866.jpg |      2048 |         NULL |
 +------------+-----------+--------------+
 3 rows in set (0.02 sec)

 mysql> select file_id, pict_size, pict_quality from image
     -> order by pict_size;
 +------------+-----------+--------------+
 | file_id    | pict_size | pict_quality |
 +------------+-----------+--------------+
 | 123555.jpg |      2048 |         9999 |
 | 998866.jpg |      2048 |         NULL |
 | 96680.jpg  |      4096 |         NULL |
 +------------+-----------+--------------+
 3 rows in set (0.00 sec)

*** レコードの演算の表示 (単純な抽出ではなく演算結果だけを表示) [#ge5fb846]

 mysql> select MIN(pict_size),AVG(pict_size),MAX(pict_size) from image;
 +---------------+----------------+----------------+
 | MIN(pict_size) | AVG(pict_size) | MAX(pict_size) |
 +----------------+----------------+----------------+
 |           2048 |      2730.6667 |           4096 |
 +----------------+----------------+----------------+
 1 row in set (0.00 sec)

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
** 検索時のリレーションの設定 (複数テーブルの連結) [#q7f280a6]
*** 内部結合 [INNER JOIN 演算子] [#u56a2733]

 mysql> show columns from image;
 +--------------+---------------+------+-----+---------+-------+
 | Field        | Type          | Null | Key | Default | Extra |
 +--------------+---------------+------+-----+---------+-------+
 | file_id      | varchar(20)   | YES  |     | NULL    |       |
 | pict_type    | int(11)       | YES  |     | NULL    |       |
 | pict_size    | int(11)       | YES  |     | NULL    |       |
 | pict_quality | int(11)       | YES  |     | NULL    |       |
 | pict_reality | int(11)       | YES  |     | NULL    |       |
 | pict_date    | date          | YES  |     | NULL    |       |
 | pict_select  | enum('N','Y') | YES  |     | NULL    |       |
 +--------------+---------------+------+-----+---------+-------+
 7 rows in set (0.00 sec)

 mysql> show columns from type_info;
 +--------------+--------------+------+-----+---------+-------+
 | Field        | Type         | Null | Key | Default | Extra |
 +--------------+--------------+------+-----+---------+-------+
 | pict_type    | int(11)      | YES  |     | NULL    |       |
 | type_comment | varchar(100) | YES  |     | NULL    |       |
 +--------------+--------------+------+-----+---------+-------+
 2 rows in set (0.00 sec)

 mysql> select file_id, pict_type, pict_size from image;
 +------------+-----------+-----------+
 | file_id    | pict_type | pict_size |
 +------------+-----------+-----------+
 | 123555.jpg |         1 |      2048 |
 | 998866.jpg |         2 |      2048 |
 | 96680.jpg  |         3 |      4096 |
 +------------+-----------+-----------+
 3 rows in set (0.00 sec)

 mysql> select * from type_info;
 +-----------+--------------+
 | pict_type | type_comment |
 +-----------+--------------+
 |         1 | 区分1       |
 |         2 | 区分2       |
 |         3 | 区分3       |
 +-----------+--------------+
 3 rows in set (0.00 sec)

 mysql> select file_id, type_comment, image.pict_type, pict_size from image
     -> inner join type_info on
     -> image.pict_type = type_info.pict_type;

 +------------+--------------+-----------+-----------+
 | file_id    | type_comment | pict_type | pict_size |
 +------------+--------------+-----------+-----------+
 | 123555.jpg | 区分1       |         1 |      2048 |
 | 998866.jpg | 区分2       |         2 |      2048 |
 | 96680.jpg  | 区分3       |         3 |      4096 |
 +------------+--------------+-----------+-----------+
 3 rows in set (0.00 sec)
*** 内部結合 [WHERE 演算子] [#l46f567b]
** 外部結合 [#kdb2efe1]
*** 左外部結合 [LEFT JOIN 演算子] [#dc4c172c]
*** 右外部結合 [RIGHT JOIN 演算子] [#u6fb885a]
** 和結合:ユニオン(縦方向の結合) [#o12aa174]

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS