リレーショナルデータベースへのSQL

データベースのことを考えて、選手たちは、ゲームに関連して1つの別の(たとえば、人を判断するのは、友人たちは、各プレイヤーと敵の各選手) 。

  

最初みましょう表を作成するデータを保存するために、それぞれの選手です。 注意主キーを追加することができるという事実に頼る必要があるすべてのレコードのフィールドに固有のリファレンスとして使用されることができる。 行分のデータをすべてメモしても、主キーを一つに固有である必要があります。 ここでは、我々のデータベースを作成するのに必要なステートメント( gamedataと呼ばれる)と我々のテーブルplayerdata 。

  MySQLの>データベースを作成するgamedata ; MySQLの>を使用gamedata ; MySQLの>表を作成playerdata ( ->ユーザー名N OTN ULLに固有の文字( 2 55) 、 - >パスワードの文字(2 5 5)、 - >年齢i nt 、-> d at e createdタイムスタンプは、->主キー(ユーザー名) ) ; 

ここで注意してどのように我々の固有の列にユーザー名を設定していないともNULLになる。 簡単に言えば、このことを意味する値を含める必要がありますし、その値はいけませんし、他のユーザー名と同じで、他のレコードには、表のです。 注意しても我々は、テーブルの主キーを設定して、ユーザー名フィールドには、我々としては、主にこのフィールドを検索して、これが表示されますが、瞬間です。

この情報に加えて、我々にもいくつかの方法を格納する必要があります敵味方です。 この処理が行われるのは、 リンクテーブルを意味します。 リンクテーブルには本当にごくふつうのデータベースのテーブルは、しかし、その主要な目的は、データに関連するいくつかのスペースを節約する方法または別の方法では、データベースへのアクセスを最適化するとの情報です。

2つのリンクテーブルを作成してみよう、と友人のための1つのための1つに関連してお互いに係る敵です。 以下は、このステートメントを達成することが義務付けられています。

注意

リンクテーブルが使われている場合は、最適化の方法は、 int値を格納するidのフィールドがあるとしてplayerdata AUTO_INCREMENTのは、テーブルの主キーとして。 ことではないが読めるように選択して実行したときに、それは、お客様のアプリケーション内から速いです。 プレイヤーの名前を更新するときに、それはない、データベースの整合性を破る。 また、リンク構造をテーブルに使われることが多いときだけの量がnの関係から他のレコードを1つの行です。 ある場合は、常に1つだけの関係( 1つまたは敵の友人)は、直接リンクで使用しなければならない。

  MySQLの>表を作成relatefriends ( ->プレーヤーの文字( 2 55) 、 - >友人文字(2 5 5)) ; 

また:

  MySQLの>表を作成relateenemies ( ->プレーヤーの文字( 2 55) 、 - >敵の文字(2 5 5)) ; 

もし我々が今、データベースのテーブルを示すのは、次のコマンドを使用します:

  MySQLの> "表示テーブル; 

...我々は我々のデータベースを参照してください今すぐに3つのテーブルが含まれplayerdata -我々のテーブルと2つのリンクテーブルです。

さあ今すぐにデータを追加するには、プレイヤーのサンプルデータテーブルには、実験を行うことができるので、リンクテーブルとの論理を理解する効果的な方法を使用しています。 ここでは、我々のサンプルデータを追加する必要声明をplayerdata表:

  MySQLの> playerdata値を挿入する-> ( 'アンドリュー' 、 'クワーティ' 、 2 0、 N ULLを) 、 - >( 'ヘンリー'、 ' l e tmein'、 3 4 、N U LLを) 、 - > ('サンドラ'、 ' d r a 33'、1 9は、 NULLを) 、 -> ( 'ジョン' 、 ' j 12d' 、 2 3、 N ULLを) 、 - >( 'ジェニー'、 ' j e n123'、 3 4 、N U LLを) ; 

もし我々のすべての情報を選択してから、次のコマンドを使用して今すぐplayerdata表:

  MySQLの>を選択してからplayerdata * 

さて、私たちはいくつかのサンプルデータを作成してみてみよう、選手たちの間の関係は、いくつかのデータベースです。 表の最初のリンクを追加するにはrelatefriendsと友達になるという事実には、サンドラヘンリー。 ここでは、この声明には、リンクを追加する必要が表:

  MySQLの> relatefriends値を挿入する-> ( 'ヘンリー' 、 'サンドラ' ) ; 

さあ今すぐこちらのサンプルデータをいくつか追加するとrelatefriendsの両方relateenemiesリンクテーブルを操作することができると、どのようにデータを参照してください。 この2つのステートメントを追加するのに必要なサンプルデータは以下のとおり:

注意

友人と敵を防ぐためにそれと同時に、 1つのテーブルに関係使われる可能性がある。 フィールドを追加するだけで"敵"の旗、および設定の場合は、それを意味している敵;さもなければ彼らは友達です。

  MySQLの> relatefriends値を挿入する-> ( 'アンドリュー' 、 'ヘンリー' ) 、 - >( 'アンドリュー'、 'ジョン') 、 - > ('アンドリュー'、'ジェニー')、 - > ( 'サンドラ'、'ジェニー' ) ; 

また:

  MySQLの> relateenemies値を挿入する-> ( 'アンドリュー' 、 'サンドラ' ) 、 - >( 'ヘンリー'、 'ジェニー') 、 - > ('ヘンリー'、'ジョン'); 

さて、私たちは私たちのすべてのサンプルデータは、しばらく様子を見て確認することができる場合には、友人たちとアンドリューを使用して、以下の声明:

  MySQLの>を選択してから友達はどこrelatefriends選手= 'アンドリュー' ; 

我々はこのステートメントを実行するときには、コンソールのリストを表示するすべての選手たちと友達になることは、アンドリュー。

繰り返しますが、我々にできることと全く同じテーブルのリンクをクリックしてrelateenemies 。 たとえば、我々のすべての可能性を調べるの敵ヘンリーは、次のステートメント:

  MySQLの>を選択して敵はどこからrelateenemies選手= 'ヘンリー' 

このデータは、我々を指名手配している場合の詳細についてはヘンリーの敵には、ユーザー名のジェニーが、我々は、以下のステートメントを使用する:

  MySQLの> playerdataどこからユーザー名を選択して* = 'ジェニー' ; 
これは、記事に追加されたジョージイオネスク
免責事項:弊社のウェブサイト上ではない情報の責任を負うこの記事に含まれる。 この記事ではありません意見を反映して、ご意見、思想や信条のスタッフは、記事のディレクトリです。

翻訳注意:この記事の"リレーショナルデータベースへのSQL "は、翻訳する自動翻訳サービスを使用しています。 我々の翻訳を深くお詫び申し上げます。いかなるエラーが発生しています。 理解をいただきありがとうございます。

Online: 814 users browsing the articles directory