SSブログ

データベースの外部結合について (MySQL) [開発]

外部結合についてついつい忘れてしまいがちなので、備忘録としてまとめます。
動作確認をするデータベースは MySQL です。

左側外部結合
select [テーブル名].列名, ... from テーブル1 left join テーブル2 on 結合条件;

join句より左側にあるテーブル1を表示し、右側にあるテーブル2の情報を結合します

右側外部結合
select [テーブル名].列名, ... from テーブル1 right join テーブル2 on 結合条件;

join句より右側にあるテーブル2を表示し、左側にあるテーブル1の情報を結合します

サンプル
次のような2つのテーブルを用意します。

tbl_hello;
tbl_hello_20141005.png

tbl_language;
tbl_language_20141005.png

まずは、左側外部結合を試します
mysql> select tbl_hello.id, message, language from tbl_hello
            left join tbl_language on tbl_hello.lang_id = tbl_language.id;

left_join_20141005.png

次に、右側外部結合を試します
mysql> select tbl_hello.id, message, language from tbl_hello
            right join tbl_language on tbl_hello.lang_id = tbl_language.id;

right_join_20141005.png

on句の代わりにusing句というのもあります。
これを使うためには結合条件の列名が同じである必要があります。
私自身あまり使う経験がありませんでした。
nice!(0)  コメント(0) 
共通テーマ:blog

MyBatis のサンプルを作ってみる (delete) [開発]

2014/10/13:
修正しました。


delete 文のサンプルを作ります。

MyBatis と Spring Framework の環境構築方法は下記を参照してください。
10/1 ブログ (MyBatis のサンプルを作ってみる)

(1) データベースの準備
MySQLをインストールし、テスト用に以下のようなテーブルを準備しました。
tbl_hello_20141011.png

(2) Mapper を作成します。
package sample;

import org.apache.ibatis.annotations.Delete;

  @Delete("delete from tbl_hello where id = #{id}")
  int delete(@Param("id") int id);
}

(3) 動作確認用コードを作成します。
public class SampleMain {
  public static void main(String[] args) {
    String resource =
        "src/main/webapp/WEB-INF/applicationContext.xml";
    ApplicationContext ac =
        new FileSystemXmlApplicationContext(resource);
    HelloMapper helloMapper = (HelloMapper) ac.getBean("helloMapper");
    int retValue = helloMapper.delete(1);
    System.out.println("retValue:" + retValue);
  }
}

実行すると「retValue:1」と表示されます。

(4) 結果確認
1行目の「おはよう」が削除されました。
tbl_hello_20141011_4.png


達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリュー ハント
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本

nice!(0)  コメント(0) 
共通テーマ:blog

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。