タグ

関連タグで絞り込む (207)

タグの絞り込みを解除

SQLに関するlocke-009のブックマーク (314)

  • 更新系SQLを手で打つときに気をつけていること

    WHERE条件をつけまくる UPDATE user SET age = 35 WHERE id = 1 AND name = 'Songmu' AND age = 34 idだけで絞れるけど name も付けてレビュワーフレンドリー 変更前の値も条件に含める 34 -> 35になることがわかる 間違えていた時も戻せる ユーザー操作とのコンフリクトを検知 万が一履歴から誤爆しても更新されない(可能性が高い) SETとWHEREを一行にまとめてるのは変なところで小指が滑るのが怖いため WHERE条件応用編 UPDATE user SET weapon_id = (SELECT id FROM weapon WHERE id = 100 AND name = '村正') WHERE id = 1 AND name = 'Songmu' AND weapon_id = (SELECT id FRO

  • CSV形式のデータをSQLを使って解析する方法 - プログラマの思索

    小川 明彦, 阪井 誠 : チケット駆動開発 日のソフトウェア開発の現場で生み出された「チケット駆動開発」という概念を、数多くの実例を元にモデル化・体系化を試みた最初の。 小川 明彦, 阪井 誠 : Redmineによるタスクマネジメント実践技法 Redmineによるチケット駆動開発の実践技法に関する最初のアジャイルなソフトウェア開発への適用方法、TestLinkによるテスト管理手法についても言及。 清水 吉男: 「派生開発」を成功させるプロセス改善の技術と極意 組込システム開発をベースとして、ソフトウェア開発特有のスタイルである派生開発、特にXDDPについて解説した世界でも稀な。既存製品を保守するのではなく継続的に機能追加していく昨今の開発では、派生開発特有の問題を意識しなければならない。XDDPはプロセス論だけでなく、要件定義などの上流工程の品質改善にも役立つので注意。 Le

    CSV形式のデータをSQLを使って解析する方法 - プログラマの思索
  • 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
  • 開発者のためのSQLパフォーマンスの全て

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

    開発者のためのSQLパフォーマンスの全て
  • SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!

    EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

    SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!
  • ScaleOut | Supership

    2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。件に関する詳細は、プレスリリースをご確認ください。 2024年4月1日より、Supership株式会社は親会社であるSupershipホールディングス株式会社に吸収合併されました。 合併に伴い、存続会社であるSupershipホールディングスは社名をSupershipに変更し、新たな経営体制を発足しました。 件に関する詳細は、プレスリリースをご確認ください。

    ScaleOut | Supership
  • 「NULLがUNIQUE制約に縛られないことを利用する」のは、正当なNULLの使い方 - 極北データモデリング

    リンク先は「UNIQUE INDEXを振った列に複数のNULLを投入できること利用して、ユニークであるべきユーザIDの使い回し(=退会したユーザのIDを新規ユーザに開放する)を実現する」という話。 アクティブなユーザ名はユニークにしたいけど削除されたユーザの情報は残したい。でも削除済みユーザテーブルは作りたくない とかいうワガママを発揮したい時にdeleteフラグに使えないかなーなんてだめですかそうですか。なんか他にまともな方法無いですか…。 MySQLのこういうのっていかがなもんか - 桝原翔市的博客 いやーこれはまともな方法じゃないでしょうか。 「NULLはNULLに一致しない」のが絶対の原則なのだから、NULLを使ってUNIQUE制約を回避するのは裏技でもwork-aroundでもない、正当なテクニックでしょう。 私はTM派なので実表上にnullを発生させる設計はしないが、Nulla

    「NULLがUNIQUE制約に縛られないことを利用する」のは、正当なNULLの使い方 - 極北データモデリング
  • ActiveRecordのSQLインジェクションパターン

    (Last Updated On: 2018年10月7日)Railsで多用されているActiveRecordのインジェクションパターンを簡単に紹介します。出典はrails-sqli.orgなのでより詳しい解説はこちらで確認してください。特に気をつける必要があると思われる物のみをピックアップしました。 Exists?メソッド User.exists? params[:user] params[:user]などの使い方は危険です。RailsPHPなどと同様にuser[]というパラメーターで配列化します。 ?user[]=1 が入力の場合、 SELECT 1 AS one FROM "users" WHERE (1) LIMIT 1 となり不正なクエリが実行されます。 Calculateメソッド CalculateメソッドはSQLの集約関数を実行するメソッドです。average、calcula

    ActiveRecordのSQLインジェクションパターン
  • OTN Japan マニュアル

    お探しのものを見つけるために、以下の項目を試してみてください。 キーワード検索のスペルを確認してください。 入力したキーワードの同義語を使用してください。たとえば、「ソフトウェア」の代わりに「アプリケーション」を試してみてください。 新しい検索を開始してください。

    OTN Japan マニュアル
  • 【SQL入門】group by,distinctどちらが性能がよいのか - 新卒から文系エンジニア→人材業界に転職した人のブログ

    【今回の内容】 前回は基的なSQLを備忘録で簡単にまとめていたけど、 【SQL入門】基的なSQLを目的別にまとめてみた - FOR SE その中に気になることがあったので調べたものをメモとして紹介します。 今の自分の現場では、重複行を絞り込む時に、「distinct」と「group by」を使う人それぞれいました。 distinctとgroup byは同じように重複行を消すという意味では どちらでもいいのかなーと思っていたけど、 疑問に思ったので少し調べてみました。 【疑問】distinctとgroup by は重複行を消す目的ならどちらを使ってもよいのか? 【結論】 結果としてはどちらも重複行を消すという意味では同じらしい。 だが、一般的にgroup byは集合関数(sumとかcountとか)と一緒に使うので、 そもそもの目的用途が違うのではという話があった。 また、どちらが性能が良

    【SQL入門】group by,distinctどちらが性能がよいのか - 新卒から文系エンジニア→人材業界に転職した人のブログ
  • Entity-Attribute-Value: SQL アンチパターン - ペンギンラボ Wiki

    Bill Karwin “SQL Antipatterns: Avoiding the Pitfalls of Database Programming” の読書メモ。 Jaywalking 目的 ある属性について、複数の値を持たせる。 アンチパターン : カンマ区切りリスト カンマ区切りで複数の値を 1 つの列に納める。 例では、特定の製品についての担当者を複数設定するのにカンマ区切りで、担当者のアカウントIDを記述している。 create table products ( product_id integer, product_name varchar(1000), acount_id varchar(100), -- comma separated list -- ... ); insert into products (product_id, product_name, accou

  • 初級〜中級者のためのSQL特訓 - 忘れないようにメモっとく

    ほぼほぼ初心者でSQLの練習がしたいっていう人、知識の再確認をしたい人にオススメのサイト。 SQLZOO ブラウザ上で動作するので、めんどくさい環境設定もなし。 データベースも、MySQLOracleSQL Server、Postgre、Ingres、DB2から選べる。 簡単なSELECT文から始まって、SUMやCOUNTみたいな基的な関数の問題や、JOINを使ったちょっと難しめの構文もある。 実行環境付きのリファレンスもあるのがよい!(超便利!)

    初級〜中級者のためのSQL特訓 - 忘れないようにメモっとく
  • 筑波大学でデータベースの話をしてきました - kuenishi's blog

    筑波大学の川島先生に呼ばれて木、金と情報システム特別講義Dというやつに参加してきた。こんなことになるとは思っていなかったが、あろうことか講師側で呼ばれてしまい、思えば遠くへ来たものだと感慨深い。フリは「RiakとNoSQLの話をしてもらえたら」という非常に自由度の高い内容なので、せっかくなので僕の知っていることを全部詰め込んで話してやろうと思ったら10分延長してさらにスライド10枚分くらいを消化不良で終了という、みっともない感じになってしまった。かなり端折ってポイントだけ説明したので流れが分からず苦労した方も多いと思うが、まあ僕の性格なので許してほしい。データベースの講義をひと通り終えた院生レベルを想定してスライドを作ったので、もしかすると、わりと難しかったり分かりにくかったりするかもしれないので、わからないことがあったら適当に質問してください。 言いたかったことの流れを僕なりにまとめると

    筑波大学でデータベースの話をしてきました - kuenishi's blog
  • Oracle SQL文でヒント句が使用されない: DB チューニング Oracle SQLServer

    (10/17)消えない希望と終わらない夢 (02/28)フジテレビのゴリ押しは異常 (02/01)初期化パラメタで、インスタンスの再起動が必要か調べる方法 (12/30)DBMS_METADATA.GET_DDL 改行されない (10/05)Oracle 統計情報のリストア (09/01)Oracle SQL文でヒント句が使用されない (07/08)お疲れ様です (05/15)古き良き時代 F1 (05/09)VMware Server 共有フォルダ機能が使用できない (03/03)自業自得 (02/25)Oracleでexpdp/impdpを使ってみる (01/29)SQLが遅くなった… 統計情報のインポート (01/14)外国人参政権について反対する理由② (12/28)外国人参政権について反対する理由 (11/21)ASMの制御ファイルを冗長化 (Oracle) (09/28)Dec

  • 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 生島勘富 のブログ
  • エロゲーマーのためのSQL -エロゲーマーのためのSQL-

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

  • SQLインジェクション対策に正解はない

    最近、SQLインジェクションのネタが盛り上がってるようだ。下記のTogetterまとめあたりが震源地だろうか。 「プリペアードクエリが基だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ まとめを読んだ感想としては、「どちらの意見も間違ってはいない」というものだ。前提あるいは見方が異なるために、見解の相違が生じているだけのように思う。SQLインジェクションについては私も若干思うところがあるので意見を書いておこうと思う。 攻撃を防ぐのは難しいSQLインジェクションをはじめとするセキュリティ対策が難しいのは、ひとつでも穴があると致命的なダメージを受け得るということだ。「どうやって効率よくコードを書くか」とか「コードのメンテナンス性を高めるにはどう書くべきか」みたいな議論とは全く質が異なる議論が必要になっ

    SQLインジェクション対策に正解はない
  • SQLアンチパターン - ナイーブツリー

    より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ

    SQLアンチパターン - ナイーブツリー
  • Works - オプティマイザヒントを使用したパフォーマンスチューニング

    オプティマイザヒントとは、オプティマイザに対して、最適(※1)な実行計画を強制的に使わせるための機能(※2)です。 かつて、口さがない SQL Server 使いの間では「Oracle にあんなにヒントの種類があるのはオプティマイザがバカだからだ」と云ったご意見もありましたが、今や SQL Server のヒントもかなりの種類がありますw 最もよく使われるヒントのひとつに indexヒントがあります。 コストベースでカーディナリティも高いのに全表走査してしまう場合などに使われます。  以下のSQLを例に取ります。 select * from kemp e inner join kdept d on e.deptno = d.deptno; アプリケーション開発者が期待する実行計画は、以下の様なものであるとします。 ■ORACLE 実行計画 -------------------

  • ORDER BY のソート順を独自指定する | グリニッジ株式会社

    SQLでたまーに任意のソート順でデータ取得したい時があります。 たとえばサイズ S, M, L 順で取得したいなど。 そんな時は CASE文 を ORDER BY に入れます。 SELECT * FROM category ORDER BY CASE size WHEN 'S' THEN 1 ELSE 2 END, CASE size WHEN 'M' THEN 1 ELSE 2 END, CASE size WHEN 'L' THEN 1 ELSE 2 END, size

    ORDER BY のソート順を独自指定する | グリニッジ株式会社