タグ

sqlに関するk-holyのブックマーク (29)

  • リレーショナル・データベースの世界

    序文 私の仕事は、DBエンジニアです。といっても別に望んでデータベースの世界へきたわけではなく、当初、私はこの分野が面白くありませんでした。「Web系は花形、データベースは日陰」という言葉も囁かれていました。今でも囁かれているかもしれません。 ですが、しばらくデータベースを触っているうちに、私はこの世界にとても興味深いテーマが多くあることを知りました。なぜもっと早く気づかなかったのか、後悔することしきりです。 もちろん、自分の不明が最大の原因ですが、この世界に足を踏み入れた当時、先生も、導きの書となる入門書もなかったことも事実です。 今でこそバイブルと仰ぐ『プログラマのためのSQL 第2版』も新入社員には敷居が高すぎました (2015年2月追記:その後、自分で第4版を訳出できたのだから、 人生は何があるか分からないものです)。 そこで、です。このサイトの目的は、データベースの世界に足を踏み

    k-holy
    k-holy 2024/02/29
    ミックさんの記事や著書でSQL力が一段階上がった人は大勢いると思う。自分はCASE式の使い方でかなりお世話になった。あと、RDBでツリー構造を扱う手法を日本語で解説している数少ないサイトだった。移転してたのね。
  • [SQL]データの縦持ち、横持ちを入れ替える | DevelopersIO

    はじめに 弊社のデータ分析案件において、RedshiftにてSQLを実行してデータを抽出することが増えてまいりました。SQLはデータの抽出には強力なのですが、JavaRubyなどのプログラミング言語と比べると独特であることも事実です。 例えば(PL/SQLなどは除いてですが) ループがない 変数に代入して次の処理に行くことができない メソッドやクラスに処理を分割できない などです。 これらの特徴からSQLでデータ抽出を行う為には、JavaRubyなどとは異なった手法を取る必要があります。そこで「JavaRubyとかでは・・・というやり方でやるのだけど、SQLではどうやるのだろう」というケースについて、シリーズ形式で何回かに分けて取り上げたいと思います。 尚、SQLの基的な構文(select、join、group byなど)については説明しません。またデータベースの種類に関わらず使用

    [SQL]データの縦持ち、横持ちを入れ替える | DevelopersIO
    k-holy
    k-holy 2019/08/28
    ピボットテーブルとCROSS JOINで正規化。これが必要な時が来るとは…
  • SQL緊急救命室 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    SQL緊急救命室 記事一覧 | gihyo.jp
  • 時刻かつURLごとのアクセス数(ヒストグラム形式)を一気に集計するSQL - Qiita

    これを時刻ごとに区切って、◯時台だと/fooに何回、/baaに何回、アクセスがあったよーみたいなのを計算したい。 どう書きますか? 私の回答 要件によるんだけど、pathのパターンが数種類だけで決まっているなら、すごく簡単な1個のSQLで作れる。 ここではBigQueryの関数を使っているけれど、時刻の関数はどのRDBMSにもついてるだろうし、たぶん似たような発想で作れると思う。 SELECT UTC_USEC_TO_HOUR(created) AS period , SUM(path = '/foo') AS foo , SUM(path = '/baa') AS baa , SUM(path = '/moo') AS moo FROM logs WHERE created BETWEEN '2017-01-01' AND '2017-01-02' GROUP BY period ORD

    時刻かつURLごとのアクセス数(ヒストグラム形式)を一気に集計するSQL - Qiita
    k-holy
    k-holy 2017/01/16
    こういう時はいつもCASE式使ってたけど、SUM()だけでもいけるわけか
  • 同一グループの中で最大のレコードを取得する SQL を書く | Webシステム開発/教育ソリューションのタイムインターメディア

    +----+----------+------------+---------+ | id | group_id | updated_at | comment | +----+----------+------------+---------+ | 1 | 1 | 2013-12-01 | C | | 2 | 2 | 2013-12-01 | A | | 3 | 1 | 2013-12-02 | B | | 4 | 2 | 2013-11-30 | D | +----+----------+------------+---------+ CREATE TABLE sample_table ( id int(11) NOT NULL, group_id int(11) NOT NULL, updated_at date NOT NULL, comment varchar(60) NOT NU

    同一グループの中で最大のレコードを取得する SQL を書く | Webシステム開発/教育ソリューションのタイムインターメディア
    k-holy
    k-holy 2016/03/24
    MySQLでよく手こずるやつ
  • グループ内の上位 N 件を抽出する SQL がうまく書けない - ngyukiの日記

    この記事には続きがあります グループ内の上位 N 件を抽出する SQL はストアドでいいんじゃない? - ngの日記 MySQL で簡単に出来そうで出来ない SQL に「グループ内の上位 N 件を抽出する SQL」があります。年に 1 回ぐらいこの問題について考え、毎回同じ結論になり「あれー去年も同じこと考えた気がするなー」となっているので、来年も同じことを考えるであろう自分に向けてメモを残しておきます。 なお、この内容は MySQL 5.5.19 で試しています*1。 (2012/07/26 追記:テストデータを増やした、users の name が抽出されていないのを修正) テストデータ drop table if exists groups; drop table if exists users; create table groups ( gid int not null prim

    グループ内の上位 N 件を抽出する SQL がうまく書けない - ngyukiの日記
  • SQLのインデックスとそのチューニングについてのオンラインブック

    開発者向けのSQLインデックス解説サイト、管理についての間違いない知識を提供します。 インデックスは開発時には忘れられがちである一方で、非常に効果的なSQLのチューニング方法です。Use The Index, Lukeでは、HibernateなどのORMツールの解説にとどまらず、SQLのインデックスについて基礎から説明します。 Use The Index, LukeはSQLパフォーマンス詳解のWeb上の無料版です。サイトを気に入って頂けたら、ぜひ書籍も購入してみて下さい。また、このサイトの運営をサポートする様々なグッズも販売しています。 MySQLOracleSQL ServerなどにおけるSQLのインデックスUse The Index, Lukeでは、ベンダにとらわれないインデックスの説明を心がけています。製品特有の事柄については、以下のような表示をしています。 DB2Use The

    SQLのインデックスとそのチューニングについてのオンラインブック
  • Squel.js - SQL query string builder for Javascript

    Squel.js - lightweight Javascript library for building SQL query strings. - usable with node.js and in the browser. - well tested. Installation Node.js npm install squel Once done you can use require to access the API: var squel = require("squel"); Bower bower install squel Browser Include the following within your HTML body section, near the bottom: <script type="text/javascript" src="/your/path/

  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
    k-holy
    k-holy 2015/07/13
  • SQL Injectionシグネチャの更新 - 2015-05-07 - T.Teradaの日記

    気がつけば3年ぶりの日記更新となりました。 相変わらずWeb/スマホ等のセキュリティは続けてます。 そろそろバイナリもやろうかとも思い、IDA Proを購入してみました。 購入に際してはKinugawaさんの記事を参考にさせてもらいました。 ところで、最後に自作検査ツールについて書いてから6年ほど経ちました。 その間に細々とですがシグネチャの追加や変更を行ってきました。 またこのGW前後にも変更を加えましたので、それについて書こうと思います。 まずはSQL Injectionのシグネチャを取り上げます。 6年前の関連するエントリはこちらです。 2009-05-31 T.Teradaの日記 | 自作検査ツール - SQLインジェクション編 6年間に行われた変更の目的は、正確性と安全性の向上です。 正確性の向上は、False Positive/False Negativeの両方を減らすことを目

    SQL Injectionシグネチャの更新 - 2015-05-07 - T.Teradaの日記
  • The annotated table of contents

    前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検

    The annotated table of contents
  • エロゲーマーのためのSQL -エロゲーマーのためのSQL-

    SQLはデータベースからデータを抽出したりするための言語です。 この文書は、ErogameScapeのデータベースからSELECTを使って自由自在にデータを取得できるようになることを目標にします。 エロゲーをやりはじめる大学生くらいのときに、大学の講義でデータベースを学んで、退屈だなーと思った時に、ErogameScapeでSQLを学ぶことで、少しでもSQLに興味を持って、自身でデータを加工することを学習して頂けると幸いです。 ※私の大学のリレーショナルデータベースの授業では、自分の身の回りの何かをER図に落とし込んで、DBを設計し、PostgreSQLに実装し、実際にデータを入力してSELECTしてみるところまでをやりました。 ER図という概念を学んだとき「ああ、これは面白い」と思いました。 先生はこう言ったのです。 「ER図に落とし込むと、思いもよらなかったことが分かる。」と。 当時、

    k-holy
    k-holy 2014/01/07
  • 間違いだらけのSQL識別子エスケープ

    これから3回連載の予定で、SQL識別子のエスケープの問題について記事を書きます。SQL識別子のエスケープについてはあまり解説記事などがなく、エンジニア間で十分な合意がないような気がしますので、これらの記事が議論のきっかけになれば幸いです。 3回の予定は以下のとおりです。 間違いだらけのSQL識別子エスケープ(稿) SQL識別子エスケープのバグの事例 SQL識別子は結局どうすればよいか ということで、まずはSQL識別子のエスケープの失敗例について説明します。この失敗例はあくまで説明のために作ったもので、実際のものではありません。また、想定が「ありえない」と思われるかもしれませんが、意図的なものですのでご容赦いただければと思います。また、「間違いだらけの」というタイトルは、今回の題材が間違いだらけという意味であり、巷のSQL呼び出しがそうであるという意味ではありません。稿に登場する人物と団

  • SQLアンチパターン - ナイーブツリー

    社内勉強会資料 追記: 2013-10-31 ついったで指摘( https://twitter.com/akuraru/status/395822183777202176 )を受けたので入れ子集合のノード追加の説明の所を修正しました。

    SQLアンチパターン - ナイーブツリー
    k-holy
    k-holy 2013/10/31
    経路列挙モデルは「ジェイウォーク」なるほど確かに
  • 「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して

    SQLの「相関サブクエリ」がわかれば・・・ 巨大なSQLが,迷わずに読めるようになる。 「関数」のような,便利なサブクエリを書けるようになる。 以下では, 「相関サブクエリ」とは何か? 普通のサブクエリ(非相関サブクエリ)やJOIN操作とは何が違うのか? 多重にネストされた,巨大なSQLの読み方は? という点を論じる。 サンプルデータ,および全体の方針 (1)サブクエリ無しでJOIN (2)INで非相関サブクエリ (2)の補足:サブクエリを「関数」と考えてみよう (3)EXISTSで相関サブクエリ 他のサンプル 巨大SQLの読み方 サンプルデータ,および全体の方針 まず,相関サブクエリの説明のために,以下のようなテーブルを例として取り上げる。 table1が,普通のデータ table2が,マスタデータ(ホワイトリスト) 「マスタに一致しないレコードをはじく」という操作をしたい。 方法は3パ

    「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して
    k-holy
    k-holy 2012/12/13
  • 「A5:SQL Mk-2」でER図とテーブル定義書を作成 - TATSUNET

  • A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール

    A5:SQL Mk-2は複雑化するデータベース開発を支援するために開発されたフリーのSQL開発ツールです。 高機能かつ軽量で、使い方が分かりやすいことを目標に開発されています。 SQLを実行したり、テーブルを編集するほかに、SQLの実行計画を取得したり、ER図を作成したりすることが出来ます。 特徴・機能 OCI接続・直接接続・ADOまたはODBCを介したDBへの接続 Oracle DatabaseはOCI経由の接続・直接接続が出来ます。 PostgreSQLMySQLは直接接続が出来ます。 Microsoft SQL Serverは、OLE DBプロバイダを直接呼び出した接続ができます。 IBM DB2は、ODBCドライバを直接呼び出した接続ができます。 その他のデータベースは、ADOまたはODBCを利用して接続します。 Oracle, PostgreSQL, MySQLは、A5:SQL

    k-holy
    k-holy 2012/03/16
    実DBからER図を生成、ER図からDDLを生成、ER図からエンティティ定義書をExcel/HTML出力。素晴らしい!!
  • FROM句とWHERE句 - SQLer 生島勘富 のブログ

    SQLが分からないという人は、文法を理解しようとしてしまっていることが多い。ですが、私は文法解説は極力やりません。SQLは全体を把握してイメージでとらえないとまっとうに書けないからです。 SQLのSELECTは次の順で処理されます。 FROM・WHERE句の中のサブクエリ FROM・WHERE句(WHERE句の中の相関サブクエリ) GROUP BY句 HAVING句の中のサブクエリ HAVING句(HAVING句の中の相関サブクエリ) SELECT句 ORDER BY句 SQLが苦手だという人のほとんどは、最初に処理されるFROM句・WHERE句が理解できていません。SQLの基礎はFROM句とWHERE句で、これが理解できるだけで7〜8割できたのも同じですので、しっかりと身につけてください。 まずはイメージから TABLE_A と TABLE_B をそれぞれ B_ID と ID で結合する

    FROM句とWHERE句 - SQLer 生島勘富 のブログ
    k-holy
    k-holy 2012/03/12
    JOINからSQLを理解するためのいい記事。ここから自己結合とCASE式へ
  • ぷくちー×blog: RDBで階層構造を表現する方法(の実装)

    2011-10-15 RDBで階層構造を表現する方法(の実装) 前回はRDBで階層構造を表現する方法として関係データモデルと入れ子集合モデルの考え方を紹介しました。今回はその入れ子集合モデルを操作するための実装(SQL)を見ていきます。また、ここに記載する実装はみんなのフットサル(フットサル検索コート)で採用している実装で、独自に改良した点を含みます。ので少し注意です。 テーブル定義 まずはテーブル定義から見ていきましょう。次のテーブルを使ってディレクトリ構造を表現します。関係テーブルが存在しないので1テーブルです。 テーブル定義 ディレクトリID 左位置 右位置 階層レベル root 1 2 0 CREATE TABLE DIRECTORY ( DIRECTORY_ID varchar(100) , L int , R int , LEVEL int , PRIMARY KEY (

  • 第6回 SQLで木構造を扱う~入れ子区間モデル (1)もしも無限の資源があったなら | gihyo.jp

    はじめに 前回では、入れ子集合モデルという、リレーショナルデータベースで木構造を扱うための新しい方法論を紹介しました。このモデルは、RDBSQLと親和性の高い優れたものではあるのですが、挿入など更新時に、無関係のノードまで変更対象としなければならないのが大きな難点でした。 そこで今回は、上記の欠点を解消する進化版のモデルを紹介します。この方法を理解していく過程で、私たちはRDBと集合論の結び付きの深さを再確認することになります。 ふだんこの連載は、1回完結の読み切り形式なのですが、今回に限り、前号の内容を前提としています。未読の方は、前号を先に読むと理解が増すでしょう。 稼働環境 すべてのリレーショナルデータベース もしも無限の資源があったなら 座標に整数のみを使う場合の限界 入れ子集合モデルの大きな欠点は、ノードを挿入(追加)するときに、自分より「右側」にある無関係なノードをもっと右へ

    第6回 SQLで木構造を扱う~入れ子区間モデル (1)もしも無限の資源があったなら | gihyo.jp