mysql|データ|データベース
概要
この章では、構造化照会言語 (SQL) を使用して MySQL データベースで作業する方法を学習することに焦点を当てます。
(2002-08-29 14:11:10)
--------------------------------- --------------------------------------------------
Wing 著、出典: Linuxaid
第 2 章: MySQL 入門
このチュートリアルへようこそ!前の章では、PHP と MySQL をインストールして構成する方法を学びました。この章では、構造化照会言語 (SQL) を使用して MySQL データベースを操作する方法を学習することに焦点を当てます。
データベース入門
前の章で簡単に説明したように、PHP はサーバー側のスクリプト言語であり、この言語を通じて Web サービス ソフトウェア (おそらく Apache、Personal Web) に命令を追加できます。サーバーまたはその他のソフトウェア)は、要求元のブラウザーに送信する前にこれらのページを実行します。この簡単な例では、毎回リクエストを受け入れる Web ページに現在の日付を挿入する方法を示しました。
それは明らかですが、それにデータベースを追加することは非常に興味深いことです。データベース サーバー (この場合は MySQL) は、PHP などのスクリプト言語を使用してデータに簡単にアクセスできる形式で大量の情報を保存するプログラムです。たとえば、PHP を使用してデータベース内のジョークのリストを取得し、それを Web サイトに表示できます。
字幕では、ジョークは完全にデータベースに保存されています。これには 2 つの利点があります。まず、ジョークごとに HTML ファイルを作成する必要がなくなり、データベースからジョークを取得して表示するための PHP ファイルを作成するだけで済みます。次に、Web サイトにジョークを追加するには、次のことを追加するだけです。データベースへのジョーク。 PHP コードは、新しいジョークがリストに含まれる場合に自動的に表示できます。
この例を使用して、データがデータベースにどのように保存されるかを見てみましょう。データベースには 1 つまたは複数のデータ テーブル (テーブル) が含まれており、各データ テーブルにはもののリストが含まれています。ジョーク データベースの場合、最初はジョークのリストを含む「jokes」という名前のデータ テーブルが必要になる場合があります。データベース内の各データ テーブルには、1 つまたは複数のデータ列 (カラム) またはデータ フィールド (フィールド) が含まれています。例に戻ると、「ジョーク」データ テーブルには、ジョークのテキストとジョークがデータベースに追加された日付の 2 つの列があるとします。データ テーブルに格納されている各ジョークは行と呼ばれます。ここで説明されているすべての用語を理解するには、次の図をご覧ください:
ジョーク テキスト (「JokeText」) と追加された日付 (「JokeDate」) の 2 つのデータ列に加えて、列も追加しました。と呼ばれる「ID」のデータ列。このデータ列の目的は、各ジョークに一意の番号を割り当てて、簡単に検索してジョークを区別できるようにすることです。
上記のデータテーブルには 3 つのデータ列と 2 つの行があることを学びましょう。各行には、ジョークの ID、テキスト、追加された日付が含まれます。これらの基本用語をマスターしたら、MySQL の使用を開始します。
MySQLにログイン
SQLデータベースの標準インターフェイスは、MySQLサービスソフトウェア(第1章でインストール)に接続し、同時にコマンドを入力することです。サーバーに接続するには、MySQL クライアント プログラムを使用する必要があります。 MySQL サービス ソフトウェアを自分でインストールした場合は、Windows または Unix のいずれのバージョンにインストールしたかに関係なく、クライアント プログラムをサービス プログラムと同じ場所にインストールする必要があります。 Linux では、このプログラムは mysql と呼ばれ、デフォルトの場所は /usr/local/mysql/bin ディレクトリです。 Windows では、このプログラムは mysql.exe と呼ばれ、デフォルトの場所は C:mysqlin ディレクトリです。
MySQL サーバーを自分でインストールした場合 (たとえば、Web ホスティングプロバイダーの MySQL サーバーで作業している場合)、MySQL サーバーに接続するには 2 つの方法があります。1 つ目は、Telnet を使用してログインする方法です。 Web サーバーをホストのサーバー上に配置し、そこで mysql を実行します。 2 番目の方法は、http://www.mysql.com/ から MySQL クライアント プログラムをダウンロードしてインストールすることです (Windows と Linux の両方で無料)。どちらの方法もうまく機能し、Web ホストが一方または両方をサポートしている可能性があります (問い合わせる必要があります)。
どの方法を選択しても、使用しているシステムに関係なく、最終的にはコマンド ラインで MySQL クライアント プログラムを実行して、MySQL サーバーに接続する必要があります。次のコマンドを入力する必要があります:
mysql -h -u -p
MySQL サーバーが実行されているコンピューターのホスト名または IP アドレスに置き換えます。サービスと同じコンピューター上でクライアント プログラムを実行している場合は、-h を省略して、-h localhost を直接使用できます。 MySQL ユーザー名である必要があります。 MySQL サーバーを自分でインストールした場合、これは root である必要があります。 Web ホスティング プロバイダーの MySQL サービスを使用している場合、これはプロバイダーが指定した MySQL ユーザーである必要があります。
パラメータはプログラムにパスワードの入力を求めるように指示し、パスワードは上記のコマンドを入力した直後に表示されます。 MySQL を自分でインストールした場合、パスワードは第 1 章で選択した root パスワードになります。 Web ホスティング プロバイダーの MySQL サービスを使用している場合、これはプロバイダーから提供された MySQL パスワードである必要があります。
すべてを入力すると、MySQL クライアント プログラムは MySQL サーバーに接続し、MySQL コマンド ラインを返します:
mysql>
ySQL サーバーは実際には複数のデータベースに接続されています (これにより、1 つの Web ホストが作成されます)複数のユーザーに対して同じ MySQL サーバーをセットアップできます)。したがって、次のステップは、動作するデータベースを選択することです。まず、現在のサーバー上のデータベースのリストを取得します。次のコマンドを入力し (セミコロンを忘れないでください)、Enter キーを押します。
mysql>SHOW DATABASES;
Lはサーバー上のデータベースのリストを表示します。これが新しくインストールされたサーバーである場合 (つまり、第 1 章で自分でインストールしたサーバー)。リストは次のようになります:
+----------+
| データベース |
+----------+
| テスト |
| --------+
2 rows in set (0.11 sec)
Lサーバーは、mysqlと呼ばれる最初のデータベースを使用して、ユーザー、そのパスワード、権限を管理します。このデータベースについては今のところは扱いません。これについては後の章で説明します。 2 番目の test はデータ モジュールです。このデータベースは削除しても構いません。チュートリアルでは使用しません (いくつかのデータベースは自分で作成します)。 MySQL では、何かを削除することを「削除」と呼びます。テスト データベースを削除するには、次のコマンドを実行します。
このコマンドを入力して Enter キーを押し、MySQL を実行すると、このデータベースが削除され、クエリが OK になります。返されます。 「よろしいですか?」などの情報は表示されないことに注意してください。したがって、MySQL にコマンドを入力するときは細心の注意を払う必要があります。ここで見てきたように、たった 1 つのコマンドで、データベース内のすべての情報を含めてデータベースを完全に削除できます。
次のステップに進む前に、まず MySQL コマンドライン接続を見てみましょう。すでに気づいたように、MySQL のすべてのコマンドはセミコロン (;) で終わる必要があります。このセミコロンを忘れると、MySQL はコマンドの入力が完了していないと判断し、次の行の入力を続行させます。コマンドの残りの部分を入力すると、プロンプトが mysql> から -> に変わります。これは、コマンドを複数行に渡って入力できる長いコマンドの場合に便利です。
コマンドが間違っていることがわかった場合は、現在のコマンド (翻訳者注: 実行されていないコマンドを指します) を完全にキャンセルして、最初からやり直すことができます。ジョブを完了するには、「c」を入力して Enter キーを押すだけです: DROP DATABASEcmysql>
L は入力したばかりのコマンドを完全に無視し、プロンプトに戻って次のコマンドを待ちます。
MySQL クライアント プログラムを終了する場合は、quit または exit を入力するだけです (これら 2 つのコマンドはまったく同じです)。これは、セミコロンで終わらずに実行できる唯一のコマンドです。
mysql> quitBye
SQL とは何ですか?
プロセス内で何を行うかを MySQL に指示するために使用するコマンドは、実際には構造化照会言語 (SQL) と呼ばれる仕様の一部です。 SQL のコマンドはクエリとも呼ばれます (このチュートリアルでは、これら 2 つの用語を同じ意味で使用します)。
ほとんどのデータベースと対話するための標準言語なので、将来 MySQL を使用しなくなり Microsoft SQL Server に切り替えたとしても、ほとんどのコマンドは同じであることがわかります。 SQL と MySQL の違いを理解する必要があります。 MySQL は、使用しているデータベース サービス ソフトウェアです。 SQL は、データベースと対話するために使用する言語です。
データベースを構築する
ウェブホスティングプロバイダーは、使用するデータベースを割り当てています。しばらくお待ちください。以下の問題については後ほど引き続き話し合います。自分でインストールした MySQL サーバーで作業している場合。次のコマンドを実行すると、簡単にデータベースを作成できます:
mysql> CREATE DATABASE Jones;
ライブラリの名前は、私たちが取り組んでいる例と一致するように、jojos です。実際、データベースには好きな名前を付けることができます。ただし、Web ホスティング プロバイダーの MySQL サーバーを使用している場合は、プロバイダーがデータベースをすでにセットアップしている可能性があり、データベースの名前を選択することはできません。
すでにデータベースがあるので、このデータベースを使用したいことを MySQL に伝える必要があります。次のコマンドは覚えるのが難しくないはずです:
mysql> USE Jokes;
これでデータベースの使用を開始できます。データ テーブルを追加する前は、このデータベースは空になっています。最初のステップは、ジョークを保持するデータ テーブルを作成することです。
データ テーブルを作成する
使用する SQL コマンドは非常に単純ですが、データ テーブルは比較的柔軟であるため、データ テーブルを作成するコマンドははるかに複雑です。データテーブルを作成するための基本的な形式は次のとおりです:
mysql> CREATE TABLE <テーブル名;> (
->
ここで、例の「ジョーク」テーブルに戻ります。このテーブルには、ID (数値)、JokeText (ジョークのテキスト)、JokeDate (ジョークが追加された日付) の 3 つのデータ列があります。このテーブルを作成するコマンドは次のようになります:
mysql> CREATE TABLE Jokes (
-> ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> JokeText TEXT,
-> JokeDate DATE NOT NULL
> );
複雑そうですよね?内容を詳しく見てみましょう:
最初の行は比較的単純で、Jokes という名前の新しいデータ テーブルを作成することを示しています。
2行目は、IDというデータ列が必要で、この列の型は整数(INT)である必要があることを説明しています。この行は、このデータ列に関するその他の情報も定義します。まず、この行を空にすることはできません (NOT NULL)。次に、カラムの値を指定しない場合、MySQL は現在の最大値 (AUTO_INCREMENT) より大きい値を使用することを選択します。最後に、このデータ列はこのデータ テーブルの一意の識別子でもあるため、このデータ列のすべての値は一意 (PRIMARY KEY) である必要があります。
3行目はとてもシンプルで、JokeTextというデータ列が必要で、この列の型はテキスト(TEXT)である必要があることを示しています。
4行目は最後の列を定義します。列名はJokeDateです。この列は空にすることはできません(NOT NULL)。
SQL コマンドを入力する場合は完全に自由ですが、Unix ベースのシステムで実行されている MySQL サービスの場合は、データベースに遭遇したときに MySQL データ ディレクトリ内のディレクトリとファイルと一貫性を保つ必要があることに注意してください。名前とテーブル名を使用するときは、大文字と小文字を区別する必要があります。それ以外の場合、MySQL は大文字と小文字を完全に区別しませんが、1 つの例外があります。テーブル名、カラム名、および同じコマンド内で複数回出現するその他の名前は、正確に同じスペルでなければなりません。
作成する各列に特定のタイプを割り当てることにも注意してください。 ID は整数型、JokeText はテキスト型、JokeDate は日付型です。 MySQL では、各列の型を定義できます。 これはデータの整理に役立つだけでなく、(以下で説明するように) データを比較するためにも使用できます。 MySQL でサポートされるデータ型の完全なリストについては、MySQL ユーザー マニュアルを参照してください。
つまり、上記のコマンドを正しく入力すると、MySQL は Query OK を返し、最初のデータテーブルを作成します。入力に誤りがある場合、MySQL は入力された言語名に問題があることを通知し、理解できない点を説明するヒントを表示します。
このような複雑なコマンドの場合、最後に Query OK だけが表示されるのは非常に単調です。新しいデータテーブルが適切に作成されたかどうかを確認してみましょう。次のコマンドを入力します:
mysql> SHOW TABLES;
応答は次のようになります:
+----------------+
| +----------------+
| ジョーク |
+----------------+
1 行セット
これはデータベース内のすべてのテーブルのリストです(先ほどジョークと名付けました)。このリストには、作成したばかりの Jokes というデータ テーブルが 1 つだけ含まれています。すべて問題ないようです。このジョーク テーブルを詳しく見てみましょう:
mysql> DESCRIBE Jokes;
+----------+---------+-- ----+-----+----------+- -
| デフォルト | ---+--------+------+-----+-----------+- -
| | PRI | ...
| 0000-00-00 | ------+------+-----+---------------+- -
3行セット
データ列のリストはここにあります。見てわかるように、このテーブルには 3 つの列があり、返された結果テーブルでは 3 つの行として表されます。細かい内容はわかりにくいですが、よく見てみると大まかな意味は理解できるはずです。これについてはあまり心配しないでください。私たちはまだ学び続けるつもりです、そして、このリストにいくつかのジョークを追加するつもりです。
テーブルの削除など、他にもいくつか知っておく必要があります。これはデータベースを削除するのと同じくらい簡単で、恐ろしいほど簡単です。コマンドはほぼ同じです:
mysql>DROP TABLE ;
データベースにデータを追加します
データベースとデータテーブルが作成されました。今度はデータベースにジョークを追加します。データベースにデータを追加するコマンドは INSERT と呼ばれます。このコマンドには 2 つの基本的な形式があります:
mysql> INSERT INTO columnName1 = value1,
- -> ...
- > ;
mysql> INSERT INTO <テーブル名;> -> (列名1, 列名2, ...);
したがって、それを追加する必要がありますジョークをデータ テーブルに追加するには、以下の 2 つのコマンドのいずれかを選択します:
mysql> INSERT INTO Jokes SET
-> 「なぜ鶏は道路を渡ったのですか? 反対側に行くには!」,
-> JokeDate = "2000-04-01";
mysql> ジョークに挿入
-> (JokeText, JokeDate) VALUES (
--> 「なぜ鶏は道路を渡ったのですか? 向こう側へ行きましょう!」 ",
-> ; "2000-04-01"
-> );
INSERT コマンドの 2 番目の形式では、指定する列の順序が、あなたが与えるデータ。
テーブルに追加する方法がわかったので、テーブルの内容を表示する方法を見てみましょう。
保存されたデータを表示する
データベース内のテーブルの保存されたデータを表示するコマンドは、間違いなく SQL 言語で最も複雑なコマンドです。データベースの主な利点はデータを柔軟に提供できることであるため、複雑であると言われています。そして、このコマンドによって機動性が実現されます。
次のコマンドは、テーブル Jokes に保存されているすべてのデータをリストします:
mysql> SELECT * FROM Jokes;
このコマンドは、「Jokes からすべてを選択する」という意味です。このコマンドを入力しようとすると、次のような内容が表示されます:
+----+-------------- - --------------
--------------------------+---------- --+
| ジョークテキスト
--------
------------------------+-------- --------+
| 1 | 鶏はなぜ反対側に行きましたか? ------------- -------------------
---------------- --------+---- --------+
1 row in set (0.05 sec)
JokeText 列が長すぎるため、これは少しわかりにくいように見えます。このため、MySQL に JokeText 列を省略するよう指示する必要がある場合があります。このコマンドは、
mysql> SELECT ID, JokeDate FROM Jokes; を指定します。結果は次のようになります:
+----+------------+
ID |
+----+-------- - ---+
| 2000-04-01 |
+----+-----------+
1 行 (0.00 秒)
しかし、ジョークの本文を少しだけ見せてもらえないでしょうか?表示したい列に加えて、「関数」を使用して表示する列を変更することもできます。データ列を表示するときに最大何文字まで表示するかを MySQL に指示できる LEFT と呼ばれる関数があります。たとえば、JokeText 列の最初の 20 文字だけを表示したい場合:
mysql> SELECT ID, LEFT(JokeText,20), JokeDate FROM Jokes;
+----+------ --- -------------+----------------+
ID (ジョークテキスト,20) | ---+--- ------------------+----------------+
|チキン | 2000-04-01 |
+ ----+----------------------+------------ ----+
1 行 (0.05 秒)
仕組みを理解していますか?もう 1 つの便利な関数は COUNT です。この関数を使用すると、返された結果の数を簡単に取得できます。たとえば、テーブルに保存したジョークの数を知りたい場合は、次のコマンドを使用できます:
mysql> SELECT COUNT(*) FROM Jokes;
+--------- -+
| COUNT(*) |
+----------+
| 1 |
+----------+
セット内の 1 行 (0.06 秒)
ご覧のとおり、私たちのテーブルにはジョークが1つだけあります。
これまでの例はすべて、テーブル内のすべてのレコードに対するものでした。 SELECT コマンドを補完するものとして、「WHERE 句」を使用して、返される結果を制限できます。次の例を見てください:
mysql> SELECT COUNT(*) FROM Jokes
-> WHERE JokeDate >= "2000-01-01";
このクエリ ステートメントは、すべての日付をカウントします。 2000 年 1 月 1 日の「以上」レコード。日付の場合、「以上」は「その日以降」を意味します。
テキストの特定の段落を含むレコードを検索できる特別な使用法があります。次のクエリを見てみましょう:
mysql> SELECT JokeText FROM Jokes
-> WHERE JokeText LIKE "%chicken%"; このクエリは、JokeText 列に単語「chicken%」が含まれるすべてのジョークのテキストを表示します。 LIKE キーワードは、指定されたカラムが指定された式と一致する必要があることを MySQL に伝えます。ここで使用する表現は「%chicken%」です。ここの % は、単語 Chicken が文字列の前後に出現できることを示します。
WHERE句で条件を組み合わせることで、より複雑なクエリを実行することもできます。たとえば、2000 年 4 月のノックノック ジョークを表示したい場合は、次のクエリを使用できます。 ; JokeDate >= "2000-04-01" AND
-> JokeDate < "2000-05-01";
テーブルにさらにジョークを追加して、SELECT ステートメントを再試行します。 SELECT ステートメントに精通していると、このチュートリアルに役立ちます。
SELECT ステートメントでも多くのことができますが、ここでは詳しく説明しません。他の高度な機能については、必要に応じて説明します。興味がありすぎてこれ以上待てない場合は、MySQL ユーザー マニュアルを読んでください。
保存されたデータを変更する
データベース テーブルにデータを入力したら、いくつかの変更を加えたい場合があります。たとえば、スペルミスやジョークに関連するその他のデータの修正など、これらすべての変更は UPDATE コマンドを使用して完了できます。このコマンドでは、INSERT コマンド (列値を設定するため) と SELECT コマンド (変更するオブジェクトを選択するため) の基本原則の一部を説明します。 UPDATE コマンドの基本的な形式は次のとおりです:
mysql> UPDATE SET
--> =, ...
--> WHERE ;
たとえば、上で入力したジョーク、次のコマンドを入力する必要があります:
mysql> UPDATE Jokes SET JokeDate="1990-04-01" WHERE ID=1;
ここでは ID 列を使用します。これを使用すると、変更したいジョークを簡単に指定できます。 SELECT コマンドと同様に、ここでも WHERE 句を使用できます。次のコマンドは、テキスト内に単語「chicken」が含まれるすべてのジョークの日付を変更します。
保存されたデータを削除する
SQL でコンテンツを削除するのは非常に簡単です。 このコマンドの形式は次のとおりです:
DELETE FROM WHERE ; を入力するだけです。次のコマンド:
mysql> DELETE FROM Jokes WHERE JokeText LIKE "%chicken%";
ここでの WHERE 句はオプションですが、現時点では使用しない場合は何をしているのかを知っておく必要があります。実際にはこのデータテーブルをクリアしています。次のコマンドは Jokes データ テーブルをクリアします:
mysql> DELETE FROM Jokes;
結論
実際、ここで見てきた基本的なコマンドに加えて、学ぶ価値のある MySQL データベース システムや SQL ステートメントが他にもたくさんあります。 . ものですが、ここで説明したコマンドは最も一般的に使用されるものの一部です。これまではデータ テーブルでのみ作業してきました。リレーショナル データベース エンジンの真の能力を理解するには、複数のテーブルを同時に使用して、テーブル間に存在する可能性のある複雑な関係を記述する方法を学ぶ必要もあります。
これらすべてとその他の内容については、チュートリアルの第 4 章で説明します。そこでは、データベース設計の原則について説明し、より複雑な例をいくつか見ていきます。ここで、MySQL を操作するにはコマンド ライン インターフェイスを上手に使用できるようにする必要があります。
第 3 章では、サーバーサイド スクリプト言語である PHP について詳しく説明し、それを使用して動的な Web ページを構築する方法を学びます。