タグ

sqlに関するAJYAのブックマーク (45)

  • テキスト検索の方法とインデックス — Let's Postgres

    板垣 貴裕 テキスト検索にもさまざまな方法があります。大量のテキストを検索するにはインデックスを使って検索したいところですが、どんな検索にも応えられるインデックスというものは、さすがに存在しません。それぞれのアプリケーションの条件に適したテキスト検索方法やインデックスの張り方を選んで行きましょう。 今回説明するテキスト検索の方法の一覧を以下に挙げます。PostgreSQL ユーザが「全文テキスト検索」というと「単語単位の検索」を指すことが多いようです。また、「中間一致検索」が「あいまい検索」と呼ばれることもあるようです。用語が厳密な意味で使われないことも多いようなので、文脈には注意して解釈してください。 「単語単位の検索」と「中間一致検索」では、追加のモジュールを導入することで日語全文検索が可能なインデックスを作成できます。こちらは説明の後半で紹介します。以下、記事の内容です。 テキス

  • SQLでエスケープなんてしたら負けかなと思ってる。 - めもおきば

    オレオレSQLセキュリティ教育は論理的に破綻している | yohgaki's blog 「プリペアードクエリが基だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ SQLインジェクション対策で大垣靖男氏は何を勘違いしていたか | [ bROOM.LOG ! ] エスケープとプレースホルダをめぐる議論 - Togetterまとめ SQLインジェクション対策としてのプリペアドステートメントとエスケープについての議論 - Togetterまとめ IPAの「安全なSQLの呼び出し方」が安全になっていた | yohgaki's blog SQLへの安全な値の埋め込み方について、ここ数日で色々議論というか意見の投げ合いがありましたが、自分としての考えをまとめておきます。 1. SQLに値を埋め込む場合は、プリペ

    SQLでエスケープなんてしたら負けかなと思ってる。 - めもおきば
  • パーティション テーブルとパーティション インデックスに対するクエリ処理の機能強化

    SQL Server 2008 では、多くの並列プランでのパーティション テーブルに対するクエリ処理のパフォーマンスが向上しています。また、並列プランと直列プランを表す方法が変更され、コンパイル時と実行時の両方の実行プランで示されるパーティション分割情報が強化されています。このトピックでは、これらの機能強化について説明します。また、パーティション テーブルとパーティション インデックスのクエリ実行プランを解釈する方法、およびパーティション分割されたオブジェクトに対するクエリのパフォーマンス向上に関するベスト プラクティスについて説明します。 新しいパーティション対応のシーク操作 SQL Server 2008 では、パーティション テーブルの内部表現が変更されており、クエリ プロセッサに対してテーブルは、先頭列に PartitionID を持つ複数列インデックスとして表されます。Parti

    パーティション テーブルとパーティション インデックスに対するクエリ処理の機能強化
  • http://rokuz.com/?p=736

  • 第4回 スーパーソルジャー病~すべての問題をやみくもにコーディングで解くべからず | gihyo.jp

    カルテ1:図1のような2つのテーブルOrders(注文)とOrderReceipts(注文明細)を考える。この2つのテーブルは、お中元の受け付けと配送を管理するためのものです。Ordersテーブルの1レコードが注文1件に対応し、OrderReceiptsはその注文内の商品単位で1レコードになっている。したがって、OrdersとOrderReceiptsは一対多の関係にある。 今、注文ごとに受付日(order_date)と商品の配送予定日(delivery_date)の差を求めて、それが3日以上ある場合は注文者に遅くなる旨の連絡を送りたい。さて、どの注文番号が該当するか、求めてほしい。 図1 OrdersテーブルとOrderReceiptsテーブル レベルの異なる情報を結合する方法 1つの注文に複数の商品が含まれる可能性があるから、OrdersテーブルとOrderReceiptsは一対多の関

    第4回 スーパーソルジャー病~すべての問題をやみくもにコーディングで解くべからず | gihyo.jp
    AJYA
    AJYA 2012/01/24
  • OracleでUPDATE時にJOINを使う - hir000の日記

    こちらを参考にしてみた。「SQL-Serverと違ってUpdate句の中でJoinが使えない」>同じこと考えてた…… Oracle 結合を含んだ更新 ・SQL-Serverの場合 UPDATE table1 SET COL1 = B.COL1 FROM table1 A INNER JOIN table2 B ON A.CD1 = B.CD1 ・Oracleの場合 UPDATE ( SELECT A.COL1 A_COL, B.COL2 B_COL FROM table1 A INNER JOIN table2 B ON A.CD1 = B.CD1 ) SET A_COL = B_COL http://tukaenai-pg.cocolog-nifty.com/blog/2007/10/oracle_4444.html - 実践してみました。でもjoinした結果に対してupdateかけてる

    OracleでUPDATE時にJOINを使う - hir000の日記
    AJYA
    AJYA 2011/12/06
  • 範囲で抽出(BETWEEN演算子) - SQL攻略 - Web上でSQLを実行しながらマスターするサイト

    ■BETWEEN演算子の使い方 BETWEEN演算子はWHERE句で使用します。[カラム名 BETWEEN 下限値 AND 上限値]と記述し、カラムの値が下限値以上、上限値以下の場合真を返します。下限値と上限値を逆に記述することはできません。上記のSQLを比較演算子で書き直すと以下のSQLになります。

    AJYA
    AJYA 2011/10/14
  • 全ては時の中に… : 【SQL】CASE式でNULLかどうかを判定する

    2008/8/719:5 【SQL】CASE式でNULLかどうかを判定する SQLのCASE式に記載する条件である値がNULLかどうかを判定する方法について説明します。 CASE式である値がNULLかどうかを確認する場合には、「WHEN 項目名 IS NULL」の形式で指定します。 NULLかどうかを確認する場合の構文は、以下のようになります。 CASE WHEN 項目名 IS NULL THEN 式1 ELSE 式2 END ※式1は項目名がNULLである場合の処理を、式2は項目名がNULLではなかった場合の処理を記述します。 以下、サンプル。 《環境》 ・利用テーブル 社員テーブル(Employee) ・項目 社員ID(EmpID) 社員名(Name) 部署ID(DeptID) 《SQL》 SELECT EmpID, Name, CASE WHEN DeptID IS NULL THE

    AJYA
    AJYA 2011/08/26
  • CASE式のススメ / リレーショナル・データベースの世界

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    AJYA
    AJYA 2011/08/08
  • CASE(式)

    AJYA
    AJYA 2011/08/04
  • 条件分岐:IIF関数、IF文とSwitch関数、Case文、Case式 比較

    使い分けで混乱するのでメモ 思い違いがあるかも。 〇:Accessクエリ(SQL)で使えるもの □:SQL Server へのSQL発行で使えるもの ☆:条件に当てはまらない部分の式も評価の対象とする 注意点として、VBAで引数として使えない場合がある? 例えば、「金額」が1,000ならA,その他ならBを「評価」に戻す場合 ■IIF関数:〇☆ 評価=IIF(金額=1000,'A','B') ■IF文 IF 金額=1000 Then 評価="A" Else 評価="B" End If ■Case文 Select Case 金額 Case 1000 評価="A" Case Else 評価="B" End Select ■Switch関数:〇☆ Switch(金額=1000,"A",TRUE,"B") ■Case式(単純/検索):□? ・単純(等しいか否か) 評価 = case 金額 when

    AJYA
    AJYA 2011/08/04
  • 副問い合わせの構文を覚える − @IT自分戦略研究所

    前回に引き続き、副問い合わせによって問い合わせ結果をSQL文の条件に使用する方法について学びます。前回「SELECT文中のSELECT文、副問い合わせ」で、副問い合わせの意味、構文の記述について紹介しました。今回は単一行副問い合わせ、複数行副問い合わせの実行方法を学びましょう。 理解しておきたいこと 1.確認しておきたい内容 単一行副問い合わせの実行 複数行副問い合わせの実行 2.単一行副問い合わせ 結果として1行を戻す副問い合わせは「単一行副問い合わせ」と呼ばれます。単一行副問い合わせでは、単一行比較演算子(=、<、<=、>、>=、!=)を使用することができます。 副問い合わせがNULLを戻す場合、主問い合わせの結果は1行も戻されません。この場合「WHERE列 = NULL」を指定したことになりますが、NULL値は「=」では比較できないためです。 問題 ■問題1 次の資料を確認してくださ

    副問い合わせの構文を覚える − @IT自分戦略研究所
  • JOIN を利用したDELETE

    DELETEとJOINを組み合わせて利用して、他テーブルの内容に基づいてデータを削除するSQL文の書き方について説明します。 同様の削除処理は、INやEXISTSを利用しても可能ですが、この書き方は直感的に理解しやすい記述法だと思います。 また、旧システムからのデータコンバート作業など、対象データを十分に確認してから削除処理を行いたい場合に非常に便利です。 【例】 商品マスタと商品単価マスタがあり、商品単価が登録されていない商品を、商品マスタからすべて削除したい。

    AJYA
    AJYA 2011/02/24
    DELETEのときにJOINして削除する方法
  • CASE式のススメ(前編)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    CASE式のススメ(前編)
    AJYA
    AJYA 2011/02/20
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
    AJYA
    AJYA 2011/01/07
  • Sql文のUpdateと副問い合わせで困っています。

    お世話になっております。Sql初心者でUpdate文の書き方で困っております。ご教授の程宜しくお願い致します。 下記のような2つのテーブルがあります。 関係はTotalが合計を表すテーブルでDetailが明細を表すテーブルです。OTとNoの組み合わせで一意となります。TotalテーブルのTotalAmountはDetailテーブルのAmountの合計です。 行いたいUpdateは『TotalAmountとTotalの合計が合わないもののみTotalAmountをOTとNoで紐ずくDetailテーブルのAmountの合計で更新する』です。 ■テーブル名:Total ------------------------------------------------------- 列名) OT No TotalAmount -------------------------------------

    Sql文のUpdateと副問い合わせで困っています。
    AJYA
    AJYA 2011/01/07
    UPDATE文での、LEFT OUTER JOIN/SELECTの書き方がわかる
  • テスト 休止中

    すみません、テスト中止してます テスト、中止してます [前のページにもどる] [三流君 www.ken3.org に 戻る] HP リンク [VBA・マクロ プログラミング]の解説 当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です [VBA Outlookの操作 CreateObject("Outlook.Application" )]・・・Outlookを使い、メール関係を処理するサンプルです [Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しサンプル [PowerPointVBA CreateObject("PowerPoint.Application")]・・・パワポをVBA

    AJYA
    AJYA 2011/01/07
    unionの使い方
  • SQL入門その13 - <SELECT 文> UNION/UNION ALL <SELECT 文>による検索結果の結合 - データベース入門

    Newest Top10 WWW SQL Designer - ブラウザーからデータベース・SQL設計ができるすごいツール - 11/11 22:10 MySQLWindowsサービスへの登録と解除 - 09/16 11:32 MySQLOracleなどのデータベースのページング処理 - 09/08 18:29 MySQLのバージョンの調べ方 - 09/06 01:05 tnsnames.oraの書き方 - 08/25 15:08 MySQLのデータフォルダの変更 - 07/10 15:56 Datastream Pro - フリー・データベース管理ツール - 06/23 13:40 CoolSQL - 高機能フリーなデータベース管理ツール - 06/23 10:23 Oracle日付型/文字列データ型の変換 | TO_DATE/TO_TIMESTAMP/TO_CHAR使い方 - 0

    AJYA
    AJYA 2011/01/07
    unionの使い方
  • SELECT文を統合する「UNION」

    SELECT文の統合「UNION」 今回は、問い合わせの統合(UNION)と、NULLに関連するトピックを解説し、SELECT文の最後の回とします。 UNION句を使用すると、これまでに使用してきたSQL文の結果を統合して、1つの結果とすることができます。これは、四半期ごとの売り上げデータを別のテーブルに持っている場合に、集計した結果を1つの表として参照したい場合など、複数の問い合わせ結果のマージを実施したい場合に役立ちます。 今回は、製品ごとに付けられた単価のパターンをすべて洗い出す、というSQL文を作成してみましょう。製品の単価は、製品マスターテーブル(Products)に基となる単価が保存されています。また、取引ごとに製品の単価を決定しているので、注文の明細テーブル(Order Details)にも、その取引における製品の単価が登録されています。これらの2つのテーブルからの別々の問

    SELECT文を統合する「UNION」
    AJYA
    AJYA 2011/01/07
    unionの使い方
  • 第3回 SQL流条件分岐(3) 表頭の複雑な集計 | gihyo.jp

    これも、リスト7のクエリを簡単に修正するだけで対応できます(リスト8⁠)⁠。 リスト8 表頭:年齢階級・性別、表側:部署(小計・合計あり) SELECT dept, COUNT(*), SUM(CASE WHEN age <= 30 THEN 1 ELSE 0 END) AS "若手(計)", SUM(CASE WHEN age <= 30 AND sex = '男' THEN 1 ELSE 0 END) AS "若手(男)", SUM(CASE WHEN age <= 30 AND sex = '女' THEN 1 ELSE 0 END) AS "若手(女)", SUM(CASE WHEN age >= 31 THEN 1 ELSE 0 END) AS "ベテラン(計)", SUM(CASE WHEN age >= 31 AND sex = '男' THEN 1 ELSE 0 END)

    第3回 SQL流条件分岐(3) 表頭の複雑な集計 | gihyo.jp
    AJYA
    AJYA 2011/01/06