SQLアンチパターン 26章「とりあえず削除フラグ」 2015/08/31 @ GMO Yours #ronsakucasual https://atnd.org/events/68902Read less
設計者にもうれしいO/Rマッパ「DBFlute」 7月13日、DB2の勉強会などを開催するコミュニティ「ClubDB2」が開催されました。冒頭のライトニングトークではフリーランスのオープンソースプログラマであり、DBFluteのメインコミッタでもある久保雅彦さん(写真)がDBFluteをアピールしました。 DBFluteを端的に説明すると、「DB設計者にもうれしいO/Rマッパ」だそうです。ただ、O/Rマッパを乱用されるとパフォーマンスに悪影響を及ぼしかねないので、データベース管理者からすると「えーやめてー」と忌避されがちです。しかし、DBFluteはデータベースの変更に強いという特徴があります。カラムの追加など、データベースの変更履歴を自動生成し、開発環境にスムーズに反映させることができます。それゆえにプログラマには当然のこと、管理者にも役に立つO/Rマッパと言えます。 また久保さんは「デ
SQL.jsはSQLiteをEmscriptenを使ってJavaScript化したソフトウェアです。 SQL.jsはWebブラウザ上で使えるデータベースです。Emscriptenを使ってSQLiteをJavaScriptに変換した面白いソフトウェアです。 デモです。テキストエリアに書かれたSQLを実行できます。 実行した結果です。最終的な結果だけが出力されています。SELECTの結果はJSONデータとして取得されています。 もちろん普通にSQLが使えます。 日本語は出力時は化けてしまいましたがデータ上は問題ないと思われます。 SQL.jsはSQLiteがそのままJavaScriptになってしまったようなソフトウェアです。慣れた使い勝手でSQLを実行したり、データを取得できてしまうのは面白そうです。なお現状Google ChromeやFirefoxにしか最適化されていません。 SQL.jsは
[CakePHP] conditionsでのORとかANDの条件指定 By syu on 11月 13th, 2010 ■条件 ・statusが1であること ・startが今日または今日よりも過去の日付であること。またはNULLであること。 ・endが今日または今日よりも未来の日付であること。またはNULLであること。 $contents = $this->Content->find('all', array( 'conditions' => array( 'Content.id' => $id, 'Content.status' => 1, array( 'OR' => array( 'Content.start <=' => date('Y-m-d'), 'Content.start' => null, ), ), array( 'OR' => array( 'Content
2008年12月16日15:49 カテゴリCakePHP 【CakePHP】"group by" "count" "sum" などを使う CakePHPにおいて、sql文の "group by" "count()" "sum()" などを使いたいときのメモ。 group by group by は condition に直接書く事が可能。$data = $this->Uriage->findAll('category_id = 1 group by customer_id')といった感じに。 もし、条件が不要でgroup文だけ使いたい場合は$data = $this->Uriage->findAll('1 = 1 group by customer_id')と、ダミー条件を指定すればOK。 ダミー条件無しにいきなり group by を書くと怒られるので注意。 count(), sum()
mysqlなどでselectする際に、重複するデータを特定のフィールド(カラム)で弾くためには DISTINCTを使うと思いますが、それをCakePHPで使う際の方法と注意点です。 環境:CakePHP1.2 $fields = array( 'DISTINCT Hoge.id', 'Hoge.created', 'Hoge.updated'); これが正しい姿で、たとえば $fields = array( 'Hoge.created', 'DISTINCT Hoge.id', 'Hoge.updated'); のようにするとエラーになります。 要は、配列の先頭じゃないとDISTINCT使えないよっていう話ですね。 調査しても皆DISTINCT使えるってことは書いてあるけど、これについては 記載されてなかったので当たり前の話だったらごめんなさいw 地味にハマったので同じ状態の人は気をつけて
SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基本的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの
New CakePHP 5.0 Chiffon. Faster. Simple. Delicious. What's new in version The migration guide has a complete list of what's new in. We recommend you give that page a read when upgrading. A few highlights from 5.0 are: PHP 8.1 required. Improved typehints across the framework. CakePHP now leverages union types to formalize the types of many parameters across the framework. Upgraded to PHPUnit 10.x
テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOIN → JOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。
APIやRSSなどを提供しているサイトは、情報を簡単に扱うことができますが、例えば Yahoo!の検索結果とか、mixiのニュースとか、あるサイトの一部を取り出したいことってよくあります。(とはいえ、著作権違反には注意 そんな時、PHPのライブラリである「htmlSql」を利用すると便利。このライブラリに、ファイルでもURLでも文字列でも、HTMLで作られたものなら何でも与えると、解析して取り出しやすくしてくれます。しかも、その取り出し方はSQL! 例えば、「id属性が’test’の p要素の内容を取り出したい」という場合には、次のようなSQLを使います。 SELECT text FROM p WHERE $id=="test" 超パワフル。ということで、これを CakePHPで利用するためのテクニック。 まずは、ダウンロードしたファイルの中から次のファイルを「app/vendors」フォ
A5:SQL Mk-2は複雑化するデータベース開発を支援するために開発されたフリーのSQL開発ツールです。 高機能かつ軽量で、使い方が分かりやすいことを目標に開発されています。 SQLを実行したり、テーブルを編集するほかに、SQLの実行計画を取得したり、ER図を作成したりすることが出来ます。 特徴・機能 OCI接続・直接接続・ADOまたはODBCを介したDBへの接続 Oracle DatabaseはOCI経由の接続・直接接続が出来ます。 PostgreSQLとMySQLは直接接続が出来ます。 Microsoft SQL Serverは、OLE DBプロバイダを直接呼び出した接続ができます。 IBM DB2は、ODBCドライバを直接呼び出した接続ができます。 その他のデータベースは、ADOまたはODBCを利用して接続します。 Oracle, PostgreSQL, MySQLは、A5:SQL
米 Yahoo! が Yahoo! Pipes みたいに自由度が高くて、またちょっと毛色が違うサービスが出てきた。題して、Yahoo! Query Language。YQL と呼ぶようだ。SQL 風の言語を REST で投げて、結果を XML や JSON で受け取ることができる。具体的にやってみないと分かりにくいので、とりあえず試してみた。RSS からデータ取得YQL を使って RSS から最新のタイトル10個を取ってきてみる。こんな YQL になるらしい。 select title from rss where url='http://d.hatena.ne.jp/nitoyon/rss' rss テーブルに対して select を発行している。実際にこの YQL を試すには YQL 用の console を利用するとよい。(※要ログイン)console の左上に YQL を入力して
いろいろな本からメモってきたメモのメモ。出典を書いておくのを忘れた。思い出し次第補完するかも。 deleteのコストは高いので、無効化を示すフィールドを作ってupdateすべき slow query logに要注意 多くのエントリでほとんどのフィールドが同じ値を持つ場合はインデックスの効果が小さい →複合インデックスの効果が大きい 複合インデックスは指定の順番が大切。AとBという指定の場合、A単独でもインデックスの効果がある。逆は真でない。 インデックスが使われる場面は フィールド値を定数と比較するとき (where name = 'hogehoge') フィールド値でJOINするとき (where a.name = b.name) フィールド値の範囲を求めるとき (<,>,between) LIKE句が文字列から始まるとき (where name like 'hoge%') min(),
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く