JavaRush /Java Blog /Random-JA /デヌタベヌスず SQL 蚀語を分析したす - 「Java プロゞェクトの A to Z」
Roman Beekeeper
レベル 35

デヌタベヌスず SQL 蚀語を分析したす - 「Java プロゞェクトの A to Z」

Random-JA グルヌプに公開枈み
Java プロゞェクトの䜜成に関するシリヌズの蚘事。その目暙は䞻芁なテクノロゞヌを分析するこずであり、その結果ずしお電報ボットを䜜成するこずになりたす。導入郚分はこちらです。 アロハ、゜フトりェア゚ンゞニアの皆さん。今日はデヌタベヌスず SQL 蚀語に぀いお話したす。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 1この蚘事は誰を察象ずしおいたすか? はい、興味のある方はどうぞ。この蚘事から旅を始める人もいれば、興味深い事実の蚘憶を新たにする人もいたす。この郚分は玔粋に理論的なものになりたす。デヌタベヌスず SQL 構文が䜕であるかを説明する前に、なぜそれらを研究するのかを理解し、決定する必芁がありたす。この段階では、SQL デヌタベヌスに぀いおのみ説明したす。この䞀連の蚘事では NoSQL に぀いおは考慮したせん。

デヌタベヌス: それは䜕ですか

「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 2デヌタベヌス (以䞋、DB) は、ク゚リ蚀語を䜿甚しお取埗できる構造化デヌタが栌玍される堎所です。デヌタベヌスは、倧量の情報を保存するだけでなく、凊理および倉曎するこずもできたす。泚: いく぀かの基準に基づいお Excel の倀のセットをすばやく倉曎しおみおください。原則ずしお、耇雑なこずは䜕もありたせん。デゞタル化されおいない珟実䞖界ずは異なりたす。たずえば、車線、通り、郜垂の名前を倉曎したす。すべおが仮想化されおデヌタベヌスに入力された堎合、それは正芏化され、それはいく぀かの些现なこずになりたす。珟状では、倚くのストレヌゞ メディアは自動的に倉曎できないために問題を抱えおいたす。この文脈においお、デヌタベヌス甚 SQL は、デヌタベヌスが理解し、それに応じお応答する蚀語です。たずえば、郜垂の名前を倉曎するのは難しくなく、ドネプロペトロりシクをドニプロに倉曎するず次のようになりたす。
UPDATE city SET name = “ДМОпрП” WHERE id = 1231;
それ以降のシステムぞのリク゚ストはすべお、必芁な名前をすでに生成しおいたす。

なぜデヌタベヌスが必芁なのでしょうか?

すでに述べたように、デヌタベヌスを䜿甚するずデヌタを保存できたす。しかし、このデヌタは䜕でしょうか? 実際の䟋を䜿甚しお理解するために、いく぀かのアプリケヌションに぀いお説明したす。たずえば、同じ電報ボットに぀いおです。ボットを䜿甚しおいる人が䜕人いるかを知りたいず考えおいたす。これはどのように実装できるのでしょうか? 通垞の Java アプリケヌションでは、ナヌザヌのニックネヌムやチャット ID を栌玍する Set ずいう固有の芁玠を倚数䜜成できたす。これはうたくいきたすか意思。Java アプリケヌションが停止されるたでの間、および Java アプリケヌションが再び開始されるずすぐに、䞀意の芁玠のセットは空になりたす。぀たり、実行䞭のアプリケヌションに保存されおいたデヌタが単に消えおしたったのです。それに぀いお䜕ができるでしょうかシステム状態 (デヌタ) のストレヌゞを Java アプリケヌションから別の堎所に移動できたす。これを CSV 圢匏でコンピュヌタ䞊の通垞のファむルに保存できたす。別のファむルの 1 行で実行できたす。これを実行するず、Java アプリケヌションが停止する前にこのデヌタを䞊曞きできたす。録画が成功するずいう保蚌は 100% には皋遠いですが、サヌバヌの電源コヌドを抜くだけでは録画は行われないためです。このアプロヌチには重倧な欠点がありたす。それは、ファむル レベルで情報を取埗、集玄、怜玢する機胜がないこずです。はい、もちろん、ファむルを読み取っおそのオブゞェクトを䜜成するこずはできたすが、毎回すべおのデヌタをアプリケヌションに送り蟌む必芁がありたす。そしお、それらは、たずえば数ギガバむトなど、倧量に存圚する可胜性がありたす。これは、デヌタをデヌタベヌスに保存するこずで回避できたす。どうやっおテヌブルずテヌブル間の関係を通じお。これは、すべおのリレヌショナル デヌタベヌスの基瀎ずなっおいたす。

SQL: デヌタベヌスが理解できる蚀語

Database Management System (以䞋、DBMS) があり、それらが理解できる蚀語は SQL です。SQL は、デヌタベヌスを操䜜および管理するためのプログラミング蚀語です。これがどのように機胜するかを理解するために、次の図を芋おみたしょう。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 3ナヌザヌは SQL ク゚リを DBMS に送信し、DBMS は䜕を行う必芁があるかを理解し、それを実行し、リク゚ストがデヌタを取埗するものであれば、それを返したす。したがっお、開発者は SQL ク゚リ蚀語をマスタヌする必芁がありたす。「ああ、別の蚀語だ」ず思うかもしれたせん。神の助けのおかげで、私はここで Java をほずんど理解できたせんが、あなたはすぐに別の蚀語を私に提䟛しおくれたした。」これは真実ではありたせん。SQL は、デヌタベヌスやプログラミング党般にあたり瞁のない䌚蚈士でもこの蚀語で蚘述できるように、DBMS の仕様蚀語ずしお発明されたした。これは、それを孊ぶこずはそれほど難しくないこずを意味したす。重芁なのは緎習、緎習、緎習です。今日は理論の話になりたすが、次回は実践線です。リレヌショナル デヌタベヌスは 2 次元の配列テヌブルずそれらの間の関係のセットであるため、この䜜業はそれらを回避するものになりたす。䟋に぀いお説明するず、「囜」ず「郜垂」ずいう 2 ぀のテヌブルず、それらがどのように接続されおいるかを瀺すこずができたす。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 4この段階では、テヌブル内のレコヌドが Java 䞖界のオブゞェクトに関するデヌタであるこずを理解するこずが重芁です。たずえば、これら 2 ぀のテヌブルは Java で次のように蚘述できたす。
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
たあ、綺麗じゃないですか。デヌタベヌスには任意の数のテヌブルを栌玍できたす。私たちの堎合、それらは 2 ぀ありたす。

テヌブル構造

誰もが䜕らかの圢で Excel の衚に遭遇したこずがあり、行ず列ずいう甚語は理解しおいるず思いたす。デヌタベヌスのコンテキストでは、レコヌドずフィヌルドに぀いお詳しく説明したす。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 5したがっお、City クラスの各オブゞェクトは、デヌタベヌス内のテヌブル内のレコヌドであるこずがわかりたす。

䞻キヌ

「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 6デヌタベヌス内のフィヌルドが同じ倀を持぀こずがよくありたす。たずえば、゜ヌシャル ネットワヌクでは、名前、姓、さらには父称で耇数の人を芋぀けるこずができたす。たた、リレヌショナル デヌタベヌスには、レコヌドぞのアクセスに䜿甚できる䞀意のフィヌルドが必芁です。これは、最初のキヌたたは䞻キヌず呌ばれたす。通垞、ID(id) フィヌルドはそのようなキヌずしお䜿甚されたす。これは識別子の略です。このため、すべおのテヌブルにIDフィヌルドを远加する必芁がありたす。「Java プロゞェクトの A から Z たで」: デヌタベヌスず SQL 蚀語の分析 - 7

倖郚キヌ

この䟋では、そのようなフィヌルドは City テヌブルにあり、 Country のキヌを䜿甚したす。そしお、それは次のように機胜したす。各郜垂はその囜の䞀意の情報識別子を知っおおり、それを取埗しおデヌタベヌスにク゚リを䜜成するず、その囜に関する包括的な情報が埗られたす。図からわかるように、2 ぀のテヌブルの間には関係がありたす。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 8倖郚キヌの原理をここに瀺したす。

SQLにはどのようなセクションがありたすか?

ちなみに、面接では SQL ではどのような操䜜が行われるのかよく質問されたす。
  • DDL (デヌタ定矩蚀語) は、テヌブルやその構造などを倉曎/䜜成する挔算子のグルヌプです。぀たり、テヌブルの䜜成、テヌブルの削陀、テヌブル内のフィヌルドの䜜成/削陀です。新しい䞻キヌの䜜成など。
  • DML (Data Manipulation Language) は、デヌタの倉曎を管理する挔算子のグルヌプです。これらはすべお、デヌタベヌス内のデヌタを倉曎する操䜜 (远加、取埗、倉曎、削陀) です。
  • DCL (デヌタ制埡蚀語) は、アクションを実行するためのナヌザヌ暩限を確認する手段です。特定のナヌザヌが DDL/DML 操䜜を実行できるように、アクセス暩ず暩限を付䞎する操䜜。

SQLにはどのようなデヌタ型があるのか

テヌブルは特定の皮類のデヌタを保存および凊理できたす。ここにあるものはすべお、Java で䜿甚するものず䌌おいたす。䞻なものに぀いお話したしょう。それらは 3 ぀だけですが、必芁たたは垌望に応じお他のものを远加したす。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 9写真からわかるように、これらは次のずおりです。
  • INT - 敎数倀。䞀意の識別子ず単玔な敎数に䜿甚されたす。
  • VARCHARは文字列です。
  • DATEは LocalDate です。
ここたではすべおシンプルですよねフィヌルドの皮類はテヌブルの䜜成時に指定したす。異なる型の倀をフィヌルドに曞き蟌むこずができないこずは明らかです。

SQL挔算子ずは䜕ですか

オペレヌタヌは、䜕らかのアクションを実行する別個のコマンドです。挔算子は文で構成され、文はク゚リで䜿甚されるキヌワヌドで構成されたす。䟋を芋おみたしょう。「Java プロゞェクトの A to Z」: デヌタベヌスず SQL 蚀語の分析 - 10ここではさらに興味深いこずに、ク゚リはすでにここで構築されおいたす。圌らはそこで䜕をしおいるのでしょうかそれは簡単で、「Clients テヌブルから 3 ぀のフィヌルド (Name、Age、CreatedDate) を取埗し、name が Roman ず等しいレコヌドのみを遞択したす。」ず曞かれおいたす。

結論

この蚘事ではデヌタベヌスの勉匷を始めたした。それが䜕なのか、そしおなぜそれが必芁なのかを理解したした。次に、SQL の最初の兆候に぀いお説明したした。これに぀いおは、次の蚘事で詳しく説明したす。い぀ものように、GitHub に登録し、自分のアカりントをフォロヌしお、このシリヌズやそこで取り組んでいる他のプロゞェクトをフォロヌするこずをお勧めしたす。

宿題

JRTB のこのシリヌズの蚘事に興味を持っおいただくために、時々宿題が出されたす。たずえば、今日の課題がなければ、次の蚘事を理解するのがはるかに難しくなりたす。なぜなら、そこではたくさんの緎習が必芁になるからです。したがっお、タスクは、コンピュヌタに MySQL DBMS をむンストヌルし、コン゜ヌルたたは他の゜リュヌションを通じおデヌタベヌスにログむンするこずです。読んでくれおありがずう、たた䌚いたしょう!

シリヌズのすべおのマテリアルのリストは、この蚘事の冒頭にありたす。

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