タグ

SQLに関するuxoruのブックマーク (41)

  • データベース研修(データベース基礎編)【ミクシィ22新卒技術研修】

    22新卒技術研修で実施したデータベース研修(データベース基礎編)の講義資料です。 動画:https://youtu.be/dseGQ2MZF1U SQL演習編 https://speakerdeck.com/mixi_engineers/2022-sql-training

    データベース研修(データベース基礎編)【ミクシィ22新卒技術研修】
  • ワンライナーで CSV に対して SQLite クエリを実行する - アルパカの徒然文

    One-liner for running queries against CSV files with SQLite という記事で紹介されていた、ワンライナーを使って CSV ファイルに対して SQL クエリを実行する方法。 $ sqlite3 :memory: -cmd '.mode csv' -cmd '.import taxi.csv taxi' \ 'SELECT passenger_count, COUNT(*), AVG(total_amount) FROM taxi GROUP BY passenger_count' ソース元に記述されてる通り、taxi.csvGitHub からダウンロードして試すことができる。7z で圧縮されていて解凍する必要がある。 SQLite は通常ストレージディスク(SSD とか)上に保存して利用するのが一般的だが、SQLite 側で用意さ

    ワンライナーで CSV に対して SQLite クエリを実行する - アルパカの徒然文
  • SQLアンチパターン簡単まとめ

    SQLアンチパターン」について、自分の勉強がてら内容を簡単にまとめました。 「とりあえずSQLは触れてWebアプリが作れる」「シンプルなアプリを実務で作ったことがある」くらいの人が読むととても勉強になると思います。 また、「現場での良くない設計」が詳細に言語化されているので、経験豊富な人でも新たな発見があると思います。 詳しく知りたい方は是非を買って実際に読んでみて欲しいです。 第一章 ジェイウォーク パターン 1カラムにコンマ区切りで値を入れて複数の紐付きを表現しようとする なぜダメか 検索しづらい 文字列カラムの文字数制限という暗黙の制約を受ける バリデーションかけられない 解決策 交差テーブルの作成 第二章 ナイーブツリー パターン 木構造を表現するとき、常に親のみに依存する(parent_idだけ持ってしまう) 隣接リスト なぜダメか 階層を深く掘ろうとするとそのぶんSQLをか

    SQLアンチパターン簡単まとめ
  • RDBのデータモデリング・テーブル設計の際に参考にしている考え方と資料

    はじめに タイトルのとおり、RDBのデータモデリング・テーブル設計を行う際に参考にしている考え方と関連資料をまとめました。 P.S. なんと記事内でいくつか参考として挙げさせてもらっている増田さん・かとじゅんさん・奥野さん・そーだいさんからコメントいただくことができました。 当にありがとうございます。 前提 RDBを採用するのは事実を無駄なく正しく記録するため 正規化、トランザクション、制約とデータ整合性 基的には始めに理想として集合論・リレーショナルモデルに基づいて正規化を考え(論理設計)、パフォーマンスなどの現実問題に対して折り合いをつけていく(物理設計) 制約を最大限利用する cf: ↑P91〜 ↑P.29,41 ↑P56〜 ↑5章 ↑P347~ 情報とデータ データ:単なる事実の値→これを永続化して蓄えるものがRDB 情報:データから生み出される意味や目的のあるもの→RDB

    RDBのデータモデリング・テーブル設計の際に参考にしている考え方と資料
  • ぐるぐるSQLは止めてくださいという話 - Qiita

    1. はじめに 仕事の都合で DB/SQL の性能問題を調査する機会が少なくありませんが(決してメインの仕事ではないですが)、その中でよく出くわす問題の1つに「ぐるぐるSQL」(もしくは「ぐるぐる系」)といわれる、ループで大量の SQL 文を呼び出しているものがあります。 感覚ですが、私の周りでは OLTP 系システムの DB/SQL の性能問題の原因の割合は以下のように感じています。 30%:ぐるぐる SQL 20%:SQL 文の書き方が不適切 15%:索引がない or 不適切 15%:パーズが遅い 10%:データモデルがおかしい 10%:その他 (大昔は2番目 / 3番目がほとんどだったのですが、最近はなぜがぐるぐる SQL が多い…) ぐるぐる SQL の実装では、ネットワーク通信や、アプリ側のクエリ生成 / 結果データ構築、DB 側のクエリ受信 / 結果送信といった、処理の質的で

    ぐるぐるSQLは止めてくださいという話 - Qiita
    uxoru
    uxoru 2021/01/19
    気持ちはわかるが可読性を考えた結果、プロジージャーでぐるぐるSQLを書かざるを得ない時とかあったなあ
  • SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita

    2020/9/30追記 記事は元々、「SQL記述者全員が理解すべきSELECT文の実行順序のお話」というタイトルで投稿しておりました。 しかし、知見のある方からのコメントと自分でも調べてみた結果、今回紹介している順序はあくまで論理的な処理順序であり、実行順序とは別物ということがわかりました。 誤った知識を布教してしまい申し訳ございません。 2020/9/30のタイミングで、記事のタイトルを「SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話」に変更させていただきました。 はじめに 「SQLといえば、エンジニアが扱うスキル」と思われがちですが、最近はマーケターや営業など、非エンジニアの方もSQLを使って、自らデータを抽出し分析する方が増えてきています。 またエンジニアの方でも、ORM任せでなんとなく理解している状態の方もいるのではないでしょうか? 今回は、そんな方々にこそ

    SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita
    uxoru
    uxoru 2020/09/22
  • SELECT文で本番環境を落としたお話 - Qiita

    (この記事は 地平線に行く とのマルチポストです) 番環境でやらかしちゃった人 Advent Calendarで、このパターンのやらかしはなかったのでキーボードを叩くことにしました。 番外編のつもりでお楽しみください。 この記事が、新たな障害発生を防ぐことにつながれば幸いです。 何をやったのか ある日、ちょっとした調査のために番データベースのデータを確認することになりました。 (個人情報が格納されているようなシステムではなかったので、必要であれば番データベースへのアクセスが許されていました) もしメンテナンスがあればそのタイミングでやればよかったのですが、直近では特に予定はないとのことでした。そのため、システムが動いている状態のまま作業をすることにしました。 ごく単純な SELECT を実行するだけのつもりだったので、システムに影響がないと判断したためです。 その際、万が一コピペをミ

    SELECT文で本番環境を落としたお話 - Qiita
  • ちょっと変わったSQLインジェクション

    IT編集部のセミナーに出てきました 3月2日に、@IT編集部主催の「@IT セキュリティソリューション Live! in Tokyo」にて、NTTデータ先端技術の辻さんとインターネットイニシアティブの根岸さんとともに、ランチセッションに出演してきました。辻さん&根岸さんのトークに絡ませてもらい、あっという間にランチセッションは楽しく終了しました。 事前の準備中はあれだけいろいろと話そうと思っていたのに、いざ始まると時間が足りないくらい盛り上がりました。ちょっと物足りないと思うくらいがいいのかもしれませんね。その会場で使った、2002年と2012年付近の出来事を示した資料がこちらです。 私はちょうど10年前の2002年にラックに入社しました。振り返ってみればあっという間の10年の社会人生活です。こうしてみると、いろんなインシデントがリアル世界とサイバーの世界で起こっていたんだなと懐かしくな

    ちょっと変わったSQLインジェクション
  • INとEXISTSの違い - SQLer 生島勘富 のブログ

    INとEXISTSは違います。 BETWEENと、不等号の組合わせなど、等価になる記述法はあるのですけれど、INとEXISTSは基的に同じ結果を返すことが可能ですが、意味は違います。 この違いが分かるにはインデックスを理解する必要がありますので、まずは、インデックスのイメージをつけてください。 まずはイメージ ここでも、まずはイメージで考えましょうね。 あなたは先輩の結婚式の司会を頼まれましたとします。イロイロと準備がありますが、余興で歌を歌う人がいるとき、予めカラオケの番号を調べておくでしょう。 事の間のBGMについては、ラブソングの入ったiPodをつないでランダムで流すことにしましょう。しかし、新郎新婦にとって(過去の恋愛経験上)都合の悪い曲があり、チェックしてはじいておくことにしました(なかなか、そつがない司会ですな)。 これらの処理をSQLにするならば……。 ■カラオケの番号を

    INとEXISTSの違い - SQLer 生島勘富 のブログ
  • アナログなSQLインジェクション手法がすごい件 - YomuKaku Memo

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

  • SQLiteのテストコードは4567万8000行! 本体のコードは6万7000行

    軽量なリレーショナルデータベースとして人気のSQLite。そのWebサイトに掲載されている「How SQLite Is Tested」の内容が、海外のプログラマなどのあいだで話題になっています。 3月に公開された最新バージョンのSQLite 3.6.23。体のソースコードは約6万7200行(67.2KSLOC、Kilo Source Lines of Code:空行やコメントを除いた行数)なのに対し、テストコードはなんと4567万8300行(45678.3KSLOC)だと紹介されているのです! これはテストコードが体の約679倍もの大きさだということになります。 100%のブランチカバレッジ SQLiteコアのライブラリをテストするテストコードとして、以下の3つが紹介されています。 TCL Tests TCL Testsはもっとも古いテストコードで、TCL scripting lang

    SQLiteのテストコードは4567万8000行! 本体のコードは6万7000行
  • 情報処理推進機構:情報セキュリティ:脆弱性対策 :「安全なSQLの呼び出し方」を公開

    IPA(独立行政法人情報処理推進機構、理事長:西垣 浩司)は、ウェブサイトを狙ったSQL(*1)インジェクション攻撃(*2)が継続していることから、ウェブアプリケーション(*3)の安全な実装方法を解説した資料「安全なSQLの呼び出し方」を2010年3月18日(木)からIPAのウェブサイトで公開しました。 URL:http://www.ipa.go.jp/security/vuln/websecurity.html 近年、ウェブサイトを狙った攻撃が継続しています。攻撃の実例として、IPAが無償で公開している「SQLインジェクション検出ツールiLogScanner(*4)」で、「脆弱性対策情報データベースJVN iPedia(*5)」のアクセスログを解析した事例を図1に示します。 図1を見ると、2008年頃から急増しているSQLインジェクション攻撃が全体の45%、ウェブサーバのパスワードファイ

    uxoru
    uxoru 2010/03/18
  • ダウンロードファイル一覧 - SQLUnit - OSDN

    ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので人であることの特定には利用できません。人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

    ダウンロードファイル一覧 - SQLUnit - OSDN
    uxoru
    uxoru 2009/12/25
  • Oracle

    のオラクル・コミュニティが一堂に会するプレミア・イベントにぜひご参加ください。新しいスキルを身に付け、業界エキスパートと交流し、複雑なビジネス課題を解決するためのソリューションを発見しましょう。

    uxoru
    uxoru 2009/11/20
    定数との外部結合について
  • テーブル設計は実装の後に!:ベンチャー社長で技術者で:エンジニアライフ

    株式会社ジーワンシステムの代表取締役。 新しいものを生み出して世の中をあっといわせたい。イノベーションってやつ起こせたらいいな。 「みんなが言ってる」は技術者が口にする言葉じゃないと書いてきました。 私が言ってることで、「みんな」とはおそらく真逆のことがあります。 それは「テーブル設計を(ユーザーインターフェイスの)実装の後に!」ということです。 「そんなことができるわけがない」とバカにされますが、そういう決め付けは思考停止ですよね? ともかく、眉に唾塗っていただいてけっこうですので、続きを読んでください。 一般的なシステムにおいて、一番手戻りが大きい(波及する箇所が多い)仕様変更はテーブル変更を伴うものです。下手糞な設計で、他に悪影響を与えるのもテーブル設計です。 逆に、テーブル設計が美しく合理的にできていれば、他の工程は非常に楽になります。 では、仕様変更を防ぎ、美しく合理的なテーブル

    テーブル設計は実装の後に!:ベンチャー社長で技術者で:エンジニアライフ
    uxoru
    uxoru 2009/10/20
    SQLを生成する作業を「実装」と見るか「設計」と見るか?今まで「実装」だと思ってたんだけど、「設計」とした方がしっくりくる。
  • SQLの暗黙の型変換はワナがいっぱい

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2009年9月24日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり このエントリでは、SQLにおいて「暗黙の型変換」を使うべきでない理由として、具体的な「ワナ」をいくつか紹介します。 数値項目に対するSQLインジェクション対策のまとめにて説明したように、RDBの数値型の列に対してSQLインジェクション対策をする方法として、以下の三種類が知られています。 バインド機構を用いる パラメータの数値としての妥当性確認を行う パラメータを文字列リテラルとしてエスケープする このうち、方法3を使うべきでない説明の補足です。具体的には、方法3には、「暗黙の型変換」が発生しますが、それが思わ

  • OracleのEXISTS句で質問です。 EXISTSの後のSELECT文で WHERE EXISTS (SELECT NULL ... WHERE EXISTS (SELECT 'X' ... WHERE EXISTS (SELECT 1 ... のようにいろ…

    OracleのEXISTS句で質問です。 EXISTSの後のSELECT文で WHERE EXISTS (SELECT NULL ... WHERE EXISTS (SELECT 'X' ... WHERE EXISTS (SELECT 1 ... のようにいろいろな書き方ができると思いますが、実際にどれが理想なのか説明しているサイトはありますか? Oracleのディクショナリビューは「exists (select null・・・」としているものが多いようなんですが・・・ http://otn.oracle.co.jp/forum/thread.jspa?threadID=8008219&tstart=4227

  • EREndia 基本設計ツールの詳細情報 : Vector ソフトを探す!

    IPA/SEC発注者ビューガイドに基づいてのモデリングツールで、ER図作成だけではなく、基設計機能も充実 ソフト詳細説明 今までの日IT業界には無料な基設計ツールがほとんどありません。特にビジネス用のフリーのデータベース設計ツールも指折り数えるほどわずかです。この原因をもとに、自分に合う基設計ツールを自分で開発するという発想が出ました。EREndiaは元々データベース設計時の支援ツールとして開発しましたが、今は基設計段階でより効率的に設計できるための支援ツールとして機能を高めました。一般的プロジェクトのプロセスは要件定義、基設計、詳細設計、製造、テスト、運用など、大枠で6ステップに分けられていますが、EREndiaその基設計と詳細設計フェーズで使用になります。エンドユーザからの要件定義に基づいて業務分析、画面設計、データモデリングの三つの機能リリースを計画しています。 ソフト

    uxoru
    uxoru 2009/06/18
    いろいろできそうなんだけど・・・使い方がよくわからない・・・
  • Amazon.co.jp: 達人に学ぶSQL徹底指南書: 初級者で終わりたくないあなたへ: ミック: 本

    Amazon.co.jp: 達人に学ぶSQL徹底指南書: 初級者で終わりたくないあなたへ: ミック: 本
  • プロフェッショナルとは:人生迷走中のキモヲタ君:So-net blog

    uxoru
    uxoru 2009/06/18
    ていうか、自分はもっとわかってない・・・困ったな・・・なんでDB理解できてないのに、DB設計せんといけんのだ・・・まずは、ER図つくらなきゃ・・・