最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (5)集合指向と手続き型 ミック 2010-05-28 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (4)OLAP関数と集約関数を組み合わせる ミック 2010-05-27
第6回SQL流行間比較(2) 直近、直近の1つ前、そのまた1つ前… ミック 2009-05-19
図1 テーブルのレイアウト 図2 リスト1の実行結果 cust_id | seq | price --------+-----+------- A | 1 | 500 B | 5 | 100 C | 10 | 600 D | 3 | 2000 リスト1 サブクエリ・パラノイア 患者1号 SELECT R1.cust_id, R1.seq, R1.price FROMReceiptsR1 (※) INNER JOIN (SELECT cust_id, MIN(seq) AS min_seq FROMReceipts ※ GROUP BY cust_id) R2 ON R1.cust_id = R2.cust_id AND R1.seq = R2.min_seq; ※ 同一テーブルを結合する自己結合 さてワイリー、お前ならどうする。 ええっ、ちょっと待ってください。整理します。このReceip
SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基本的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの
Ruby Sequel is a lightweight database toolkit for Ruby.Sequel provides thread safety, connection pooling and a concise DSL for constructing database queries and table schemas. Sequel also includes a lightweight but comprehensive ORM layer for mapping records to Ruby objects and handling associated records. Sequel supports advanced database features such as prepared statements, bound variables, mas
A Book For DevelopersSQL performance books are tomes. Hundreds of pages filled with knowledge… …not relevant to developers. SQL Performance Explained focuses on what developers need to know. Just 200 pages… …yet covering all major databases. (PayPal, global free shipping) Remove Paperback also available at Amazon.com. (paperback only, paid link) “This is the best book on indexes that currently exi
テーブルの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。 こんなの使いません。 ブクマ用画像。
インジェクション(injection)の意味は、内部に何かを注入することです。 そして、WEB脆弱性のインジェクションには、以下の3つがあります。 SQLインジェクション OSコマンドインジェクション HTTPヘッダインジェクション つまり、SQL、OSコマンド、HTTPヘッダの各々に、Webページから悪意のコマンドをインジェクションされることなのです。 ◆SQLインジェクション たとえば、$uidと$passhをWebページから入力(POST)される以下のSQLがあったとします。 $query = "SELECT * FROM usr WHERE uid = '$uid' AND pass = '$passh'"; $uidに「taro'--」と入力されたら、以下のように展開されます。 $query = "SELECT * FROM usr WHERE uid = 'taro'--' A
SQLインジェクションについて書くときに以下のメッセージを必ず含めて欲しいです。 単にプリペアドステートメントを使え 絶対に文字列結合でSQLを構築しようとしてはいけない IPAの「安全なSQLの呼び出し方」を読むこと なんでこんなことを書くかというと、同僚が献本されてた「プロになるためのWeb技術入門」なる本のSQLインジェクションの項で、SQLインジェクションの対策として以下のように書いてあったからです*1。 a) 値をバリデーションする b) プリペアドステートメントを使う ダメです。間違っています。単に間違っているだけでなく救いがたく間違っています。正しいSQLインジェクション対策はこう書くべきです。 単にプリペアドステートメントを使え 文字列結合でSQLを構築するな イケてない本を書く人はなんで値のバリデーションをプリペアドステートメントよりも先に書くんですか?値のバリデーション
Ruby 言語を使い,リレーショナルデータベースを扱うプログラムを簡単に書くことが出来ます. この Web ページでは,組み込み型のリレーショナルデータベース管理システム SQLite3 を使うことにします. この Web ページでは,Ruby プログラムの中に SQL プログラムを埋め込み,SQLite3 上で動かします. そのための方法はいろいろありますが,ここでは,Ruby 用の sqlite3-ruby パッケージを使うことにします.JRuby では sqlite3-ruby パッケージは動かない (2009/11 時点) みたいなので,JRuby を使いたい人は,この Web ページを参考にしないこと. Ruby の中に埋め込まれた SQL を用いたテーブル定義 Ruby の中に埋め込まれた SQL を用いたテーブルへの行の挿入 Ruby の中に埋め込まれた SQL を用いた問い
元マイクロソフトのSQL Server開発チームの一員であり、その後マイクロソフトのデータセンターのアーキテクトとして活躍。昨年アマゾンに移籍して、現在はAmazon Web Servicesの上級エンジニアであるJames Hamilton氏が、自身のブログの「One Size Does Not Fit All」というエントリで、リレーショナルデータベースだけにとどまらない幅広いデータベースの種類を4つに分類して紹介しています。 4つの種類とは「機能優先」「スケーラビリティ優先」「シンプル」「目的別」です。 Hamilton氏は、アマゾンがAmazonクラウドでMySQLのサービスを開始したところ、以前から提供していたキーバリュー型データストアの「SimpleDB」は終了するのではないかと心配する声があったことを挙げ、 I can understand why some might co
補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブ、はてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2009年9月24日に公開されたもので、当時の徳丸の考えを示すものを、基本的に内容を変更せずにそのまま転載するものです。 補足終わり このエントリでは、SQLにおいて「暗黙の型変換」を使うべきでない理由として、具体的な「ワナ」をいくつか紹介します。 数値項目に対するSQLインジェクション対策のまとめにて説明したように、RDBの数値型の列に対してSQLインジェクション対策をする方法として、以下の三種類が知られています。 バインド機構を用いる パラメータの数値としての妥当性確認を行う パラメータを文字列リテラルとしてエスケープする このうち、方法3を使うべきでない説明の補足です。具体的には、方法3には、「暗黙の型変換」が発生しますが、それが思わ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く