JavaRush /Java Blog /Random-JA /データベースとSQL言語を分析します。(パート 4 - 宿題の確認) - 「Java プロジェクトの A から Z...
Roman Beekeeper
レベル 35

データベースとSQL言語を分析します。(パート 4 - 宿題の確認) - 「Java プロジェクトの A から Z まで」

Random-JA グループに公開済み
Java プロジェクトの作成に関するシリーズの記事 (他の資料へのリンクは最後にあります)。その目標は主要なテクノロジーを分析することであり、その結果として電報ボットを作成することになります。 過去の記事とデータベースに関する宿題の分析: 123。忍耐と忍耐力を持った皆さん、この第 4 回の記事を私と一緒に読んでくださった皆さん、よく頑張りました。よく言われるように、歩く者は道を極めることができます。今週は、データベースに関する最後の記事が公開されます。この記事では、リレーションシップと結合のタイプについて説明します。でも、新しい情報に取り組む前に、宿題を確認しましょう...本当に先生になったような気分でした。怒らないでください。私は教育的な教育を受けていません、それは確かです。先週はリモコンの詳細なチェックが教材の大部分を占めたため、宿題の分析と新しい教材のレビューを 2 つの部分に分割することにしました。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 1

実は宿題分析

PDして話してくれる人がいるのは確かに嬉しいです。これはカッコいい!知識を定着させずにただ読むだけでは、どこへも到達できないと私は確信しています。したがって、実行した、または実行しようとしたすべての人を尊重します。タスクの条件を思い出させてください。
  1. HAVING演算子を理解して、この例のテーブルに対するサンプル クエリを作成します。より明確にするためにいくつかのフィールドまたは複数の値を追加する必要がある場合は、それらを追加します。誰かが望むなら、コメントにあなたの解決策の例を書いてください - 時間があれば私もそれを確認することができます。
  2. MySQL Workbench をインストールして、UI を通じてデータベースを操作します。コンソールから作業する練習はすでに十分に行っていると思います。データベースに接続します。他のものを使用してデータベースを操作する場合は、このタスクをスキップしてください。ここでは今後も MySQL Workbench のみを使用します。
  3. データを使用して受信リクエストを作成します。
    1. 最小/最も人口の多い国。
    2. その国の平均住民数。
    3. 名前が「a」で終わる国の平均住民数。
    4. 人口が400万人を超える国の数。
    5. 住民数の多い順に国を並べ替えます。
    6. 国を名前で自然な順序で並べ替えます。

持つことについて話しましょう

Have 演算子を理解すると、SQL の問題が発生する複数の面接に合格するのに役立ちます。したがって、それを理解することが非常に重要です。たまたまですが、集計関数 (SUM、MIN、MAX、AVG) に条件を使用することはできません。さらに、HAVING はグループ化されたフィールドに使用されます。それはどういう意味ですか?たとえば、都市の平均住民数が 50,000 人を超える国を取得したい場合、HAVING を使用せずには済みません。私が理解しているように、これは、WHERE ステートメントが実行された後に集計が行われ、後で計算される集計値をそれに追加することができないために行われるためです。これまでのところ、私の意見が理解にあまり役立たなかったとしても、これを事実として受け入れて、それに従うことができます。プログラミングでは、ある瞬間に何かが不明瞭である場合、それは単に脳がそれをまだ消化していないことを意味している可能性がよくあります。この考えを持って眠れば、翌日にはすべてが明確になるでしょう。

MySQL ワークベンチのインストール

ここからはクエリに Workbench を使用していきます。インストールしてデータベースへの接続を作成するために必要なものを示します。これは Oracle の製品であるため、Oracle の Web サイトにアクセスして、必要なバージョンとオペレーティング システムを選択するだけです。これを行うには、次のリンクに従ってください。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 2ここでは、必要なオペレーティング システムを正確に選択できます。[ダウンロード]をクリックしますが、ダウンロードの代わりに次のウィンドウが表示されます。迷わないで、 [いいえ、ダウンロードを開始してください]「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 3というボタンを探してください。そうすれば、ダウンロードが開始されます。なぜ彼らはそんなことをするのでしょうか?おそらく、より多くの人が登録するために、これは私たちにとって重要ではありません。ダウンロードが成功したら、インストール ファイルを実行します。MacOS では次のようになります。アイコンをドラッグするだけでインストールが完了します。MySQL 自体をインストールするほど難しくはありませんね? あるいは、単にそれに慣れて経験が増えただけです ;) このタスクの 2 番目の部分は、データベースへの接続を確立することです。そのためには何が必要なのでしょうか?[MySQL 接続] の横にあるプラス記号をクリックします。表示されるウィンドウで、必要なデータを入力します。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 4「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 5
  • 接続名- 接続の名前。後から識別する際に問題がないよう、できるだけわかりやすい名前を記入してください。この接続にJRTB_DBという名前を付けます。
  • ホスト名- すでにローカル127.0.0.1 (別名 localhost)として設定されています。この場合、データベースはコンピューターにインストールされているため、何も変更する必要はありませんが、データベースが別の場所にある場合は、それに応じてホスト (データベースが実行されているマシンの IP) を変更する必要があります。
  • ユーザー名- 必要に応じてユーザーを指定することもできます。このキーに何も追加していない場合は、変更しないままにしておきます。
  • パスワード- 「キーチェーンに保存」をクリックし、自分で設定したパスワードを正確に設定します。すべてを単純なrootのままにしました。
接続が機能するかどうかを確認するには、「接続のテスト」をクリックします。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 6すべてが正しく行われていれば、結果はすぐに得られます。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 7これで、データベースに接続が保存されました。接続を作成して入力する必要はありません。毎回名前とパスワードを入力します。そして、この幸せは次のようになります。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 8新しく作成された接続に入り、リクエスト ウィンドウが表示されます。すべてが正しいことを確認するために、データベースのリストを確認し、データベースにアクセスして都市に関するすべてのデータを取得しましょう。「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 9これで、必要なものの完全なデータが得られます。最初のセクションは、入力するスクリプトを担当します。次に、Result Gridに、スクリプトの最後の操作の結果が表示されます。また、アクション出力には、操作のリストとその結果が表示されます。非常に便利なことをお伝えしたいのですが、これを使用すると、特定のスクリプトの実行速度を監視できます。どうしてそれが重要ですか?アプリケーションでのタスクの実行速度に関する最も一般的な問題の 1 つは、データベースでのクエリの実行速度です。ここでは、手動ですばやく便利にチェックできます。

必要な要望を書きます

完了すべきリクエストは 7 つだけです。さあ、いきましょう!

  1. 最も人口の多い国を取得します。ここでは、巧妙にいくつかのルートを取ることができます。

  • 国の表によると

次に、クエリを母集団でソートし、レコードを 1 つだけ取得するだけです。これを行うには、スクリプトの最後にLIMIT演算子を追加し、必要な数量を指定する 必要があります。 $ SELECT * FROM country ORDER BY Population DESC LIMIT 1;「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 10

  • 市の表によると

リクエストはより複雑になりますが、より興味深いものになるため、ここではすべてがより興味深いものになります。結合についてはまだ何もわかっていないため、次のように国 ID を取得することしかできません。 $ SELECT country_id, SUM(population) FROM city GROUP BY country_id ORDER BY SUM(population) DESC LIMIT 1; 「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 11ここでは素晴らしいことをしました。各国の既知のすべての都市の人口の合計を収集し、この合計で並べ替えて最初の要素を取得しました。まあ、すごいですか?嬉しいです :D これを終えると、あなたはすぐにクエリの第一人者になった気分になります... (もちろん、長くは続きません))

  1. 最小の国を取得します。ここでは巧妙にいくつかのルートを選択できます

この場合、すべてがまったく同じになります。唯一の違いは、並べ替えが逆になることです。それだけです。したがって、私は単純にリクエストを書きます。

  • 市の表によると

$ SELECT 国 ID, SUM(人口) FROM 都市 GROUP BY 国 ID ORDER BY SUM(人口) LIMIT 1;

  • 国の表によると

$ SELECT * 国から ORDER BY 人口 LIMIT 1; そしてその結果を自分の目で見てください!

  1. その国の平均住民数

ここでもまた、技術仕様は、あたかもマネージャーが書いたかのように、どういうわけか正確ではありません...なぜこれを決めたのでしょうか? どのテーブルで作業するかが明確ではないためです。しかし、これは正常です。すべてがすぐに明確で理解できるタスクなどありません。したがって、タスクを注意深く読み、質問がある場合はすぐに質問する必要があります。そうです、一言です。データベースにあるデータを考慮して、都市のデータを使用して検索します。これを行うには、次のクエリを作成します。 $ SELECT country_id, AVG(population) FROM city GROUP BY country_id; 「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 12ここでは簡単です。AVG 関数を使用し、都市のレコードを国ごとにグループ化します。

  1. 名前が「a」で終わる国の平均住民数

リクエストに応じて、ここで少し変更します。グループ化を行う前に、名前によるフィルタリングを追加する必要があります。私もすべての学生と同様に、この記事を公開する前に宿題をしていますが、この問題は結合なしでは解決できないことを理解しています。なぜ?国 ID に加えて、彼の名前も取得する必要があるためです。そして、これは 2 つのテーブルを 1 つのレコードに結合しない限り実行できません。したがって、このタスクはもちろん実行しますが、これは私の枠です...))) リクエストで LIKE を使用してタスクを考え出したかったのです...) $ SELECT ci.country_id, AVG(ci.population ) FROM city ci INNER JOIN country co ON ci.country_id = co.id WHERE co.name LIKE "%a" GROUP BY country_id; 「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 13ここで何が起こったのでしょうか?まず、外部キー country_id を使用して都市テーブルと国のテーブルのレコードを結合し、「a」で終わるように国名でフィルターし、その後、country_id によってグループ化しました。

  1. 人口が400万を超える国の数

ここでは、COUNT 関数を使用して人口に対するフィルタリングを追加するだけです。 $ SELECT COUNT(*) from country WHERE Population > 4000000; その結果、そのような国が 3 か国あることがわかりましたが、それでよろしいでしょうか。はい、モルドバだけがこのマイルストーンを通過していません。

  1. 人口の多い順に国を並べ替える

これを行うには、すでに知っている ORDER BY 演算子を使用する必要があります。ただし、デフォルトでは並べ替えは自然な順序で行われることに注意してください。数値の場合は昇順でソートされることを意味し、文字列の場合は最初の文字からソートされることを意味します。降順ソートが必要な場合は、自然ソートの逆が必要です。 $ SELECT * FROM country ORDER BY Population DESC;「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 14

  1. 国を名前で自然な順序で並べ替えます

ここで、自然の秩序とは何かについての知識が役に立ちます。これはデフォルトなので、簡単です。 $ SELECT * FROM country ORDER BY name;「Java プロジェクトの A to Z」: データベースと SQL 言語を分析します。 パート 4 - 宿題の確認 - 15

アウトプットの代わりに

たまたま、宿題の解決策のサイズが非常に大きくなるため、例外を設けます。この記事はチェックを付けて公開し、金曜日には接続と結合を含む新しい資料を公開します。読んでくれた皆さん、ありがとう。金曜日まで!

シリーズのすべてのマテリアルのリストは、この記事の冒頭にあります。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION