■1-03■ データベースシステムの構造図.1-1 データベースシステムの構造データベース,テーブルMySQLデータベースシステムは複数のデータベースを持つことができます。また、各データベースは複数のテーブルを持つことができます。データベースを跨いで検索(違うデータベースに属するテーブルのJOIN)することも可能です。 なお、(UNIX系OSでの)デフォルト設定では、データベース名とテーブル名の大文字/小文字を区別します。例えばテーブル`sampledb'とテーブル`SampleDB'は別のテーブルと見做されます(補足 1)。 一方、Windows環境では大文字/小文字を区別しません(すべて小文字として扱う)。 データベースユーザデータベースにアクセスするのはデータベースユーザです。データベースユーザはMySQLが管理するユーザで、(MySQLサーバが稼働する)OS上のユーザとは無関係です。データベースユーザ毎にデータベースやテーブルへのさまざまな権限を設定できます。例えば、WEBサーバからアクセスするデータベースユーザは問い合わせのみ許可するなど、システムのセキュリティや運用管理の利便性を高めることが可能です。 データベースシステムの構造と、データベースへのアクセス方法データベースシステムは複数のデータベース、およびデータベースユーザから構成されます。データベースにアクセスするには、データベースシステムに`ログイン'しなければなりません。ここでは対話型インタフェース`mysql'を使ってログインしてみます。 user1$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 28 to server version: 4.1.1-alpha-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> これでデータベースサーバにログインできました。 次にテーブルを検索してみましょう。試しにデータベースsampledbのテーブルcustomerlistを検索してみます。 mysql> SELECT count(*) FROM sampledb.customerlist; +----------+ | count(*) | +----------+ | 5459 | +----------+ 1 row in set (0.11 sec) データベース名を毎回指定するのは面倒なので、USE文(もしくはuseメタコマンド)でカレントデータベースを設定します。 mysql> USE sampledb; Database changed mysql> SELECT count(*) FROM customerlist; +----------+ | count(*) | +----------+ | 5459 | +----------+ 1 row in set (0.00 sec) カレントデータベースを設定すると、以降はデータベース名を明示しなくともテーブルを指定できます。 カレントデータベースを設定する効能は『データベース名指定を補助する』だけなので、設定したデータベースに束縛されるわけではありません。ですから、カレントデータベース以外のデータベースにアクセスすることも可能です。 カレントデータベースをsampledbとして、データベースmysqlのテーブルuserにアクセスしてみましょう。 mysql> USE sampledb; Database changed mysql> SELECT count(*) FROM mysql.user; +----------+ | count(*) | +----------+ | 10 | +----------+ 1 row in set (0.06 sec) このように、MySQLはデータベースを跨いでデータアクセスができます。 さらに、データベースDB1のテーブルとデータベースDB2のテーブルを結合したり、データベースDB1のテーブルからデータベースDB2のテーブルにデータを直接コピーすることも可能です。 補足(1) テーブル名(やデータベース名)の大文字/小文字の区別はシステム変数`lower_case_table_names'で制御します。 [PREVIOUS][UP][NEXT] |