mysqlコマンドでデータベース操作:快速MySQLでデータベースアプリ!(2)(2/2 ページ)
今回は、MySQLの標準コマンドによる基本的な操作を解説する。MySQLを使ったデータベースアプリケーション開発の前提となる機能なので、ここでしっかりとマスターしておいてほしい。
コマンドによるデータベースの操作
テーブルの作成
いつまでも空のデータベースでは話が進みません。テーブルを作ってみましょう。下記のようなテーブルを用意します。
フィールド | データ型 ------------------------- id | int memo | char(240)
mysqlコマンドを利用し“test”データベースの中に“test_table”テーブルを作ってみましょう。まだ先ほどの状態から何もしていなければ“mysql> ”プロンプトのままのはずです。そこで次のように入力します
mysql> create table test_table ( -> id int(10), -> memo char(240) -> );
見やすいようにスペースと改行を入れていますが、なくても構いません。大事なのはフィールドの間に“,”を、文の最後に“;”を入れることです。
完了したところで、テーブルが正しく作成されているか確認してみましょう。
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | test_table | +----------------+ 1 row in set (0.00 sec)
と返ってくれば成功しています。また、フィールドが正しく作成されているかも確認してみましょう。
となっていれば成功です。“Field”、“Type”の意味はお分かりになると思います。create文を使った際に指定したフィールド名およびデータ型そのものです。その後はこうなっています
Null | 空白(NULL)の挿入が可能どうか。“YES”なら空白の挿入が可能 |
---|---|
Key | データの抽出を速くするために使われる“index”(見出し)を作成する場合に設定されるキーの型 |
Default | データ挿入時に何も指定されなかった場合に挿入するもの |
Extra | そのほかの説明 |
Privileges | 実行可能な権限(権限については次回「ユーザー参照権について」で説明します) |
「行」(データ)の挿入
テーブルができたところで、実際にデータの挿入してみましょう。
mysql> insert into test_table values (1,'1st');
もちろん、
mysql> insert into test_table (id,memo) values (2,'2nd');
のような入力も可能です。いくつか挿入しておきましょう。
成功すれば
Query OK, 1 row affected (0.00 sec)
と返ってきます。文法に誤りがあった場合(valuesの綴りを間違えてみます)は、
mysql> insert into test_table (id,memo) vales (2,'2nd'); ERROR 1064: You have an error in your SQL syntax near 'vales (2,'2nd')' at line 1
と文法の誤りを指摘してくれるので、もう一度入力し直してみましょう。
データの抽出
ちゃんとデータが挿入されているか、確認してみましょう。
mysql> select * from test_table; +------+------+ | id | memo | +------+------+ | 1 | 1st | | 2 | 2nd | +------+------+ 2 rows in set (0.10 sec)
注:該当件数とデータの中身は、入力したものによってまちまちです
条件付きでデータの抽出を行いたい場合は
mysql> select * from test_table where id = '2'; +------+------+ | id | memo | +------+------+ | 2 | 2nd | +------+------+ 1 row in set (0.08 sec)
とします。今回の例では数個のデータしか存在しないため、条件を付けずに全てを選択してもストレスなく表示されます。ですが、実用的なデータベースになればなるほど、蓄えられているデータは膨大になります。そんな場合は、表示件数を調整します。
mysql> select * from test_table limit 0,1; +------+------+ | id | memo | +------+------+ | 1 | 1st | +------+------+ 1 row in set (0.00 sec)
limit [表示オフセット] [表示数]
のように使用します。例えば、100番目から20個だけ表示させたい場合は、
mysql> select * from XXXテーブル limit 99,20;
となります。最初のデータを“0”から数えることをお忘れなく。
補足とデータベースの終了
データを更新する“update”、データを削除する“delete”、テーブルを削除する“drop”など、このあたりのコマンドはほかのSQLデータベースと同じように使えますので、特に説明は必要ないでしょう。ただし、前回の「機能とSQL互換性」で説明したように、MySQLは完全なANSI SQL92互換ではありません。もう1度おさらいすると下記のようなコマンドやオプションがサポートされていません。
- -- は空白が続く場合だけコメントになる
- VARCHARフィールドでは、値が格納されるときに末尾の空白が削除される。いくつかのケースで、CHARフィールドは暗黙のうちにVARCHARフィールドに変更される
- テーブルを削除するときに、テーブルについての権限は自動的には破棄されない。テーブルについての権限を破棄するには、明示的にREVOKEを発行する必要がある
- NULL AND FALSEはFALSEではなくNULLと評価される
また機能そのものとして、
mysql> SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
のような、“Sub-selects”や“SELECT INTO TABLE”もサポートされていません。
“mysql>”プロンプトに続けてSQL文を入力してきた際にお気付きになられた方もいると思いますが、mysqlプロンプト内ではtcshライクに、カーソルキーによるヒストリ機能やカーソルの移動、[Tab]キーによる補完機能が使えます。
試しに、[↑]キーまたは[Ctrl]+[P]を入力してみてください。キーを押せば押すほど、以前に入力したSQL文が表示されます。また、“sele”だけを入力して[Tab]キーを押せば、“select”と補完され、続けて[Tab]キーを押せば、入力可能なコマンドやテーブル名が表示されます。
テーブル名とフィールド名以外は大文字でも小文字でも構いません。ここでは、共通して小文字を使用してきましたが、
mysql> SELCT * FROM test_table LIMIT 0,1;
のように大文字を使っても同じ結果が返ってきます。
では最後に行儀よく、終了してみましょう。
mysql> quit;
またはmysqlプロンプト以降何も入力されていないのを確認して、[Ctrl]+[D]をタイプしてください。
Bye
と表示されて終了できます(もちろんバックスラッシュコマンド“\q”でも終了できます)。
以上で、mysqlコマンドの基本的な使い方はお分かりいただけたと思います。次回は、データベースの作成や削除など、より重要な操作を行うための“mysqladmin”コマンド、そしてユーザー参照権の設定について解説したいと思います。ご期待ください。
Copyright © ITmedia, Inc. All Rights Reserved.