
以下の文章は、Martin Fowler による Domain Logic and SQL の日本語訳である。 データベース指向ソフトウェア開発者とメモリ上(in-memory)アプリケーションソフトウェア開発者との間のギャップは、ここ数十年、徐々に広がってきている。このギャップが原因で、データベースの機能(SQLやストアドプロシージャ)をどのように扱えばよいのかという議論が数多く巻き起こっている。ここでは、ビジネスロジックを SQL に置くべきか、それともメモリ上のコードに置くべきかといった問題について、主にパフォーマンスと更新性の観点から考察を行う。考察には簡単な例を使うが、SQL クエリはしっかりとしたもの(rich SQL queries)を用いるので悪しからず。 エンタープライズアプリケーション(訳注:以下、EA)構築に関する本(私の近著『P of EAA』など)を読むと、ロジッ
312 :1/3:05/03/12 03:17:26 ID:??? 突然ですが,面白い SQL を思いついたので,ご意見を頂きたいです.興味を持たれた方は使ってみてくだちい。 一般的に,SQL の発行は,プリペアドステートメントを使う方がよいとされている.その理由は, DBMS のキャッシュが良く効く. SQL インジェクション等の危険が避けられる,等. しかし,webアプリの検索フォームなどでは,プリペアドステートメントは使えない場合が多かった.検索条件項目が複数存在していて,いずれの項目も必須で無い場合,項目が入力されているかどうかをチェックし,それに合わせてSQL 文の WHERE 句の内容をツギハギしなければならないからだ. SQL文そのものも,そしてそれにセットする引数の個数も可変なので,プリペアドステートメントを使うのは無理だったのである. 今回思いついたのは,このような条件で
テーブルの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。 こんなの使いません。 ブクマ用画像。
The addslashes() Versus mysql_real_escape_string() Debate (Chris Shiflett: The PHP Blog) で文字コードによっては addslashes() による SQL のエスケープ処理は問題があることが指摘されていました。 日本語でも、Shift_JIS を扱っている場合は同様の問題が起きる可能性があるように思われましたので、メモしておきます。何か間違い、勘違いなどがありましたら指摘してください。おそらく、PHP だけの問題ではないと思います。 日本語でも文字コードが Shift_JIS の場合、addslashes() によるエスケープ処理では SQL インジェクションが可能になってしまうケースがあります。 例えば、上記のページの例を少し変更すると以下のようになります。 <?php // 例: 文字コードが Sh
<?php $a = array("a" => "apple", "b" => "banana"); $b = array("a" => "pear", "b" => "strawberry", "c" => "cherry"); $c = $a + $b; // Union of $a and $b echo "Union of \$a and \$b: \n"; var_dump($c); $c = $b + $a; // Union of $b and $a echo "Union of \$b and \$a: \n"; var_dump($c); $a += $b; // Union of $a += $b is $a and $b echo "Union of \$a += \$b: \n"; var_dump($a); ?> Union of $a and $b: array
The Yahoo! Query Language lets you query, filter, and join data across any web data source or service on the web. Using our YQL web service, apps run faster with fewer lines of code and a smaller network footprint. YQL uses a SQL-like language because it is a familiar and intuitive method for developers to access data. YQL treats the entire web as a source of table data, enabling developers to sel
オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。 『指南書』ネタです。(1-1: CASE式のススメ) Webでは、以下で参照できます。 CASE式のススメ: 3.CHECK制約で二つの列の条件関係を定義する(リレーショナル・データベースの世界) CASE式はCHECK制約に使える、という話があるのですが、MySQLはCHECK制約がサポートされていません。他DBからの移植に便利なように、エラーはでませんが、実際には定義されず、無視されます。 mysql> CREATE TABLE Personnel( -> name varchar(20),
はじめに SQLを使って数独(ナンプレ)を解く方法を紹介します。 データベースを操作するための言語であるSQLを別の用途に使おうとする理由は、SQLが宣言的な記述が可能な言語の中で最も普及していると思われるからです(宣言的言語と言えばPrologを思い浮かべる方も多いかもしれませんが、残念なことにPrologは、SQLほどには普及していません)。 まず、宣言的な記述について説明しましょう。タクシーに乗ることを想像してください。「渋谷に行ってください」というように、欲しい結果を書くのが宣言的な記述です。具体的な道筋は運転手が考えてくれます。それに対して「まずA通りを北に行って、B交差点を左折して・・・」というように、具体的な道筋を示すのは手続き的記述です。プログラミング言語の場合も同様です。SQLやPrologにおいては、欲しい結果をプログラマが書けば、具体的な実現方法はコンピュータが考えて
GUIによるSQL文の作成など、さまざまな開発支援機能を備えるSQL開発環境「黒猫 SQL Studio」v1.1.7.413が6月4日に公開された。Windows 2000/XPに対応しており、個人使用・業務にかかわらずフリーソフトとして利用可能。現在作者のホームページからダウンロードできる。 「黒猫 SQL Studio」は、SQL文の作成やテストを行える汎用のデータベース開発環境。本ソフト上からOLE DB接続またはODBCドライバに対応する各種データベースへ直接接続可能で、作成したSQL文を実際にテスト実行できる。画面は3ペイン構成で、左側には複数のSQLソースファイルを管理できるファイラー、中央には複数ファイルをタブで切り替えて表示できるエディター、右側には接続したデータベースの構造をツリーとリストで表示する“データベースエクスプローラ”が表示される。 SQL文の作成時は、さまざ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く