タグ

sqlとdbに関するhiro_yのブックマーク (20)

  • SQLのlike演算子でエスケープが必要な文字 - teracc’s blog

    まとめると以下のようになると思います。 Oracle % _ %(全角)_(全角) DB2 % _ %(全角)_(全角) MS SQL Server % _ [ MySQL % _ PostgreSQL % _ 注意点は以下のとおり。 DB2、Oracleは、「%」「_」(全角)もワイルドカードとして解釈する SQL Serverは、[a-z]のような正規表現的な記述を解釈する 当然、ワイルドカード的な機能を持たせたい「%」や「_」等はエスケープしない 全データベース共通の話として、エスケープ文字自体もエスケープする必要がある(MySQL、Postgresでは「\」がデフォルトのエスケープ文字) likeのエスケープをした後に、Prepared Statementで値をSQLにバインドする (関連)2008-07-10 - T.Teradaの日記

    SQLのlike演算子でエスケープが必要な文字 - teracc’s blog
    hiro_y
    hiro_y 2009/07/04
    likeでエスケープが必要な文字まとめ。
  • SQLのバインド機構は「エスケープ処理された値」をはめ込むのか - ockeghem's blog

    以前このブログでも取り上げたことのある神戸デジタル・ラボの近藤伸明氏がThink IT上で「SQLインジェクション大全」という連載を執筆しておられる。その第三回「SQLインジェクションの対策」を読んで以下の部分が引っかかった。 バインド機構とは、あらかじめSQL文のひな型を用意し、後から変動個所(プレースホルダ)に実際の値(バインド値)を割り当ててSQL文を生成するデータベースの機能だ。バインド値はエスケープ処理した後にプレースホルダにはめ込むので、悪意あるSQL文が挿入されても、その実行を阻止することができる(図1-2)。 http://thinkit.jp/article/847/1/ たしかにエスケープ処理を使ってバインド機構を実装する場合もある。JavaMySQLの組み合わせでUnicodeのU+00A5を用いたSQLインジェクションの可能性 | 徳丸浩の日記から派生して、MyS

    SQLのバインド機構は「エスケープ処理された値」をはめ込むのか - ockeghem's blog
    hiro_y
    hiro_y 2009/03/01
    サーバーサイドのプリペアードステートメントのメリットとは。「SQLの構文解析はプレースホルダのまま行われるので原理的にSQLインジェクションの可能性がない」「キャッシュされるのでSQLの実行効率が向上する」
  • Martin Fowler氏はデータストレージについての凍結した考えがほぐれてきたと考えている

    あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

    Martin Fowler氏はデータストレージについての凍結した考えがほぐれてきたと考えている
    hiro_y
    hiro_y 2008/12/12
    「もしあなたが統合のプロトコルをSQLからHTTPに変えたら、それはあなたがデータベースを統合データベース(リンク)からアプリケーション・データベース(リンク)に変えられるということです。」
  • RDBMSの時代の終わりが見えてきた - きしだのはてな

    クラウドと一緒にやってきたもの 最近、クラウドが流行ってます。 GoogleMapResuceから始まって、MicrosoftのAzureまで、大手のクラウド製品が出揃った感じ。 で、そこで、こんなクラウド製品が出ましたというときに、必ずといっていいほどそのクラウド用のデータベースの説明があります。そして、それはRDBMSではありません。 GoogleだとBigTable、MicrosoftだとSQL Data Services、あとはAmazonSimpleDB。どれも、基的にはひとつのテーブルにハッシュコードでアクセスするようになっています。 ほかのクラウド製品も、Oracle Coherenceだったり、楽天のRomaだったり、非RDBMSのデータストレージを提供します。 クラウドというわけではないけど、mixiのTokyo TyrantやApache CouchDBも、RDB

    RDBMSの時代の終わりが見えてきた - きしだのはてな
    hiro_y
    hiro_y 2008/12/12
    RDBMSからの脱却とか。流れとしては同意だけど。
  • ダウンロード - HASHコンサルティング株式会社

    Copyright(C)2008 HASH Consulting Corporation. All Rights Reserved.

    hiro_y
    hiro_y 2008/07/16
    SQLインジェクションに関する発表資料あり。
  • SQLエスケープにおける「\」の取り扱い

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2008年6月2日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり 昨日のエントリ(徳丸浩の日記 - そろそろSQLエスケープに関して一言いっとくか - SQLのエスケープ再考)は思いがけず多くの方に読んでいただいた。ありがとうございます。その中で高木浩光氏からブクマコメントを頂戴した。 \がescape用文字のDBで\のescapeが必須になる理由が明確に書かれてない。\'が与えられたとき'だけescapeすると…。自作escapeは危うい。「安全な…作り方」3版で追加の「3.失敗例」ではDBで用意されたescape機能しか推奨していない このうち、まず「\」のエスケープが必

    hiro_y
    hiro_y 2008/07/06
    SQLのエスケープで「\」のエスケープが必要な理由。
  • 徳丸浩の日記 - そろそろSQLエスケープに関して一言いっとくか - SQLのエスケープ再考

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2007年11月26日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり 稿ではSQLインジェクション対策として、SQLのエスケープ処理の方法について検討する。 最近SQLインジェクション攻撃が猛威を振るっていることもあり、SQLインジェクションに対する解説記事が増えてきたようだが、対策方法については十分に書かれていないように感じる。非常に稀なケースの対応が不十分だと言っているのではない。ごく基的なことが十分書かれていないと思うのだ。 SQLインジェクション対策には二通りある。バインド機構を使うものと、SQLのエスケープによるものだ。このうち、SQLのエスケープについて、十分

    hiro_y
    hiro_y 2008/07/06
    DBのバインド機構を使わないSQLのエスケープについて。
  • この発想はなかった - 書評 - 逆算式SQL教科書 : 404 Blog Not Found

    2007年12月28日02:45 カテゴリ書評/画評/品評Lightweight Languages この発想はなかった - 書評 - 逆算式SQL教科書 技術評論社書籍編集部池様より献御礼。 ぐんぐん実力がつく! 逆算式SQL教科書 小野哲 やられた! この発想はなかったよ。 書「ぐんぐん実力がつく!逆算式SQL教科書」は、一言で言うと「それってどう書く」のSQL版。文法や命令を説明するのではなく、「こうしたい時にはどうするの」という実例集。他の言語だと、いわゆるCookbookというのがすでにかなりあるのだけど、SQLはまだなかった。 目次 - 書籍案内:ぐんぐん実力がつく! 逆算式SQL教科書|gihyo.jp … 技術評論社 第1章 逆算してみませんか? 第2章 最も基的なSELECT文 第3章 次に重要なSELECT文 第4章 1ランク上のSELECT文 第5章 覚えてお

    この発想はなかった - 書評 - 逆算式SQL教科書 : 404 Blog Not Found
    hiro_y
    hiro_y 2008/01/03
    「SQLは『単なる』データ永続化の手段として使うには、あまりに高機能」そうそう。
  • SQLのTIMESTAMP型と日付「0000-00-00」

    こんにちは。hnwです。今回はSQLの話題です。SQLで、TIMESTAMP型(MySQL で言えばDATETIME型)のカラムに未定義値の意味で「0000-00-00 00:00:00」という値をセットする人が居るかと思います。でも、これは止めた方がいいんじゃないでしょうか、という話題です。 標準SQLについて 私の手元に『標準SQLガイド 改訂第4版』というSQL/92の解説があるのですが、「17.3 日時」によれば、TIMESTAMP型で扱える範囲は0001-01-01 00:00:00から9999-12-31 23:59:61.999までとなっています。つまり、標準SQLのTIMESTAMP型を考えると0000-00-00の扱いは未定義ということになります。 PostgreSQLについて PostgreSQLのTIMESTAMP型に関して言うと、標準SQLを超える範囲の年も扱える

    hiro_y
    hiro_y 2007/11/15
    timestamp型に「0000-00-00 00:00:00」をセットすることについて。
  • SQL Hacks

    すでにSQL言語を使いこなしている読者のために、ユニークですぐに役立つテクニックを紹介するのが、書『SQL Hacks』です。プログラムのパフォーマンスを向上させ、データベースの管理を容易にする秘密の方法を紹介します。陥りがちな失敗例の解説が充実していることも特徴です。取り上げるテーマは「SQLの基」「JOIN、UNION、VIEW」「文字列の処理」「日付の処理」「数値の処理」「オンラインアプリケーション」「さまざまなデータの構成」「小さいデータの格納」「ロックとパフォーマンス」「レポートの作成」「ユーザと管理」など。MySQLを中心に、SQL Server、Oracle、PostgreSQLについても解説を行いました。 訳者まえがき クレジット はじめに 1章 SQLの基 1. コマンドラインからSQLを実行する 2. プログラムからデータベースに接続する 3. 条件付きINSER

    SQL Hacks
    hiro_y
    hiro_y 2007/07/12
    SQL Hacks、オライリーから。
  • 帰ってきたHAVING句:CodeZine

    はじめに SQLのクラスを教えるとき、最大の課題の一つが、生徒たちがそれまでに手続き型言語から身に付けたことを、一度「頭から追い出す(unlearn)」ことだ。私がそのとき採る一つの方法は、処理を「レコード単位」ではなく、集合という観点から考えるよう強調することである。 ――――J.セルコ  SQLの考え方を習得するときに最大の障壁となるのが、私たちの多くが慣れ親しんだ手続き型言語の考え方(ソート、ループ、分岐、代入、等々)です。SQL質を理解するには、私たちの心に強固に貼り付いてしまった思考パターンを、一度ベリベリと引き剥がし、更地に戻してやる必要があります。それが、セルコが「unlearn」という言葉に込めたニュアンスです。セルコ自身、Fortranからプログラマとしてのキャリアを開始し、C、Algol、Pascalと手続き型言語を渡り歩いた後にSQLを身に付けた人物だけに、言葉に

    hiro_y
    hiro_y 2007/07/12
    havingの使い方。
  • iSQL-Viewer » Meeting the needs of developers

    How businesses get benefits from Open-Source Software? People and engineers have known for a seriously significant time frame the advantages presented by open-source programming. However, ongoing take-up of OSS has been from organizations and partnerships there are various explanations for this positive development. Here is a portion of the principal factors: Cost: The monetary advantages presente

    hiro_y
    hiro_y 2007/06/06
    JDBCのフロントエンド、SQL実行環境。要JVM。
  • SQLクックブック

    TOPICS クックブック , Programming , Database 発行年月日 2007年01月24日 PRINT LENGTH 548 ISBN 978-4-87311-315-9 原書 SQL Cookbook FORMAT SQLはデータベースの世界における最高の言語です。リレーショナルデータベースに関する開発を行っている場合やリレーショナルデータベースからレポートを作成する場合、データをデータベースに格納してそれを再び取り出す能力は、結局のところSQLの知識に依存します。しかし、多くの技術者はSQLを通り一遍な方法で使っており、その処理能力に気付いていません。書はSQLが実際にどのように役に立つか解説することで、このような状況すべてを変えることを目的としています。 書は、日々の仕事に役立つ一般的なSQLの問題とその解決策を集めています。各レシピは関連する話題ごとに章に

    SQLクックブック
    hiro_y
    hiro_y 2007/01/11
    チェック。
  • MySQL

    MySQL HeatWave Use automated and integrated generative AI and machine learning (ML) in one cloud service for transactions and lakehouse scale analytics. Get faster insights from all your data with unmatched performance and deploy apps in your choice of cloud providers. Learn More » MySQL AI MySQL AI provides integrated, automated, and secure machine learning (ML) and generative AI capabilities. Le

    hiro_y
    hiro_y 2006/11/19
    SQLのパフォーマンス向上のためのtips。
  • CASE式のススメ(後編):CodeZine

    はじめに CASE式は、SQL-92で標準に取り入れられました。比較的新しい道具であるためか、便利なわりにその真価があまり知られておらず、利用されていなかったり、CASE式の簡略版であるDECODE(Oracle)、IF(MySQL)などの関数で代用されていたりします。 CASE式を活用すると、SQLでできることの幅がぐっと広がり、書き方もスマートになります。しかも、実装非依存の技術なのでコードの汎用性も高まります。特にDECODE関数を使っているOracleユーザーには、ぜひCASE式への乗り換えをお薦めします。 前回『CASE式のススメ(前編)』では、CASE式の文法とその応用方法について解説しました。今回は引き続き、CASE式のより高度な応用方法について解説します。必要な環境 次のいずれかのデータベース(MS Accessは対象外)。Oracle(9i以降)SQL ServerDB2

    hiro_y
    hiro_y 2006/06/21
    SQLのcase式の利用方法、後編。
  • CodeZine:CASE式のススメ(前編)

    はじめに CASE式は、SQL-92で標準に取り入れられました。比較的新しい道具であるためか、便利なわりにその真価があまり知られておらず、利用されていなかったり、CASE式の簡略版であるDECODE(Oracle)、IF(MySQL)などの関数で代用されていたりします。 しかし、ジョー・セルコが『プログラマのためのSQL 第2版』の中で、SQL-92で追加された中で最も有用かもしれません  と言うように(注1)、CASE式を活用するとSQLでできることの幅がぐっと広がり、書き方もスマートになります。しかも、実装非依存の技術なのでコードの汎用性も高まります。特にDECODE関数を使っているOracleユーザーには、ぜひCASE式への乗り換えをお薦めします。 このテキストは、そんないいこといっぱいのCASE式の便利な使い方を紹介するものです。 この言葉は、『プログラマのためのSQL 第2版』(

    hiro_y
    hiro_y 2006/06/16
    SQLのcase式の利用方法。
  • インデックスの基礎知識

    ■ インデックスとは データベースの世界で、インデックス(索引)とはテーブルに格納されているデータを 高速に取り出す為の仕組みを意味します。 インデックスを適切に使用することによってSQL文の応答時間が劇的に改善 される可能性があります。 インデックスにはB-Treeインデックスをはじめ、ビットマップインデックス、 関数インデックスなどの種類がありますが、ここでは最も一般的に使われ、かつ ほとんどのDBMSでサポートされているB-Treeインデックスについて解説します。 ※ CREATE INDEX文でオプションを指定しない場合は通常B-Treeインデックスが 作成されます。 ■ B-Treeインデックスのしくみ B-Tree(Balanced Tree)インデックスは次のようなツリー状の構造になっています。 ツリーの先頭はヘッダブロックと呼ばれています。ヘッダブロックでは、キー値の 範囲

    hiro_y
    hiro_y 2006/03/09
    インデックスについて、全体的なまとめ。
  • MySQL の order by rand() - naoyaのはてなダイアリー

    MySQL のレコード取り出しの際に、ソートをランダムにできないものかと調べていたら、あった。 SELECT * FROM table ORDER BY RAND()こんな感じで。ソートを RAND にすれば良いという… そうそう、僕もこれは最近知ったんですが。Haropy でエントリーをランダムに取り出すのにも order by rand() を使ってます。Class::DBI::mysql に retrieve_random というメソッドがあって、ランダムに一見取り出すことができるという。これも中では order by rand() limit 1 をやってます。 ただ、この rand() はデータ量が大きいテーブルには使いづらいという罠。 mysql> explain select id from entry order by rand() limit 1 ?G *********

    MySQL の order by rand() - naoyaのはてなダイアリー
    hiro_y
    hiro_y 2005/11/18
    SQLによるランダムソートの方法。パフォーマンスに注意。
  • coalesce - PukiWiki

    FrontPage > DataBase > PostgreSQL > coalesce coalesce† Oracleの「nvl」の代替えにも使用できます。 一応、Oracle 9iに存在する事を確認済み。(SQL92標準機能。) PostgreSQL test=# select coalesce(null, 'NULL DATA'); coalesce ----------- NULL DATA (1 行) Oracle SQL> select coalesce(null, 'NULL DATA') from dual; COALESCE(NULL,'NULLDATA') --------------------------- NULL DATA SQL> select nvl(null, 'NULL DATA') from dual; NVL(NULL,'NULLDATA') --

    hiro_y
    hiro_y 2005/11/14
    Oracleのnvlと同様なことができる関数、coalesce。何だかいつも忘れる。
  • 1