タグ

SQLに関するChiseiのブックマーク (16)

  • 第9回 SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (2)相関サブクエリ | gihyo.jp

    SQLアタマアカデミー 第9回SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (2)相関サブクエリ 相関サブクエリ では次に、単純に会社全体で一番高齢の社員を抽出する代わりに、男女別に最高齢の社員を抽出することを考えます。 手続き型言語で解く場合 もしEmployeesテーブルがCSV(Comma Separated Values:カンマ区切り)や固定長といった、ただのフラットファイル[1]で、手続き型言語でこの問題を解くとすれば、次のようなアルゴリズムを使うことになるでしょう。 max_ageという整数型の変数を用意し、0で初期化する レコードを1行ずつ走査する カレントレコードのsexが「男」ならば、ageとmax_ageを比較し、ageのほうが大きければ、max_ageにageを代入する すべてのレコードについて走査したら、max_ageを男性の最高齢値として返

    第9回 SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (2)相関サブクエリ | gihyo.jp
    Chisei
    Chisei 2013/06/20
  • 第9回 SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (1)サブクエリ | gihyo.jp

    SQLアタマアカデミー 第9回SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (1)サブクエリ はじめに SQLを使い始めたとき、多くのプログラマが例外なく難儀するのが、SQLで制御構造をうまく書けないことです。ここで言う制御構造とは、平たく言えば条件分岐とループです。といっても別に、SQLに制御構造を書くための機能が備わっていないとか、貧弱というわけではありません。SQLでも、通常の手続き型言語と同等の制御構造を記述することができます。ただ、そのやり方が一風変わっているので、うまく「SQLアタマ」に切り替えられないと戸惑ってしまうのです。 そういう「普通の」プログラマやSEの違和感を軽減するための橋渡しをするのが、連載の目的の1つでもあるので、これまでにもSQLで制御構造を記述する方法については折に触れて取り上げてきました。しかし、条件分岐のためのCASE式に対し

    第9回 SQLでループ! 相関サブクエリの使い方~切れ過ぎるナイフにご用心~ (1)サブクエリ | gihyo.jp
    Chisei
    Chisei 2013/03/28
  • [SQL] 7. サブクエリ 1

    7.1. サブクエリの基 複数のクエリを組み合わせて、1つのクエリが生成した出力で、他のクエリの出力を制御することができます。少し分かりやすく言うと、クエリを入れ子にして、内側のクエリが値を生成し、それを外側のクエリの述語が評価して TRUE かどうか判断します。 次の図はサブクエリの最も標準的な形です。図では背景がオレンジ色の部分が内側のクエリで、ピンクの部分が外側のクエリということになります。内側のクエリで生成された値を外側のクエリが受け取り、WHERE 句で TRUE となるものについて、値を参照します。そして、内側のクエリのことをサブクエリといいます。 前の図からも予想がつくように、等号や不等号といった関係演算子をベースとする述語に使用するサブクエリは、必ず出力として 1行のみを生成するものでなければなりません。サブクエリが値をまったく生成しない場合、述語は UNKNOWN と評

    Chisei
    Chisei 2013/03/28
    読んだ
  • 交差テーブルを参照するテーブルの外部キー - iakioの日記

    3章 IDリクワイヤド - 3.5.3 自然キーと複合キーの活用 より 現実問題として、複合主キーがどのようにフレームワークでサポートされているか等については良く知りません。 1つ注意すべき点は、複合主キーを参照する外部キーもまた、列の組み合わせでなければならないことです。このため、従属テーブル側では同じ列定義が重複することになり、簡潔さを欠いてしまいます。 これは何を言っているのかというと、もし交差テーブルBugsProductsと1対多の関係となるテーブルがあった場合その外部キーをどうするかという話。 BugsProductsの主キーに疑似キーidを使っていれば、従属テーブル側の外部キーはBugsProducts(id)を参照すればよい。 CREATE TABLE BugsProducts ( id SERIAL PRIMARY KEY, bug_id BIGINT, product_

    交差テーブルを参照するテーブルの外部キー - iakioの日記
    Chisei
    Chisei 2013/03/23
    丁度気になっていた一文だったので参考になった。サロゲートキーと複合主キー、状況に応じて適切な設計を行う自信がない。
  • O'Reilly Japan - 『SQLアンチパターン』トークセッション開催決定! - Information from O'Reilly Japan

    発売以来早速の大反響をいただき、早くも重版決定の『SQLアンチパターン』。トークセッションの開催が決定しました! タイトルはその名も「データベースを巡る世代間闘争」。同書の監訳者であり、また親子でもいらっしゃる和田卓人・和田省二の両氏をお迎えして、監訳者親子の設計論議(データ中心設計とオブジェクト指向設計の間の世代間闘争)の再現を試みるという刺激的なセッションです。2013年2月21日(木)19時30分より、ジュンク堂書店池袋店にて開催されます。 以下、ジュンク堂書店さんによるイベント告知を転記します。 『SQLアンチパターン』(オライリー・ジャパン刊・オーム社発売) 刊行記念トークセッション データベースを巡る世代間闘争 和田卓人(監訳者・子)×和田省二 (監修者・父) ■日時:2013年2月21日(木)19時30分 ~ リレーショナルデータベースを中心に据えたシステム開発には、様々な

    Chisei
    Chisei 2013/02/02
  • [PHP] データベースに・・・・うわぁぁぁぁぁあ-ウンコード・マニア

    例外って何だろう。SQLってなんだろう。エラーとは。そして帰ってこない関数。 先人の知恵をすべて無に返す実装。 // DBに接続 $pdo = new PDO($dsn,$user,$password); $id = $_POST['id']; $data = getHogeData($pdo,$id); $smarty->assign('data',$data); $smarty->display(); function getHogeData(&$pdo,$id){ try { // データの取得 $sql = "SELECT * FROM hoge"; $stmt = $pdo->query($sql); while($data = $stmt->fetch()){ if($data['id'] == $id){ return $data; } } } catch(exception

    Chisei
    Chisei 2012/08/19
    じわじわくる。
  • ORMがアンチパターンである11の理由

    サンフランシスコのプログラマLaurie Voss氏が書いた見逃せない記事が賑わっています。近年のフレームワークやライブラリの定番中の定番ORマッパーが既にアンチパターンなのではというのが彼の主張です。この記事を書くきっかけになったのはこのツイートだそうです。 I cannot overstate the degree to which ORM is a dangerous antipattern. — Laurie Voss (@seldo) June 9, 2011 ORM が危険なアンチパターンだっていうのはどれだけ言っても言い過ぎることはない このツイートに対して各方面(ActiveRecord, Doctrine, Hibernate)から多くの(激しい)返信が寄せられて書かれたのが問題のエントリです。まずはアンチパターンとは何かの定義として下記の2つを挙げています。 当初は有益

    ORMがアンチパターンである11の理由
    Chisei
    Chisei 2012/08/16
    あるある。
  • SQLで木と階層構造のデータを扱う――入れ子集合モデル

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

    Chisei
    Chisei 2012/03/07
  • データベースの内部動作を知る

    SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの

    データベースの内部動作を知る
    Chisei
    Chisei 2011/07/03
    読んでみよ。
  • アナログなSQLインジェクション手法がすごい件 - YomuKaku Memo

    車のナンバープレートの上あたりにsql injection用の文字列を貼ってスピード違反検出用(?)のカメラに読み込ませ、電光掲示板に任意(と思われる)文字を出力する攻撃をしている人がいたようです。 画像を見ていただくことが早いです。 Tumblrで流れていた画像なので、ソースがわからないため、ひとまずそのまま転載します。 実際の出来事なのかフィクションなのかわかりませんが…。 日のNシステムとか、やはりこういう穴はキチッと塞いであるんでしょうか。

    Chisei
    Chisei 2011/05/12
    おもすれー
  • PostgreSQL関連情報

    PostgreSQLバイブル サポートページ サンプル SQLの実行 レプリケーション レプリケーションの設定 pgpool関連情報 pgpool-IIのセットアップ pgpool-II:レプリケーションモード pgpool-II:マスタスレーブモード Streaming Replication はじめに クイックスタート 機能一覧 仕組み memcached mcb: memcached benchmark tool pgmemcached Postgres-XC ver0.9.2クイックスタート gtmのJava版 gtmの多重化 並行プログラミング The Programmer's Guide to the Parallel World MySQL [MySQLの基礎知識] MySQLとは MySQLの概要 データベースシステムの構造 データベースシステムへのアクセス方法 ストレージ

    Chisei
    Chisei 2011/01/08
    分かりやすい。
  • O/R Mapper についてかんがえてみた

    元ネタ)http://d.hatena.ne.jp/tokuhirom/20110104/1294170319 昔良くORMを使うことのメリットは SQLを書かなくてよくなる。 つまりプログラマはSQL脳が低いからプログラマにSQLを書かせない。 プログラム中にSQLという別の概念がはいってくるとコードが読み難くなる。 バックエンドのRDBMSの差異を吸収してくれるからバックエンドを気にする必要がない。 さらに、バックエンドのRDBMSを簡単に取替え可能。 プログラマブルにSQLを組み立てしたい。 などと言われることが多いんじゃないでしょうかね。 個人的には最後の「プログラマブルにSQLを組み立てしたい」と言う要件以外は全部 間違っていると思います。 イカ全て自分の視点なだけなので違う意見もあるであろうことを承知で言い切ります。 SQLを書かなくてよくなる。つまりプログラマはSQL脳が低い

    Chisei
    Chisei 2011/01/06
    SQLは書きたい。
  • symfony - open-source PHP5 web framework

    Services Platform.sh for Symfony Best platform to deploy Symfony apps SymfonyInsight Automatic quality checks for your apps Symfony Certification Prove your knowledge and boost your career SensioLabs Professional services to help you with Symfony Blackfire Profile and monitor performance of your apps

    symfony - open-source PHP5 web framework
    Chisei
    Chisei 2010/07/06
    askeet tutorial
  • ウノウラボ Unoh Labs: ブラウザでER図が描ける「WWW SQL Designer」紹介

    miyakeです。皆さんドキュメントはしっかり書いていますか? 近頃のWeb界隈では、詳細仕様書的なものは作らずにスピーディーに開発を進めるケースも多いかも知れません。ドキュメント作成のコストは小さくありませんし、内容を最新に保つのも一苦労です。とは言え、複数の人間が関わるプロジェクトにはER図はあると嬉しいなと個人的には思います。 今日はそんなER図をブラウザ上で作成するアプリケーション「WWW SQL Designer」をご紹介します。 以下のスクリーンショットは、このアプリを実際に触って試せるlive DEMOのものです。 WWW SQL Designer posted by (C)フォト蔵 上部のメニューからテーブルやカラムを作ったり消したりして、テーブルをドラッグアンドドロップで配置、リレーションを同じくドラッグアンドドロップで設定、というのがおおまかな作業の流れになります。まず

  • 帰ってきたHAVING句:CodeZine

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

  • @IT:Windows TIPS -- How to:MSDEをセットアップする方法

    Microsoft SQL Server 2000 Desktop Engine(以下MSDE)」は、Microsoft SQL Server 2000のテクノロジをベースにして作られた無償版のデータベース・エンジンである。SQL Server 2000と比較すると、扱えるデータのサイズが少ないとかGUIベースの管理ツールが使えないなど、いくらか制限があるが、機能的にはSQL Server 2000と互換なので、無償版のMSDEで始めて、必要なら将来はSQL Serverに移行することで、より大規模なシステムへと展開することもできる。 SQL Server 2000 Desktop Engineのページ(マイクロソフト) ■SQL Server 2000とMSDEの差異 以下に、SQL ServerとMSDEの差について、簡単にまとめておく。 最大ファイル・サイズの制限――データベース・

  • 1