You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
3/16 に新著が出ます。タイトルは『達人に学ぶDB設計 徹底指南書』。名前からピンと来た方もいるかもしれませんが、『達人に学ぶ SQL徹底指南書』の続編に当たります。本の装丁も同じ轟木亜紀子さんにお願いしたので、シリーズものっぽく仕上がっています(写真は文末の Amazon へのリンク参照)。 本書も、前回の SQL 編と同様、初級者から中級者へステップアップするためのコツやノウハウを詰め込んだ盛りだくさんな内容になっています。ただし、正規化や ER 図の描き方や、インデックスの仕組みやバックアップといった論理・物理両面における設計の基礎についてもカバーしているので、初級者であっても置いてけぼりにすることのないよう配慮したつもりです。 ただ、DB 設計というのは非常に広範囲な内容を含むので、イメージが湧かない、という方もいるでしょう。そこで以下に、本書の章構成と前書きを示しますので、購入
PostgrSQL 9.0から追加されたエスケープ関数から、SQLインジェクション対策を再度解説してみたいと思います。 SQLインジェクション対策の4原則 基本的にはSQLインジェクション対策として以下の原則を守っていれば、SQLインジェクションに脆弱なアプリケーションを作ることはありません。 すべてのパラメータを文字列としてエスケープする すべてのパラメータをプリペアードクエリのパラメータとして処理する 文字エンコーディングの設定をAPIで行う パラメータとして処理できない文字列はバリデーションを行う 原則1と原則2は重複して適用する必要はありません。どちらかを行います。文字エンコーディングの設定やプリペアードクエリのエミュレーション・抽象化ライブラリのバグ等でSQLインジェクションが可能になる場合もありますが、通常であればこの原則を守っている限りSQLインジェクション脆弱性を作ることは
「真面目にエロサイトを作ってみた」というエントリで紹介されていた、スクレイピングに使われている htmlSQL に興味を持ったので試しに使ってみた。 jonasjohn.de: htmlSQL – a PHP class to query the web by an SQL like language 準備 上記サイトよりダウンロードして解凍した中に入っている “snoopy.class.php” と “htmlsql.class.php” という2つのファイルを使用する PHP からインクルードできるところに入れます。 使い方 実際に Yahoo! のトップページからヤフーニュースのトピックスのニュースタイトルを取ってくるコードを書いてみました。 コードを見てもらえば分かるようにまさに SQL を発行している感じです。 include_once("snoopy.class.php");
以前このブログでも取り上げたことのある神戸デジタル・ラボの近藤伸明氏がThink IT上で「SQLインジェクション大全」という連載を執筆しておられる。その第三回「SQLインジェクションの対策」を読んで以下の部分が引っかかった。 バインド機構とは、あらかじめSQL文のひな型を用意し、後から変動個所(プレースホルダ)に実際の値(バインド値)を割り当ててSQL文を生成するデータベースの機能だ。バインド値はエスケープ処理した後にプレースホルダにはめ込むので、悪意あるSQL文が挿入されても、その実行を阻止することができる(図1-2)。 http://thinkit.jp/article/847/1/ たしかにエスケープ処理を使ってバインド機構を実装する場合もある。JavaとMySQLの組み合わせでUnicodeのU+00A5を用いたSQLインジェクションの可能性 | 徳丸浩の日記から派生して、MyS
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
たとえば、こんなテーブルがあったとして。 SELECT * FROM CustomerFamily cust_id family_id name ========================== 1 1 波平 1 2 フネ 1 3 カツオ 2 1 マスオ 2 2 サザエ 2 3 タラオ それをこんな感じで抽出したい場合。 cust_id family1 family2 family3 ================================== 1 波平 フネ カツオ 2 マスオ サザエ タラオ まぁ、正攻法では CURSOR 使ってぐるぐる回すことになるんでしょうけど、DataGrid とか使いたい場合はそうはいかないわけで。 以前似たようなことを聞かれたときは、「できない」って答えたか、あるいは副照会使って SELECT cust_id, (SELECT name FROM
>複数列のinを使いたいのですが、SQLServer >には無いのでしょうか? 「(列1,列2) in(値1,値2)」という条件は、行値式または行値構成子と呼ばれますが、SQL Serverでは未サポートだったと思います。 副問い合わせのin条件は、existsで等価に表現できます。 updateでのSQL例は、下記のようになります。 SQL Serverでは、「update 表名」のすぐ後ろには別名は書けず、updateでも「from 表名 as 別名」と書く方式になっているようです。 update TABLE_NAME set FIELD_NAME='1' from TABLE_NAME as x where exists(select * from TABLE_NAME2 as y where x.FIELDA=y.FIELDA and x.FIELDB=y.FIELDB and y
言葉で表現するよりも、サンプルのSQL文で分析してもらう 方が理解しやすいと思いますので、そのやり方で進めさせて もらいます。 実際にやりたいことは、 select * from example1 where (key1, key2) in (select key1, key2 from example2); の値リスト版になります。 もちろん、上記のselect文での副問合せでは正常に結果は得られます。 実際にやってダメだった例は select * from example1 where (key1, key2) in ((値A-1, 値A-2), (値B-1, 値B-2), (値C-1, 値C-1)); のようなパターンになります。 単にカッコで括ったリストにすればいいというものではないと判断できる のですが、複数列の副問い合わせ文の値リストはどう表現すればよいのでしょうか? プログラ
ランダムに10件 SELECT する SQL です。 ORDER BY RAND() でランダムにソートして LIMIT 句で取得したい件数だけ取得します。 SELECT * FROM table ORDER BY RAND() LIMIT 10; ランダム関数は MySQL, PostgreSQL, SQLServer で使用できます。 ランダム関数は MySQL, SQLServer は RAND() PostgreSQL は RANDOM() です。 関連する投稿 クロックス購入 Lenovo の IdeaPad S10e 購入 IT英語のナゾ Amazonに横浜市立図書館の検索結果を差し込むgreasemonkeyスクリプト OpenPNE 管理画面を別ディレクトリにする This entry was posted by matsuura on 8月 29, 2007 at 5:5
ランキングを取得するSQL です。 同じスコアの場合は同じ順位にするなどの必要があるため結構面倒ですが、 下記SQL でイッパツで取得できます。 実際に携帯ゲームのランキングを取得するのに使用しているSQLです。 ranking テーブル CREATE TABLE ranking ( id bigint(20) NOT NULL auto_increment, name varchar(20) NOT NULL, score bigint(20) NOT NULL, ); SQL SELECT r1.name, r1.score, (SELECT count(r2.score) FROM ranking as r2 WHERE r2.score>r1.score)+1 as rank FROM ranking as r1 ORDER BY r1.score DESC LIMIT 10; r
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く