MySQLとTokyoCabinet/TokyoTyrantの命令を比較してみたよ

SPONSORED LINK

Pocket

tokyo_top

自分メモ的にエントリー。MySQLでのこの命令はTokyoCabinet/TokyoTyrantではこう書く、みたいな対比表ですな。

なお、ここで使うTokyoTyrantはphp-tyrantです。

» PHP: tokyo_tyrant – Manual

では早速。初期設定とかだいぶはしょってますが、雰囲気は伝わるかと。

なお、前提として、TokyoTyrantでは「$userTable = new TokyoTyrant('localhost',1978);」していると思ってください。

  • 全部select
  • MySQLの場合。

    select * from users;
    

    TokyoTyrantの場合。

    $query = $userTable->getQuery();
    $rs = $query->search();
    
  • ID指定してselect
  • MySQLの場合。

    select * from users where id=5;
    

    TokyoTyrantの場合。

    $user = $userTable->get(5);
    
  • where的な
  • MySQLの場合。

    select * from users where first_name='Gen';
    

    TokyoTyrantの場合。

    $query = $userTable->getQuery();
    $query->addCond('fist_name', TokyoTyrant::RDBQC_STREQ, 'Gen');
    $rs = $query->search();
    

    RDBQC_STREQのところは変数の型やらにあわせて変えてください。以下、参考のこと。

    » PHP: TokyoTyrant – Manual

  • order by的な
  • MySQLの場合。

    select * from users order by created desc;
    

    TokyoTyrantの場合。

    $query = $userTable->getQuery();
    $query->setOrder('created', TokyoTyrant::RDBQO_NUMDESC);
    $rs = $query->search();
    

    ※ PHPの公式マニュアルになぜかsetOrderがないですが、普通に使えます。

  • limitするぞ
  • MySQLの場合。

    select * from users limit 5;
    

    TokyoTyrantの場合。

    $query = $userTable->getQuery();
    $query->setLimit(5);
    $rs = $query->search();
    

    ※ なお、実際には、select/order by/limitは次のように組み合わせて使うかと。

    $query = $userTable->getQuery();
    $query->addCond('fist_name', TokyoTyrant::RDBQC_STREQ, 'Gen');
    $query->setOrder('created', TokyoTyrant::RDBQO_NUMDESC);
    $query->setLimit(5);
    $rs = $query->search();
    
  • count!!
  • MySQLの場合。

    select count(id) from users;
    

    TokyoTyrantの場合。

    $query = $userTable->getQuery();
    $rs = $query->count();
    
  • insertしちゃうぞ!
  • MySQLの場合。

    insert into users (id,name,created) values (null,'taguchi',now());
    

    TokyoTyrantの場合。

    $d = array(
      'name'=>'taguchi',
      'created'=>time()
    );
    $new_id = $userTable->put(null, $d);
    
  • updateしちゃうぞ!
  • MySQLの場合。

    update users set name='akiyan' where id=5;
    

    TokyoTyrantの場合。

    $user = $userTable->get(5);
    $d = array(
      'name'=>'akiyan',
      'created'=>$user['created']
    );
    $new_id = $userTable->put(5, $d);
    
  • deleteしちゃうぜ!
  • MySQLの場合。

    delete from users where id=5;
    

    TokyoTyrantの場合。

    $user = $userTable->out(5);
    
  • drop tableだ!
  • MySQLの場合。

    drop table users;
    

    TokyoTyrantの場合。

    $userTable->vanish();
    

    ※ 他の処理はちょっぱやなのにvanish()は遅いので注意。

  • そういえばcreate table
  • MySQLの場合。

    create table users (id autoincrement, name text, created datetime);
    

    TokyoTyrantの場合。

    ※ 特に必要ないです。あえて言うなら起動するときのDBファイルの拡張子をTable型にするぐらい?

  • distinct!
  • MySQLの場合。

    select distinct name from users;
    

    TokyoTyrantの場合。

    ※ (簡単には)できません。

  • join
  • MySQLの場合。

    joinなんとか!
    

    TokyoTyrantの場合。

    ※ (簡単には)できません。

  • group by
  • ※ (簡単には)できま(ry

以上ですかね・・・かな?なにか間違いとかあったら優しくご指摘ください!

ちなみにTokyoCabinet/TokyoTyrantの公式サイトはこちら。

» データベースマネージャ Tokyo Cabinet

ツイッターもやっています!

SPONSORED LINK

  1. No comments yet.

  1. No trackbacks yet.