MySQL入門

リレーションとは2

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
複数のテーブルに分けたデータは、SQLで仮想的に組み合わせて表示することができます。これを行うことで、データをみやすく分類し、検索などをすることができます。
講師:
08:52

字幕

ここではリレーションとはの 2つ目としまして リレーションを貼ったテーブル同紙を繋いで あたかも1つのテーブルのように見せる という方法について 紹介していきたいと思います このレッスンは前のレッスンからの続き となりますので 前のレッスンから続けてご覧ください では前のレッスンで作った こちらのテーブルを見ていきましょう item table には genre_id として このように数値が 割り振られたフィールドがあり 商品の一覧があります そして genre_master の方には その genre_id が なんのジャンルを意味しているのか というのを示す テーブルが別で存在しています 今この状態ですと item table を見ただけでは genre_id の1番が果物を意味していて genre_id の2番が野菜を意味している というのは記憶に頼るしかありません これでは見通しがあまり 良くありませんので これを SQL で解決していきたい と思います では SQL のタブをクリックして このような SQL を作っていきます select としまして genre_master. です genre_name とします そして item_table. * としましょう 更に from としまして genre_master , item_table とします 更に where 句が必要で genre_master.id= item_table.genre_id となります かなり長い SQL になりますが ここまで打ち込んで 「実行」ボタンをクリックしてみましょう するとこのように 各行が表示されました こちら id からこちら側というのは item table のすべてのデータになります ですが ここで一番左を見ると ここに genre_name というのが 書かれています この genre_name というのは item_table の genre_id を見て genre_master の genre_name と繋げて その名前を持ってきている ということになります これにより1番が果物で 2番が野菜であるというようなことを 意識することなく こちらの「くだもの」や「野菜」という 文字列を見ながら データを一覧することができるので 非常に便利になりました では SQL を確認していきましょう まず select としまして ここにはフィールド名の一覧を出します この時これまではワイルドカードを示す このような * というのが よく使われてきましたが 今回の場合 この後テーブルが 複数でてきますので どのテーブルのデータを出すのか ということを示すために その前に「.」で繋いで テーブル名が必要になります ここでは genre_master のテーブルから genre_name という フィールドだけを持ってきて item_table からはすべてのデータを 持ってくるということで このような記述になりました そして from には その対象となる テーブルを書くわけなんですが ここにも実は複数のテーブルを 書くことができます カンマで区切って記述します ここでは genre_master と item_table からデータを持ってきて下さい という意味になります そして複数のテーブルを from に記述する場合 必ず where 句が必要になります 何故ならその時に このテーブルとこのテーブルを どのフィールドを元に接続するのか ということを示さなければならないからです ここでは genre_master の id フィールドと item_table の genre_id を = つまり繋いでくださいという意味になります これにより genre_table である genre_master と item_table が それぞれこのように接続されて genre_id と genre_name の id が 接続されて その genre_name が引っ張り出され そして item_table と接続して 表示されるというわけです このようにリレーションを貼るというのは 複数のテーブルで効率よくデータを管理しつつ SQL を組み立てることによって それを1つのテーブルのように見せたり もしくは複数のテーブルのまま 管理したりなどと 自由自在に操作することができる というのが Relational Date Base の 最大の魅力です では1つ こちらの SQL について もう少し詳しくお話していきましょう SQL でリレーションを貼る時には このようにテーブル名を 何度も書かなければならず 非常に効率が悪くなってしまいます そこでこのように from の後に書いてある テーブル名の所に 1つ空白を空けて別名をつけることができます 例えば genre_master には g というアルファベット item_table には i というアルファベットを付けました もちろんこれは一文字でなくてもよくて genre でもいいし こちらも item_table の i が もし他のテーブルで 使われていたりするのであれば t などでも構いません 自分が見分けがつけば なんでも結構です そして この from の所で 別名 短縮名を付けた場合には その短縮名を select の中などで 使うことができます genre_master の代わりに g item_table の代わりに i と記述することができます where 句の中でも 同じように使うことができます genre_master の代わりに g item_table の代わりに i と記述しましょう これで「実行」ボタンをクリックすると これでも同じように動作することができます こうしてテーブルに別名を付けてあげることで SQL をすっきり短く見せることができますので こういったテクニックも覚えておくと 良いでしょう また SQL が長くなってくると 非常に見通しが悪くなります SQL というのは実は 改行しても正しく動作します そのため例えば from の所で 一度改行し where の所で一度改行する というような形にすると 見やすい SQL になるでしょう また このリレーションを貼っていても もちろん where 句でより細かく絞り込みをしたり order by 句を付けて 並び替えを行ったりもできます 例えばここで where に続けて and と書きまして price が 100 よりも上の商品だけを 引っ張り出すという検索条件に してみましょう 実行しますとこのように 100円よりも上の商品の一覧が表示され また そのジャンルが何であるかも わかるようになっています ここで この price については 今テーブル名が付いていません 正確に書けば この i. というのを 付けなければならないのですけど ここでは この price という フィールド名は item_table にしか 存在しないフィールドなので i. というのは省略することができます item_table にも genre_master にも 両方にあるフィールドを指定しようとすると 例えばここでは id=1 としてみましょう この id というフィールドは 両方のテーブルにあるので ここでは このような エラーメッセージがでてしまいます そのため このような場合は 「テーブル名 . 」というのを付けてあげて 実行すれば このように 正しく動作することができます リレーションを貼ったデータベースの SQL というのは 非常に複雑な文法になってしまいますが 慣れると非常に強力な使い方が出来ます 是非慣れて様々なテーブルを 組み合わせて検索をしてみて下さい

MySQL入門

このコースではPHPとMySQLというデータベースを組み合わせたWebシステムを構築する手法について解説します。「データベースとはなにか」を説明したのち、プライマリーキーやリレーションなどの重要な用語についても解説しながら実際にデータベースを動かしていきます。

3時間14分 (29 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2013年12月31日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。