タグ

SQLに関するt-murachiのブックマーク (21)

  • SQL滅ぶべし | ドクセル

    SQL • リレーショナルデータベースシステムと会話するための言語 • 1970年 Codd が RDB モデルと同時に提案 (Alpha言語) • 1974年 Chamberlin と Boyce が改良 • 元々は SEQUEL (Structured English Query Language) だったが、商標登録されていた • 読み方は エスキューエル とそのまま読む (Glliespie 2012) SQLSQL は目的別に 4つに分けられる • DCL (データ制御言語) GRANT とか • DDL (データ定義言語) CREATE TABLE とか • TCL (トランザクション制御言語) ROLLBACK とか • DML (データ操作言語) • INSERT, UPDATE, DELETE, SELECT • データ分析者にとって重要なのは SELECT 文

    SQL滅ぶべし | ドクセル
    t-murachi
    t-murachi 2024/05/07
    「集計するときは、結果は最後に考えたい」<ここがそもそも同意できなかった。求めたい目的がある、データソースとしては何がある、ここからそれを求めるにはどう選り分ける必要があるか… この順序そんなに不自然?
  • SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita

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

    SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita
    t-murachi
    t-murachi 2020/09/22
    LINQの書き方が割とこんな感じでむしろ分かりやすかったような…(´・ω・`)
  • ポケモンを題材に「SQLアンチパターン」を実践してみる - kanayamaのブログ

    @tkanayama_です。「SQLアンチパターン *1」 というを読みました。「ポケモンを題材に因果推論を実践してみる」のように、仮想的なストーリ上で実際に使ってみた感を出すことにより、自分の記憶に定着させることを狙います。 前提として、何をアンチパターンとするかは状況(ベンダーフリーである必要があるかどうか、どの程度の頻度で更新されるか・・・など)によって大きく異なるので、下記で紹介するアンチパターンは実は状況によっては問題にならないケースもあるかと思います。この投稿はあくまで「SQLアンチパターン」に忠実に従うことが目的です。 www.oreilly.co.jp 追記 登場人物 ストーリー フシギダネへの対応 ヤミカラスへの対応 ディグダへの対応 誤登録でポケモントレーナーになってしまったユーザーの削除 最後に 謝辞 追記 このブログを公開後、「外部キー制約はレコードロック周りのト

    ポケモンを題材に「SQLアンチパターン」を実践してみる - kanayamaのブログ
    t-murachi
    t-murachi 2020/07/26
    外部キーはアプリ開発ではとてもお世話になるけど、データ分析用途のデータウェアハウスではまずお目にかからない印象。数百万レコードのテーブルをまるっとコピーとかが茶飯事だったりするので…(´・ω・`)
  • SQL学習オンラインサービス「Start-SQL」をリリースしました - GoTheDistance

    こんな感じで、ブラウザでSQLを書いて環境構築一切不要でSQLを学べるというWebサービスです。 今北産業 SQL言語のみをサポートしています。 環境構築一切不要で、無料でお試し出来ます。 コンテンツには無料と有料の2つがあり、有料版は”買い切り”で、5000円です。全てのコンテンツがお楽しみ頂けます。 圧倒的にアカウントを買うニーズが強かった 2019年8月頃に「研修サービスのプラットフォームとして」告知をしたのですが、結論から言うと「講師や研修は別にいらん、アカウントだけ売ってくれ」が個人 / 法人共に、圧倒的に多かったため、会員登録/ログイン/マイページ/コンテンツ購入/パスワードリマインダなどの機能を別途付与して、Webサービスとしてリリースしました。 買い切りにした理由 コンテンツを定期的に追加する予定が全く無いためです。月額制にするならほっといてもコンテンツが増えていかねばなり

    SQL学習オンラインサービス「Start-SQL」をリリースしました - GoTheDistance
    t-murachi
    t-murachi 2019/12/25
    んー、最近は環境構築の敷居はむしろだいぶ下がってて、学習用途で求められるのはそれよりもそれなりにでかいサイズのサンプルデータなんだよね…(´・ω・`)
  • O/Rマッピングは百害あって一利なし! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? O/Rマッピングは百害あって一利なし! O/Rマッピング(Object-relational mapping)について、Wikipediaには以下のように書かれています。 データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。 O/Rマッピングを実現する仕組みを、O/Rマッパーと言います。(両者を区別しなくても私が言いたいことは伝わると思いますので、ORMと統一して記述します)(また、個人的な理由で、プログラミング初学者向けに語りかける口調にしていますが、初心者向けの記事というわけではあ

    O/Rマッピングは百害あって一利なし! - Qiita
    t-murachi
    t-murachi 2018/11/20
    こういうことを書く人にPHPerが多い印象…(フレームの元-1) / 型整合性をコンパイルレベルでチェックしようという考え方が根底に無いと中々有り難みが得られないものなのかもとは思うが…(´・ω・`)
  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • SQLデータベースに正しインデックスを作るのは 誰の役割?

    SQLのパフォーマンス問題は、SQLそのものと同じぐらいの歴史がある―― ある人は、SQLはそもそも遅いものだとすら言うかもしれません。これは、SQL歴史が始まった頃は正しかったかもしれませんが、今となっては全く 当てはまらないでしょう。にもかかわらず、SQLのパフォーマンス問題は今も一般的でよくあることです。どうしてそうなってしまうのでしょうか? SQL言語は、恐らく最も成功した第4世代言語(4GL)でしょう。その最大の利点は、「何を」と「どのように」 を分離できることです。SQL文は、どのようにそれを実行するかを記述せずに、単純に 何を必要としているかのみの記述になっています。以下のような例を考えてみましょう。 SELECT date_of_birth FROM employees WHERE last_name = 'WINAND'SQLのクエリは、データを要求する英語の文として読

    SQLデータベースに正しインデックスを作るのは 誰の役割?
    t-murachi
    t-murachi 2014/10/18
    ワシこれ読んだほうがいいな…
  • How do I use prepared statements in SQlite in Android?

    For prepared SQLite statements in Android there is SQLiteStatement. Prepared statements help you speed up performance (especially for statements that need to be executed multiple times) and also help avoid against injection attacks. See this article for a general discussion on prepared statements. SQLiteStatement is meant to be used with SQL statements that do not return multiple values. (That mea

    How do I use prepared statements in SQlite in Android?
    t-murachi
    t-murachi 2012/04/13
    db.compileStatement() [→ stat.bindXXX()]* → stat.execute() って感じか。 API Level1 でいける (http://bit.ly/HF35fm )。 / ていうかこの辺ちゃんと触れろよ… >ANDROID HACKS
  • MyTAP + my_prove + MySQL::Sandbox で快適 SQL Unit Testing - 日向夏特殊応援部隊

    MyTAP という MySQL 上で Test Anything Protocol を実現してしまうというプロダクトがあります。これと TAP::Parser::SourceHandler::MyTAP に付属している my_prove コマンドを使うとかなり簡単に SQL プログラミングでテストを行う事が出来ます。 また MySQL::Sandbox はだいぶ過去のエントリ*1 *2で紹介した事がありますが、異なる version の mysqld を色んな構成で簡単に作れてしまう優れものです。 今回はこれらを組み合わせてテストする方法について紹介しちゃいます。 MyTAP のインストール MySQL::Sandbox を使って作った sandbox が $HOME/sandboxes/rsandbox_5_1_58 にあるとします。 $ cd ~/sandboxes/rsandbox_

    MyTAP + my_prove + MySQL::Sandbox で快適 SQL Unit Testing - 日向夏特殊応援部隊
  • 何が正しいのかを考える際は、正しさの基準が必要 - ockeghem's blog

    大垣さんの寄稿記事「第44回 セキュリティ対策が確実に実施されない2つの理由:なぜPHPアプリにセキュリティホールが多いのか?|gihyo.jp … 技術評論社」のまとめにて、『最後に「何が正しいのか?」常に考えるようにしてください』と書かれています。この部分は、私への反論のようですので、このエントリで返答したいと思います。 大垣さんの主張 先にも述べたように、大垣さんはこのエントリの「まとめ」として以下のように書かれています。 最後に「何が正しいのか?」常に考えるようにしてください。 http://gihyo.jp/dev/serial/01/php-security/0044?page=2 この主張自体には私も大賛成です。大垣さんの記事は以下のように続きます。 例えば,SQL文を作成する場合にリテラル(パラメータ)を文字列としてエスケープすると浮動小数点型のデータが正しく処理されないデ

    何が正しいのかを考える際は、正しさの基準が必要 - ockeghem's blog
    t-murachi
    t-murachi 2011/12/04
    よーするにこのおおがきって人は、 W3C の勧告も読まずに「このサイトは IE6 で期待通りに表示される。そうでない firefox の実装が駄目なんだ」とか言っちゃう昔よくいたタイプの Web 制作者と同じ過ちを犯している訳だ罠。
  • 「SQLインジェクション対策」でGoogle検索して上位15記事を検証した - ockeghem's blog

    このエントリでは、ネット上で「SQLインジェクション対策」でGoogle検索した結果の上位15エントリを検証した結果を報告します。 SQLインジェクション脆弱性の対策は、既に「安全なSQLの呼び出し方」にファイナルアンサー(後述)を示していますが、まだこの文書を知らない人が多いだろうことと、やや上級者向けの文書であることから、まだ十分に実践されてはいないと思います。 この状況で、セキュリティのことをよく知らない人がSQLインジェクション対策しようとした場合の行動を予測してみると、かなりの割合の人がGoogle等で検索して対処方法を調べると思われます。そこで、以下のURLでSQLインジェクション対策方法を検索した結果の上位のエントリを検証してみようと思い立ちました。 http://www.google.co.jp/search?q=SQLインジェクション対策 どこまで調べるかですが、以前NH

    「SQLインジェクション対策」でGoogle検索して上位15記事を検証した - ockeghem's blog
    t-murachi
    t-murachi 2011/11/12
    Google検索結果の検証って面白いよね。如何に民意が情報の正確性を担保しないかを効率よく観察できるw / 駄目記事を笑いものにするためにリンクする人には是非 rel="nofollow" 属性を活用していただきたく…。
  • 今夜こそわかる安全なSQLの呼び出し方 ~ 高木浩光氏に聞いてみた

    「安全なSQLの呼び出し方」というSQLセキュリティに焦点を当てたドキュメントが、2010年3月にIPA(独立行政法人情報処理推進機構)から公開された。 これは2006年1月から提供されている、Webサイト開発者や運営者向けのセキュアWebサイト構築のための資料「安全なウェブサイトの作り方」の別冊として書かれたものである。「安全なウェブサイトの作り方」が92ページなのに対して、SQLインジェクションについてだけで40ページもの分量がある。なぜこんなに分厚いのだろうか。 このドキュメント作成に協力したという、独立行政法人産業技術総合研究所 情報セキュリティ研究センターの高木浩光氏にお話を伺うことができた。高木氏は個人ブログ「高木浩光@自宅の日記」で、セキュリティ関連の問題を追求する論客としても知られている。筆者も以前、この連載の「今夜わかるSQLインジェクション対策」の回(2006年11月

    今夜こそわかる安全なSQLの呼び出し方 ~ 高木浩光氏に聞いてみた
    t-murachi
    t-murachi 2010/06/29
    高木センセー的にほっとけない存在になっちゃったのね。ずるいなぁ…w
  • PHPでaddslashes()でエスケープしてもSQLインジェクションな穴

    ■data uri変換機 これはそそります。なるほどぉ。 data:text/html;charset=utf-8;base64,aHR0cDovL2xhLm1hLmxhL21pc2MvanMvZGF0YS5odG1s ■FirefoxでWindowsのクリップボードに値を設定する方法 上を踏まえて。 http://la.ma.la/misc/js/setclipboard_for_firefox.html http://la.ma.la/misc/js/setclipboard.txt Opera8.5でもいけてる気がします。 外部のサーバを利用せずにHTML単体でいけているのは、dataスキームが有効だからですね。IE7ではまだdataスキームって有効じゃないのでしたっけ? え?オーバーフローするかって?しないでしょ(笑) Firefoxでテキストをクリップボードにコピーする方法::最

    PHPでaddslashes()でエスケープしてもSQLインジェクションな穴
    t-murachi
    t-murachi 2010/02/20
    これ、今でもそのままなのかしら…?
  • 2009-09-14

    また、プログラマの賃金を安くしているのも、自分の能力に見合った給料を要求しないプログラマです。とくに、大手ソフトメーカーなどの若手の有能なプログラマで、年収700万円に匹敵する仕事を、年収400万円しかもらわずにやっている人がよくいます。そういう人は、労働力のダンピングをしています。ダンピングをするプログラマは、プログラマ全体の賃金を安くしてしまいます。 大手ソフトメーカーにいるエース級のプログラマは、さっさと自分の能力に見合った給料を出す外資系もしくはベンチャーに転職すべきです。また、有能なのに安い給料で働いているプログラマを見かけたら、見合った給料をもらえる会社に引き抜くべきです。有能なプログラマがどんどん転職していけば、日の大手ソフトメーカーは、人材がスカスカになるのを恐れて、有能なプログラマの賃金を、それに見合ったものにせざるを得なくなるはずです。 結局、プログラマを過酷な労働条

    2009-09-14
    t-murachi
    t-murachi 2009/09/14
    やべ、おいらも知らんかった>DISTINCT (汗
  • [雑記] LINQ to SQL 実践編

    では、Visual Studio を使ったデータベースの作成手順について説明します。 まず、Visual Studio の [ソリューションエクスプローラ] で、LinqToSqlTest プロジェクトを右クリックして、 [追加] → [新しい項目] を選びます。 ダイアログが開いたら、[カテゴリ] から [データ] → [サービスベースのデータベース] を選んで、 適当な名前をつけて(ここでは ComicDatabase.mdf とします) [追加] ボタンを押します。 できた mdf ファイルをソリューションエクスプローラ上でダブルクリックすると、 [サーバーエクスプローラ] が開くので、 サーバーエクスプローラ中の [テーブル] のところを右クリックして [新しいテーブルの追加] を行います。 上記の表1~4のようなテーブル定義を行ってください。 テーブル名は、右下に出ている [プロ

    [雑記] LINQ to SQL 実践編
    t-murachi
    t-murachi 2009/07/23
    うーーん (汗
  • Trac-ja 0.11.1で新規プロジェクトを作るとエラーになる - 総天然色頁

    Trac-jaをアップグレードした時に、既存のプロジェクトは問題なかったんですが、新規プロジェクトを作ると次のようなエラーが出てしまいました。(/path/to/projectは新規プロジェクトのパス) Creating and Initializing Project Initenv for '/path/to/project' failed. Failed to create environment. You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your applica

    Trac-ja 0.11.1で新規プロジェクトを作るとエラーになる - 総天然色頁
    t-murachi
    t-murachi 2009/02/22
    Python の Unicode 文字列とやらをよく知らず、結局日和って MySQL を選んでしまった…>ヲレ。 Python もあとでさらっておかないとなぁ…。
  • SQLで木と階層構造のデータを扱う――入れ子集合モデル

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

  • MySQLノウハウ

    いろいろなからメモってきたメモのメモ。出典を書いておくのを忘れた。思い出し次第補完するかも。 deleteのコストは高いので、無効化を示すフィールドを作ってupdateすべき slow query logに要注意 多くのエントリでほとんどのフィールドが同じ値を持つ場合はインデックスの効果が小さい →複合インデックスの効果が大きい 複合インデックスは指定の順番が大切。AとBという指定の場合、A単独でもインデックスの効果がある。逆は真でない。 インデックスが使われる場面は フィールド値を定数と比較するとき (where name = 'hogehoge') フィールド値でJOINするとき (where a.name = b.name) フィールド値の範囲を求めるとき (<,>,between) LIKE句が文字列から始まるとき (where name like 'hoge%') min(),

  • 窓の杜 - 【NEWS】SQL文をGUIで作成できるフリーのデータベース開発環境「黒猫 SQL Studio」

    GUIによるSQL文の作成など、さまざまな開発支援機能を備えるSQL開発環境「黒 SQL Studio」v1.1.7.413が6月4日に公開された。Windows 2000/XPに対応しており、個人使用・業務にかかわらずフリーソフトとして利用可能。現在作者のホームページからダウンロードできる。 「黒 SQL Studio」は、SQL文の作成やテストを行える汎用のデータベース開発環境。ソフト上からOLE DB接続またはODBCドライバに対応する各種データベースへ直接接続可能で、作成したSQL文を実際にテスト実行できる。画面は3ペイン構成で、左側には複数のSQLソースファイルを管理できるファイラー、中央には複数ファイルをタブで切り替えて表示できるエディター、右側には接続したデータベースの構造をツリーとリストで表示する“データベースエクスプローラ”が表示される。 SQL文の作成時は、さまざ