SQL言語を使う MySQLに対する動作は、SQL(Structured Query Language)と呼ばれる言語で行います。
SQLは、データベース問い合わせ用の言語として、標準化されている言語で、MySQLのみならず多くのデータベース・ソフトで採用されています。
先ず、MySQLを使って「SQL」言語を取得し、データベースを作成しましょう。 ユーザの作成 初めに、MySQLにユーザを作成します。
MySQLでは、管理者の他にユーザを作成し、ダータベースをユーザ毎に分けて管理出来ます。
ユーザの作成は、MS-DOSで次の様に行います。 C:\Documents and Settings\駒ヶ嶺三四郎>cd D:\mysql\bin
D\:mysql\bin>mysqladmin -u ユーザ名 password "パスワード"
D\:mysql\bin> |
| 例: |
mysqladmin -u user password "1234" | MySQLでのデータベースの管理 1件分のデータの集まりをレコードと言い、レコードが集まった表をテーブルと言います。
MySQLでは、更に、関連するテーブルを幾つか集めてデータベースを作ります。
MySQLは、複数のデータベースを管理出来るツールです。
MySQLに関する操作は、コマンドプロンプトで行えます。 SQLのコマンド SQL文は、データベースを操作する為に標準化された言語です。
MySQLを初め、主要なデータベースの殆どは、SQLをサポートしていますので、どのデータベースにも対応出来るプログラムを書けます。
初めに、MySQLを起動しましょう。
コマンドプロンプトで次の様に行います。 C:\Documents and Settings\駒ヶ嶺三四郎>cd D:\mysql\bin
D\:mysql\bin>mysql -u ユーザ名 -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 4.0.18-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>_ |
データベースの表示 データベースの一覧を表示します。 mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
3 rows in set(0.00 sec)
mysql> |
MySQLに対するコマンドは、最後に「;」を入力します。
又、MySQLではユーザを作成すると「mysql」と「test」と言う2つのサンプルデータベースを作成します。 新しいデータベースの作成 新しいデータベースを作成し、此から扱うあらゆるデータを格納する枠を作ります。
| コマンド: |
create database データベース名; | mysql> create database yoyaku;
Query OK, 1 row affected(0.00 sec)
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| yoyaku |
| test |
+----------+
3 rows in set(0.00 sec)
mysql> |
データベースの削除 不要になったデータベースを削除します。
此のデータベースに含まれる全てのテーブルと全てのデータが削除されます。
| コマンド: |
drop database データベース名; | mysql> drop database yoyaku;
Query OK, 0 rows affected(0.00 sec)
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set(0.00 sec)
mysql> |
データベースの切替 データにアクセスするに当たり、どのデータベース内のデータを使うのか、予め指定します。 mysql> use mysql
Database changed
mysql> |
テーブルの表示 現在選ばれているデータベース内のテーブルの一覧を表示します。 mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 rows in set(0.00 sec)
mysql> |
新しいテーブルの作成 現在選ばれているデータベース内のテーブルの一覧を表示します。
| コマンド: |
create tables テーブル名{
フィールド名1 型 属性
フィールド名2 型 属性
:
); | 指定出来るデータの型
| 型 |
説明 |
| int |
整数 |
| integer |
| float |
浮動小数点数 |
| double |
| date |
日付と時刻 |
| time |
| datetime |
| timestamp |
| char(文字数) |
固定長文字列 |
| varchar(文字数) |
可変長文字列 |
属性は、指定する必要の有る時だけ指定します。
指定出来る主な属性は、以下の通りです。 指定出来る属性
| 属性 |
説明 |
| null |
Null値を許可(デフォルト) |
| not null |
Null値を未許可 |
| primary key |
主キー |
| auto_increment |
自動的に1つずつ増加 |
mysql> create table test1{
-> ID int primary key,
-> pass char(10) not null,
-> name varchar(20)
-> );
Quary OK, 0 rows affected(0.06 sec)
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| test1 |
| user |
+-----------------+
7 rows in set(0.00 sec)
mysql> |
テーブルの表示 指定のテーブルに、どんなフィールドが有り、どんな型や属性が指定されているのかを一覧表に表示します。
| コマンド: |
show columns from テーブル名; | mysql> show columns from test1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID | int(11) | | PRI | 0 | |
| pass | varchar(10) | | | | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set(0.00 sec)
mysql> |
テーブルの削除 現在選択されているデータベースの中から指定のテーブルを削除します。 mysql> drop table test1;
Quary OK, 0 rows affected(0.00 sec)
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 rows in set(0.01 sec)
mysql> |
レコードの追加 指定のテーブルにレコードを追加します。
| コマンド: |
insert into テーブル名(フィールド名1, フィールド名2,
・・・) values (データ1, データ2, ・・・); | mysql> create table test1{
-> ID int primary key,
-> pass char(10) not null,
-> name varchar(20)
-> );
Quary OK, 0 rows affected(0.06 sec)
mysql> insert into test1(ID,pass,name) values ->(1234, "aaaaaa", "溝ノ口");
Quary OK, 1 row affected(0.03 sec)
mysql> insert into test1(ID,pass,name) values ->(1240, "bbbb", "ミツカン");
Quary OK, 1 row affected(0.03 sec)
mysql> insert into test1(ID,pass,name) values ->(1250, "cccc", "コナン");
Quary OK, 1 row affected(0.03 sec)
mysql> insert into test1(ID,pass,name) values ->(1260, "dddd", "ブーブ");
Quary OK, 1 row affected(0.03 sec)
mysql> |
レコードの検索 レコードの中から、特定の条件を満たすレコードだけを抽出して表示します。
| コマンド: |
select フィールド名,フィールド名・・・from テーブル名
where 抽出条件 | 検索によって得たいフィールド名を列挙します。
全てを得たい時は「*」を指定します。
「WHERE 抽出条件」を省略すると、全てのレコードが抽出されます。
比較する演算子としては下の表の様な物が有ります。 演算子一覧
| 式 |
内容 |
| フィールド名 = キーデータ |
一致するデータのみ |
| フィールド名 < キーデータ |
キーデータより小さいデータのみ |
| フィールド名 > キーデータ |
キーデータより大きいデータのみ |
| フィールド名 <= キーデータ |
キーデータ以下のデータのみ |
| フィールド名 >= キーデータ |
キーデータ以上のデータのみ |
| フィールド名 <> キーデータ |
一致しないデータのみ |
mysql> select * from test1;
+------+--------+---------+
| ID | pass | name |
+------+--------+---------+
| 1234 | aaaaaa | 溝ノ口 |
| 1240 | bbbb | ミツカン|
| 1250 | cccc | コナン |
| 1260 | dddd | ブーブ |
+------+--------+---------+
4 rows in set(0.00 sec)
mysql> select * from test1 where ID = 1234;
+------+--------+-------+
| ID | pass | name |
+------+--------+-------+
| 1234 | aaaaaa | 溝ノ口|
+------+--------+-------+
1 row in set(0.01 sec)
mysql> select * from test1 where name = '溝ノ口';
+------+-------+
| ID | name |
+------+-------+
| 1234 | 溝ノ口|
+------+-------+
1 row in set(0.00 sec)
mysql> |
データの一部が一致しているレコードを検索する時は、検索条件は「like」と「%」又は「_」を組み合わせて指定します。
「%」の部分は、何文字でもどんな文字でも良いと言うワイルドカードです。
又、「_」は、1文字でどんな文字でも良いと言うワイルドカードです。 mysql> select * from test1 where name like '溝%';
+------+--------+-------+
| ID | pass | name |
+------+--------+-------+
| 1234 | aaaaaa | 溝ノ口|
+------+--------+-------+
1 row in set(0.00 sec)
mysql> select * from test1 where pass like '____';
+------+------+---------+
| ID | pass | name |
+------+------+---------+
| 1240 | bbbb | ミツカン|
| 1250 | cccc | コナン |
| 1260 | dddd | ブーブ |
+------+------+---------+
3 rows in set(0.00 sec)
mysql> |
検索する条件に範囲が有る場合には、「between」と「and」を使います。 mysql> select * from test1 where ID between 1230 and 1245;
+------+--------+---------+
| ID | pass | name |
+------+--------+---------+
| 1234 | aaaaaa | 溝ノ口 |
| 1240 | bbbb | ミツカン|
+------+--------+---------+
2 rows in set(0.00 sec)
mysql> |
条件が2つ以上有る場合には、論理演算子を使います。 論理演算子一覧
| 演算子 |
説明 |
| AND |
全ての条件が「真」であるレコードを検索 |
| OR |
条件の中の何れか1つが「真」であるレコードを検索 |
| NOT |
条件が「偽」であるレコードを検索 | mysql> select * from test1 where ID < 1240 and name like '溝%';
+------+--------+-------+
| ID | pass | name |
+------+--------+-------+
| 1234 | aaaaaa | 溝ノ口|
+------+--------+-------+
1 row in set(0.01 sec)
mysql> select * from test1 where ID > 1240 or name like '溝%';
+------+--------+---------+
| ID | pass | name |
+------+--------+---------+
| 1234 | aaaaaa | 溝ノ口 |
| 1240 | bbbb | ミツカン|
| 1250 | cccc | コナン |
| 1260 | dddd | ブーブ |
+------+--------+---------+
4 rows in set(0.00 sec)
mysql> select * from test1 where not(name like'溝%');
+------+------+---------+
| ID | pass | name |
+------+------+---------+
| 1240 | bbbb | ミツカン|
| 1250 | cccc | コナン |
| 1260 | dddd | ブーブ |
+------+------+---------+
3 rows in set(0.00 sec)
mysql> |
レコードの並べ替え
| コマンド: |
select フィールド名,フィールド名・・・from テーブル名
where 抽出条件 order by フィールド名 desc | mysql> select * from test1 order by ID desc;
+------+--------+---------+
| ID | pass | name |
+------+--------+---------+
| 1260 | dddd | ブーブ |
| 1250 | cccc | コナン |
| 1240 | bbbb | ミツカン|
| 1234 | aaaaaa | 溝ノ口 |
+------+--------+---------+
4 rows in set(0.02 sec)
mysql> select * from test1 where not(name like '溝%') order by ID desc;
+------+------+---------+
| ID | pass | name |
+------+------+---------+
| 1260 | dddd | ブーブ |
| 1250 | cccc | コナン |
| 1240 | bbbb | ミツカン|
+------+------+---------+
3 rows in set(0.01 sec)
mysql> |
レコードの削除 指定のテーブルから、選ばれたレコードを削除します。
| コマンド: |
delete from テーブル名 where 条件; | mysql> delete from test1 where name = 'ミツカン';
Quary OK, 1 row affected(0.02 sec)
mysql> select * from test1;
+------+--------+-------+
| ID | pass | name |
+------+--------+-------+
| 1234 | aaaaaa | 溝ノ口|
| 1250 | cccc | コナン|
| 1260 | dddd | ブーブ|
+------+--------+-------+
3 rows in set(0.00 sec)
mysql> |
データの更新 指定のテーブルから選ばれたレコードのデータを更新します。
| コマンド: |
update テーブル名 set フィールド名 where
条件; | mysql> update test1 set pass = 'abcd';
Quary OK, 3 rows affected(0.02 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from test1;
+------+------+-------+
| ID | pass | name |
+------+------+-------+
| 1234 | abcd | 溝ノ口|
| 1250 | abcd | コナン|
| 1260 | abcd | ブーブ|
+------+------+-------+
3 rows in set(0.00 sec)
mysql> update test1 set pass = 'abab' where name like '溝%';
Quary OK, 1 row affected(0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from test1;
+------+------+-------+
| ID | pass | name |
+------+------+-------+
| 1234 | abab | 溝ノ口|
| 1250 | abcd | コナン|
| 1260 | abcd | ブーブ|
+------+------+-------+
1 row in set(0.00 sec)
mysql> |
此でmysqlの基本的な使い方は終了です。
其れでは次節で実際にデータベースを作成してみましょう。 他のファイルからのレコードの挿入 指定のテーブルにレコードを追加します。
| コマンド: |
load data infile "ファイル名のパス"
into table テーブル名 fields terminated by
"フィールドの区切り文字" lines
terminated by "レコードの区切り文字"; | CSVファイルの例 mysql> load data infile "C:javasrc/yoyaku/testData.csv" into table test1 fields terminated by", "lines terminated by "\r\n";
Quary OK, 2 rows affected(0.05 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
mysql> |
ファイルの内容(testData.csv) 1234, aaaaaa, 溝ノ口
1240, bbbb, ミツカン
1250, cccc, コナン
1260, dddd, ブーブ
1270, cccc, ワカメ
1280, cccd, クッパ |
戻る |