タグ

SQLに関するrokujyouhitomaのブックマーク (25)

  • SQLを扱えなかったビジネス企画職のSQL修得記 - Qiita

    マンガボックスの機能開発の企画を担当している蛭田です。 今年の4月にビジネス職としてDeNAに新卒入社をしてマンガボックスに配属されたのですが、「全員自分でクエリを書いて効果測定や課題の洗い出しをしている」企画チームで、自分も円滑に業務を進めるためには最低限みるべき数値は自分で出せるようになっておかないと・・・という状況でした。 そんな訳で業務上SQLを自分で書くことが不可欠だったのですが、何をすれば必要な数値を出せるようになるのかがわからず、特段戦略もなく暗中模索状態だったので、できるようになるまで遠回りしたな、と感じています。 あくまで「あとから」振り返ったものなので体系的な方法論ではないですが、「企画をやる上での必要最低限のSQLスキル」の身につけ方にフォーカスした一つの事例として書こうと思います。 対象読者 数値的根拠をもって企画を進める必要性があるビジネス企画職、特に、半年前の僕

    SQLを扱えなかったビジネス企画職のSQL修得記 - Qiita
  • 【PostgreSQL】TimestampをDateに変換する - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    【PostgreSQL】TimestampをDateに変換する - Qiita
  • int、bigint、smallint、および tinyint (Transact-SQL) - SQL Server

    解説 Int データ型は、主要な整数データ型が SQL Serverです。 Bigint データ型が使用するための整数値でサポートされている範囲を超える可能性があるときに、 int データ型。 bigint 間に位置 smallmoney と int データ型の優先順位表でします。 関数を返します。 bigint 、パラメーター式が場合にのみ、 bigint データ型。 SQL Server では、他の整数データ型 (tinyint、 smallint、および int) が自動的に bigintに昇格されることはありません。 変換とパラメーター化 +、-、*、/、または%算術演算子を使用して、int、smallint の暗黙的または明示的な変換を実行する場合 tinyint、または bigint float、real、decimal または numeric データ型に対する定数値は、SQL

    int、bigint、smallint、および tinyint (Transact-SQL) - SQL Server
  • MySQLのクエリの良し悪しはrows_examinedで判断する - かみぽわーる

    仕事やらなんやらでMySQLのクエリの良し悪しを判断する必要があるとき、EXPLAINの内容だけだとどのぐらい良くなったり悪くなったのか分からないので SET long_query_time = 0; してrows_examined (そのクエリでrows_sent行の結果を返すために何行に触ったのか)も一緒に提示するようにしている(少なくともMySQL 5.7時点ではrows_examinedはslow_query_logでしか確認できないはずperformance_schemaが有効ならevents_statements_historyやその仲間たちで確認できるとのこと*1 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.9.6 パフォーマンススキーマステートメントイベントテーブル)。 例: 上の例のBeforeは、もともとDBAが書いた温かみのあるSQLでO

    MySQLのクエリの良し悪しはrows_examinedで判断する - かみぽわーる
  • SELECT構文:WHEREで検索条件を設定する - 第3章 SQL構文 - [SMART]

    比較演算子 比較演算子は、値の大小を比較し、その結果を返します。次の例はWHERE句で簡単でよく利用される条件式で、フィールドの値を指定して、それにマッチしたレコードだけを選択します。 SELECT * FROM customer WHERE id_c = 1; +------+--------------------------------------+-----+-----+ | id_c | fullname | age | sex | +------+--------------------------------------+-----+-----+ | 1 | エラ・フィッツジェラルド | 48 | 2 | +------+--------------------------------------+-----+-----+ 次の例では、[顧客ID(id_c)]フィールドの値が

    SELECT構文:WHEREで検索条件を設定する - 第3章 SQL構文 - [SMART]
  • Hot Chips 28 - Baiduのソフトウェア定義のSQLアクセラレータ

    Hot Chips 28において、Baidu(百度)のJian Ouyang氏がソフトウェア定義のSQLアクセラレータについて発表を行った。 ビジネスの規模が拡大し、データ量が増加するのに加えて、データを解析するアルゴリズムも複雑になるので、ビッグデータの処理に必要となる計算パワーは加速度的に伸びて行くという。このビッグデータの処理を効率的に行うため、Baiduはソフトウェア定義のアクセラレータを開発した。 Ouyang氏らの分析では、約40%のアナリティックの処理はSQLで記述されており、残りのものも、多くはSQLで書き直すことができる。この分析から、アナリティック用のソフトウェア定義のアクセラレータを作ることが解であると考えたという。 約40%のデータアナリティックはSQLで記述されており、残りの大部分もSQLで書き直せる。このため、ソフトウェア定義のデータアナリティックのアクセラレー

    Hot Chips 28 - Baiduのソフトウェア定義のSQLアクセラレータ
  • SQLアンチパターン 幻の第26章「とりあえず削除フラグ」

    SQLアンチパターン 26章「とりあえず削除フラグ」 2015/08/31 @ GMO Yours #ronsakucasual https://atnd.org/events/68902Read less

    SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
  • Time-based SQL Injectionは意外に実用的だった

    このエントリでは、Time-based SQLインジェクション、すなわち時間差を利用したSQLインジェクションが意外に実用的だったという報告をします。デモ映像ありです。 はじめに Time-based SQL Injectionという攻撃があります。これはブラインドSQLインジェクションの一種で、ある条件の場合に一定時間(例えば5秒)スリープし、そうでない時との応答時間の差で情報を盗もうというものです。1回のHTTPリクエストで1ビットの情報が得られるので、それを積み重ねることによって、いくらでも情報を盗めるはずです…理論的には。 しかし、「理屈はそうでも、時間が掛かりすぎるよね」ということで、深くは追っかけていませんでした。SQLインジェクションの検査には有効でも、悪用としての実用性はあまりないと考えていたのです。 きっかけ きっかけは、以下のYahoo!知恵袋に以下の質問です。 SQL

    Time-based SQL Injectionは意外に実用的だった
  • O/Rマッパーによるトラブルを未然に防ぐ

    1. O/R Mapper による トラブルを未然に防ぐ Makoto Kuwata <kwa@kuwata-lab.com> http://www.kuwata-lab.com/ PostgreSQLカンファレンス 2014 ver 1.1.0 2. copyright © 2014 kuwata-lab.com all rights reserved まえがき 現在、アプリケーション開発の現場では O/R Mapper (ORM) が普及しています。今後 も ORM を使った開発は、増えることはあっても減ることはないでしょう。 しかし ORM は、アプリケーション開発者にとっては便利でも、DB 管理者 (DBA) か らみたらトラブルの種でもあります。それが特にパフォーマンスに関する問題であるこ とが多いため、開発者と DBA が対立することも珍しくありません。 とはいえ、ORM によ

    O/Rマッパーによるトラブルを未然に防ぐ
    rokujyouhitoma
    rokujyouhitoma 2014/12/22
    >"「SQLのできる開発者」は金を出せば手に入る 札束で頬をひっぱたけばスキルのある開発者を囲えることは、GREEやDeNAやLINEが証明してくれました"
  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

    rokujyouhitoma
    rokujyouhitoma 2014/10/06
    SQL_CALC_FOUND_ROWS/(^o^)\
  • SQL CALC FOUND ROWSを使う - dondari

    環境 DBMS = MySQL 5ぐらい FOUND_ROWS 最後にSELECTした行数を取得するFOUND_ROWS()。 ページングする場合など、分母が欲しい場合があります。 たとえば100レコードあるけど、1ページに表示するデータは10レコードの場合。 普通に考えたら、10レコード取得するSELECTと、同じ条件でCOUNT(*)するSELECTを発行すると思います。 MySQLにはこういう時のためと言える機能があります。 実行例 SELECTを2回発行することに違いはないですが、スマートですよね。 SQL_CALC_FOUND_ROWS指定なし LIMIT 10しているので、FOUND_ROWS()も10を返却します。 mysql> SELECT * FROM tbl_name LIMIT 10; ----------------------------- 10 rows in

  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
  • SQLに依存することの危険性 ー 単体DBサーバでは終わらない時代の考え方 | 独り言v6

    ベンチャー社長で技術者で:ベンチャー社長で技術者で: オブジェクト指向言語で処理したら保守性が悪い!. というのを目にした。要するに「OO言語+RDBな組み合わせ」において、O\Rマッピングに頼らずにちゃんとSQLとストアドを書いた方がいい、と言うことである。 L.starは元々Java屋でそれからSQLに移ったので、未だに自分が両方をバックグラウンドに持つ人間だと思っている。O/Rマッピングのイ ンピーダンスミスマッチを解決する簡単な方法が実は無い、と言うぐらいには両方を理解している。だからこそ言いたいが、この文章、特定のDBが中央に鎮座していて、それがすべての中心になるような業務システムにおいては完全に正しい。ただし、元々そう言うシステムを念頭に置いて書かれた文章であるので、その点はちゃんと考えるべきだ。O/Rマッピングに頼り切って、SQLをきっちり書かない、ということをすると性能が出

  • かつて、私の隣にSQLの魔女がいた

    今日プロジェクトの打ち上げがあったのだが、とあるサプライズ……三ヶ月前に寿退社した先輩との再会に思わず涙ぐんでしまい、ひどくばつが悪い思いをしている。今も顔の火照りが抜けてくれない。アルコールは抜けたのに。彼女はかつてSQLの魔女と呼ばれていた。 今から遡ること一年前、私は辞令を貰い、二年目にして事業部ごと変わるという波乱をようやく乗り切って、業務系のSEの仕事内容、特にWebのアプリレイヤーについてOJT形式で学んでいた。そこで先生にあたる方として付いたのが、ちょうど手待ちだった先輩である。初めてお会いした時の先輩に対し、私は正直ちょっと物足りなく感じていた。 初日に行ったPCのセッティングでは、これやってと先輩から資料を渡されたのだが、外部にネットが繋がらない。先輩に相談して弄ってもらったのだけど繋がらず、今日は社内ネットで我慢して、と言われてから二日後、資料が古かったことが判明。 与

    かつて、私の隣にSQLの魔女がいた
  • SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?

    (PgDay2012発表資料) SQLにとって、なぜO/Rマッパーが重要かを説明した資料です。Read less

    SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
  • SQLを使ってCSVファイルからデータを抽出する方法 - Groovy + H2 データベース - なんとなくな Developer のメモ

    CSV ファイルからデータを抽出するのに SQL を使いたいケースがあると思いますが、RDB をセットアップして CSV ファイルをインポートしたりするのは非常に面倒です。 そこで、Groovy と H2 データベースを使って手軽に実施する方法をご紹介します。 必要な環境は以下の通りです。 Groovy 1.8.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20110702/ CSV ファイルの用意 今回は 駅データ.jp の駅情報 CSV ファイルからデータを抽出する事にします。 駅データ.jp のサイトから駅データの CSV ファイルをダウンロードし、都道府県マスターをマスターデータページの内容を元に作成しました。 m_station.csv(駅データ) m_pref.csv(都道府県マスター) なお、文字

    SQLを使ってCSVファイルからデータを抽出する方法 - Groovy + H2 データベース - なんとなくな Developer のメモ
    rokujyouhitoma
    rokujyouhitoma 2011/07/04
    へー。この発想はなかった。
  • アナログなSQLインジェクション手法がすごい件 - YomuKaku Memo

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

    rokujyouhitoma
    rokujyouhitoma 2011/04/21
    な・ん・だ・と??
  • 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記

    テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOINJOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。

    地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
    rokujyouhitoma
    rokujyouhitoma 2010/09/17
    納得。
  • ストアドを使って、Webスクレイピングをしよう! - moriyoshiの日記

    こんにちは、SQLを愛してやまないmoriyoshiです。 ストアドプロシージャは、一連のSQL文をサブルーチンのようにDBサーバに記録しておき、後からそれを呼び出すことができるようにする仕組みです。近代的なRDBMSには標準的に備わっている機能といえます。 制御構造などもSQL文で記述することができるので、結果的に、あらゆるロジックをSQLのみで記述することができます。手続き型プログラミングにどっぷり浸かった現場の方から愛用されていると言われています。 今回は、ストアドプロシージャの応用として、Webスクレイピングを行なってみましょう。Webスクレイピングとは、特定のWebサイトにアクセスし、そのページの内容 (HTML) を取得、解析し、必要な情報を取り出すという一連の操作を自動化することです。Webスクレイピングを効果的に活用すると、人間がブラウザに向かって単純作業を繰り返す必要がな

    ストアドを使って、Webスクレイピングをしよう! - moriyoshiの日記
    rokujyouhitoma
    rokujyouhitoma 2010/07/17
    いつもに増して変態すぎる。
  • Brainf*ck in SQL - ぐるぐる~

    Brainf*ck はチューリング完全らしいですよ。 Brainf*ck 自体に興味のある方は、Brainf*ck や Brainfuck - Wikipedia へどうぞ。 WITH -- 入力 Input(id, bf_program, stdin) AS ( -- Hello, World!と標準出力に出力するプログラム SELECT 0, ' >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++ ++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]> ++++++++[<++++>-]<+.[-]++++++++++.', '' -- hogeと標準出力に出力するプログラム UNION ALL

    Brainf*ck in SQL - ぐるぐる~
    rokujyouhitoma
    rokujyouhitoma 2010/07/16
    なにこれこわい。