Java プロジェクトの作成に関するシリーズの記事 (他の資料へのリンクは最後にあります)。その目標は主要なテクノロジーを分析することであり、その結果として電報ボットを作成することになります。 過去の記事とデータベースに関する宿題の分析: 1、2、3。忍耐と忍耐力を持った皆さん、この第 4 回の記事を私と一緒に読んでくださった皆さん、よく頑張りました。よく言われるように、歩く者は道を極めることができます。今週は、データベースに関する最後の記事が公開されます。この記事では、リレーションシップと結合のタイプについて説明します。でも、新しい情報に取り組む前に、宿題を確認しましょう...本当に先生になったような気分でした。怒らないでください。私は教育的な教育を受けていません、それは確かです。先週はリモコンの詳細なチェックが教材の大部分を占めたため、宿題の分析と新しい教材のレビューを 2 つの部分に分割することにしました。
次に、クエリを母集団でソートし、レコードを 1 つだけ取得するだけです。これを行うには、スクリプトの最後にLIMIT演算子を追加し、必要な数量を指定する 必要があります。 $ SELECT * FROM country ORDER BY Population DESC LIMIT 1;
リクエストはより複雑になりますが、より興味深いものになるため、ここではすべてがより興味深いものになります。結合についてはまだ何もわかっていないため、次のように国 ID を取得することしかできません。 $ SELECT country_id, SUM(population) FROM city GROUP BY country_id ORDER BY SUM(population) DESC LIMIT 1; ここでは素晴らしいことをしました。各国の既知のすべての都市の人口の合計を収集し、この合計で並べ替えて最初の要素を取得しました。まあ、すごいですか?嬉しいです :D これを終えると、あなたはすぐにクエリの第一人者になった気分になります... (もちろん、長くは続きません))
この場合、すべてがまったく同じになります。唯一の違いは、並べ替えが逆になることです。それだけです。したがって、私は単純にリクエストを書きます。
$ SELECT 国 ID, SUM(人口) FROM 都市 GROUP BY 国 ID ORDER BY SUM(人口) LIMIT 1;
$ SELECT * 国から ORDER BY 人口 LIMIT 1; そしてその結果を自分の目で見てください!
ここでもまた、技術仕様は、あたかもマネージャーが書いたかのように、どういうわけか正確ではありません...なぜこれを決めたのでしょうか? どのテーブルで作業するかが明確ではないためです。しかし、これは正常です。すべてがすぐに明確で理解できるタスクなどありません。したがって、タスクを注意深く読み、質問がある場合はすぐに質問する必要があります。そうです、一言です。データベースにあるデータを考慮して、都市のデータを使用して検索します。これを行うには、次のクエリを作成します。 $ SELECT country_id, AVG(population) FROM city GROUP BY country_id; ここでは簡単です。AVG 関数を使用し、都市のレコードを国ごとにグループ化します。
リクエストに応じて、ここで少し変更します。グループ化を行う前に、名前によるフィルタリングを追加する必要があります。私もすべての学生と同様に、この記事を公開する前に宿題をしていますが、この問題は結合なしでは解決できないことを理解しています。なぜ?国 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; ここで何が起こったのでしょうか?まず、外部キー country_id を使用して都市テーブルと国のテーブルのレコードを結合し、「a」で終わるように国名でフィルターし、その後、country_id によってグループ化しました。
ここでは、COUNT 関数を使用して人口に対するフィルタリングを追加するだけです。 $ SELECT COUNT(*) from country WHERE Population > 4000000; その結果、そのような国が 3 か国あることがわかりましたが、それでよろしいでしょうか。はい、モルドバだけがこのマイルストーンを通過していません。
これを行うには、すでに知っている ORDER BY 演算子を使用する必要があります。ただし、デフォルトでは並べ替えは自然な順序で行われることに注意してください。数値の場合は昇順でソートされることを意味し、文字列の場合は最初の文字からソートされることを意味します。降順ソートが必要な場合は、自然ソートの逆が必要です。 $ SELECT * FROM country ORDER BY Population DESC;
ここで、自然の秩序とは何かについての知識が役に立ちます。これはデフォルトなので、簡単です。 $ SELECT * FROM country ORDER BY name;
実は宿題分析
PDして話してくれる人がいるのは確かに嬉しいです。これはカッコいい!知識を定着させずにただ読むだけでは、どこへも到達できないと私は確信しています。したがって、実行した、または実行しようとしたすべての人を尊重します。タスクの条件を思い出させてください。- HAVING演算子を理解して、この例のテーブルに対するサンプル クエリを作成します。より明確にするためにいくつかのフィールドまたは複数の値を追加する必要がある場合は、それらを追加します。誰かが望むなら、コメントにあなたの解決策の例を書いてください - 時間があれば私もそれを確認することができます。
- MySQL Workbench をインストールして、UI を通じてデータベースを操作します。コンソールから作業する練習はすでに十分に行っていると思います。データベースに接続します。他のものを使用してデータベースを操作する場合は、このタスクをスキップしてください。ここでは今後も MySQL Workbench のみを使用します。
- データを使用して受信リクエストを作成します。
- 最小/最も人口の多い国。
- その国の平均住民数。
- 名前が「a」で終わる国の平均住民数。
- 人口が400万人を超える国の数。
- 住民数の多い順に国を並べ替えます。
- 国を名前で自然な順序で並べ替えます。
持つことについて話しましょう
Have 演算子を理解すると、SQL の問題が発生する複数の面接に合格するのに役立ちます。したがって、それを理解することが非常に重要です。たまたまですが、集計関数 (SUM、MIN、MAX、AVG) に条件を使用することはできません。さらに、HAVING はグループ化されたフィールドに使用されます。それはどういう意味ですか?たとえば、都市の平均住民数が 50,000 人を超える国を取得したい場合、HAVING を使用せずには済みません。私が理解しているように、これは、WHERE ステートメントが実行された後に集計が行われ、後で計算される集計値をそれに追加することができないために行われるためです。これまでのところ、私の意見が理解にあまり役立たなかったとしても、これを事実として受け入れて、それに従うことができます。プログラミングでは、ある瞬間に何かが不明瞭である場合、それは単に脳がそれをまだ消化していないことを意味している可能性がよくあります。この考えを持って眠れば、翌日にはすべてが明確になるでしょう。MySQL ワークベンチのインストール
ここからはクエリに Workbench を使用していきます。インストールしてデータベースへの接続を作成するために必要なものを示します。これは Oracle の製品であるため、Oracle の Web サイトにアクセスして、必要なバージョンとオペレーティング システムを選択するだけです。これを行うには、次のリンクに従ってください。ここでは、必要なオペレーティング システムを正確に選択できます。[ダウンロード]をクリックしますが、ダウンロードの代わりに次のウィンドウが表示されます。迷わないで、 [いいえ、ダウンロードを開始してください]というボタンを探してください。そうすれば、ダウンロードが開始されます。なぜ彼らはそんなことをするのでしょうか?おそらく、より多くの人が登録するために、これは私たちにとって重要ではありません。ダウンロードが成功したら、インストール ファイルを実行します。MacOS では次のようになります。アイコンをドラッグするだけでインストールが完了します。MySQL 自体をインストールするほど難しくはありませんね? あるいは、単にそれに慣れて経験が増えただけです ;) このタスクの 2 番目の部分は、データベースへの接続を確立することです。そのためには何が必要なのでしょうか?[MySQL 接続] の横にあるプラス記号をクリックします。表示されるウィンドウで、必要なデータを入力します。- 接続名- 接続の名前。後から識別する際に問題がないよう、できるだけわかりやすい名前を記入してください。この接続にJRTB_DBという名前を付けます。
- ホスト名- すでにローカル127.0.0.1 (別名 localhost)として設定されています。この場合、データベースはコンピューターにインストールされているため、何も変更する必要はありませんが、データベースが別の場所にある場合は、それに応じてホスト (データベースが実行されているマシンの IP) を変更する必要があります。
- ユーザー名- 必要に応じてユーザーを指定することもできます。このキーに何も追加していない場合は、変更しないままにしておきます。
- パスワード- 「キーチェーンに保存」をクリックし、自分で設定したパスワードを正確に設定します。すべてを単純なrootのままにしました。
GO TO FULL VERSION