タグ

sqlに関するsuninのブックマーク (25)

  • 分析関数(ウインドウ関数)をわかりやすく説明してみた

    はじめに ちょっととっつきにくいけどとっても便利な分析関数について、なるべく分かりやすく説明してみようと思います。Oracleを対象にしていますが、他のDBでもたぶん似たようなものでしょう(無責任)。 まず分析関数とは何をするものか、ですが、一言で言うと集合関数と同じ集計動作をそれぞれの行に制限範囲で実行するものです。ここでいう集合関数とは、MAXやSUMやAVG等、GROUP BYと共に使い行をまとめるて集計計算する関数ですね。分析関数は集合関数と同様の計算をしますが、集合関数と違い行をまとめません。それぞれの行で集計計算し結果を返します。ここが集合関数との大きな違いです。 また、集合関数ではGROUP BYの同じカラム値をもつ全行を一つに集計しますが、分析関数では集計対象となる行の範囲を任意で指定できます。関数に続くOVER句でこの範囲指定を行います。集合関数と分析関数は基同じ名前な

    分析関数(ウインドウ関数)をわかりやすく説明してみた
    sunin
    sunin 2019/12/09
  • 新著が出ます:『達人に学ぶ SQL徹底指南書 第2版』 - ミックのブログ

    日、新著が発売となります。書の初版は処女作ということもあり、色々と書き手として未熟な部分も多く出てしまったなのですが、幸運にも長い期間読んでいただいたことでこのたび改訂版の刊行にこぎつけることが出来ました。 さすがに10年経過すると内容も古くなっており、多くのコードをリバイスしています。特に初版刊行時にはまだサポートが不十分だったウィンドウ関数が、現在では主要なDBMSではほぼ利用できるようになったことを受けて、全面的にこれを採用しました。これにより性能と表現力を両立させるモダンなSQLコーディングが可能になったので、ぜひ書でその素晴らしさを確認いていただければと思います。 以下に書の前書きを引用しますので、購入の際の参考にしてください。 書の初版が刊行されてから、10年が経過しました。筆者にとって、初版は初めて書いた、いわゆる処女作であり、自分の知見や文章がどのような受け取

    新著が出ます:『達人に学ぶ SQL徹底指南書 第2版』 - ミックのブログ
    sunin
    sunin 2018/10/11
    第1版を読んで相関サブクエリが使えるようになった。もし知らなかったらその後苦労していたはず。
  • よく使うpsqlの便利技10選

    1. メタコマンドとSQLを一緒に使う 実行例 2. SELECT結果の値だけを取得する 実行例 3. SQLSQLを作り実行 (9.6~) 実行例 4. サーバに応じて実行するSQLを変える (10~) 実行例 5. 忘れたDDLのシンタックスを確認する 実行例 6. SQLファイルの内容を一行ずつ確認しながら実行する 実行例 7. 特定のコマンドを定期的に実行したい 実行例 8. psqlを起動した時に実行されるコマンドを設定する 実行例 9. .psqlrcを一時的に使わない 実行例 10. SELECTの結果をCSV形式で出力 実行例 普段よく使っているpsqlで便利だと思う使い方を10個紹介します。運用で使うシェルスクリプトとかでもpsqlは使う事があると思うので、psql派でない人にも多少は役に立つはず。 特に最近のバージョンで追加された機能は、利用できるバージョンを記載して

  • SQLでデータベーステーブルの縦・横変換

    2006年07月10日 クエリを思いつかなかった子のために。これはあくまでヒントだぞ。 以降の例では Oracle9iリリース2で説明しています。 データベースのテーブルには、何故か無駄に横長のものがあったりします。 ホスト時代のデータセットイメージをそのままテーブルフォーマットにしちゃったようなやつですね。項目名に「FILLER1」とか名前がついている( ̄▽ ̄; こんなテーブルがあるとします。 SQL> DESC 売上ランキング横; 名前 NULL? 型 ---------------------------- -------- -------------------------- 売上年 VARCHAR2(4) 1位製品 VARCHAR2(10) 1位売上 NUMBER(5) 2位製品 VARCHAR2(10) 2位売上 NUMBER(5) 3位製品 VARCHAR2(10) 3位売上

    SQLでデータベーステーブルの縦・横変換
    sunin
    sunin 2015/07/21
  • SQLデータベースに正しインデックスを作るのは 誰の役割?

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

    SQLデータベースに正しインデックスを作るのは 誰の役割?
  • SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!

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

    SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!
  • 間違いだらけのSQL識別子エスケープ

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

    sunin
    sunin 2013/12/25
    分かりやすい。
  • 「SQLアンチパターン」。監訳者 和田卓人氏自身による書籍紹介

    アンチパターンに名前を付けることで、コンテキストを共有できて議論がしやすくなる。2月14日、15日に都内で開催されたイベント「Developers Summit 2013」、通称デブサミにおいて、書籍「SQLアンチパターン」の監訳をした和田卓人氏は書の意義をこう強調しました。 「SQLアンチパターン」は、データベースにおける設計からアプリケーションに関わるレイヤまで、開発者が陥りやすいミスや誤解に名前を付けたうえで原因と解決策を詳しく解説しています。 和田氏が指摘するように、これまでデータベースに関するデータ設計などのミスを指摘したり議論するには、その背景を共有するための面倒な説明が必要でした。SQLアンチパターンの登場は、そうした背景を暗黙のうちに共有する手段を与えてくれることになります。書はデータベース分野の古典になる資格を十分に備えているのではないでしょうか。 書籍の監訳者自身が

    「SQLアンチパターン」。監訳者 和田卓人氏自身による書籍紹介
    sunin
    sunin 2013/02/18
  • PDOの真の力を開放する - PHPでデータベースを扱う(3)

    ちょっと遅れましたが、シリーズの第3回です。前回までに論じた内容をふまえて、簡単な実装を示します。↓前回までの内容はこちら。 DAOの悪夢 - PHPでデータベースを扱う(1) - 泥のように ドメイン駆動設計という救世主 - PHPでデータベースを扱う(2) - 泥のように 題材 「記事にタグを設定できるブログ」みたいなシステムを考えてみます。ブログ記事を示すEntryテーブル、タグを表すTagテーブルの二つを用意しました。MySQL WorkbenchによるER図(鳥足記法)は以下になります。 1つのEntryに対して複数のTagがある、1対多の関係です。同じTagが複数のEntryに関連するため、多対多の関係と見なすこともできそうですが、タグ程度だとあまり意味がないので、これ以上のテーブル分割はやめておきます。 Entryテーブルの主キーがentryIdと冗長な名前をしているのは、自

    PDOの真の力を開放する - PHPでデータベースを扱う(3)
    sunin
    sunin 2012/06/25
  • http://www.res-system.com/weblog/item/373

  • MySQLのユーザ管理

    MySQL のユーザ管理について解説していきます。誰でも大切なデータにアクセスする事ができてしまっては困るので、きちんとユーザごとに管理しておくようにしましょう。 ■データベースの作成 まず、root でログインし、テーブルを作成しておきます。show databases;でdb1テーブルが作成されたことを確認してください。なお、SQL文の最後には必ず「; 」が必要になります。「; 」は「\g 」でも代用できます。

  • プログラム内のデータベース処理高速化TIPS:phpspot開発日誌

    10 sql tips to speed up your database プログラム内のデータベース処理高速化TIPSが10個紹介されているエントリのご紹介です。 SQLが適切に設計されていないとすぐにデータベース処理がCPUを圧迫してしまいますので可能な限り知っておきたいですね。 基的な事から応用的な事まで参考になりそうだったのでメモ程度にご紹介。 explainでインデックスが使われているかを調べる 最も速いクエリは、クエリを発行しないこと、ということでデータをキャッシュしよう Memcached, CSQL Cache, AdoDB などでそれが可能 必要じゃないモノをselect しないようにする select * from table; ↓ select id from table; limit を使って取得する結果を少なくする foreach ループなどの中でsqlクエリを

  • 今更ながらmagic_quotes_gpcの欠点 - teracc’s blog

    今更ながらですが、PHPのmagic_quotes_gpcをOnにすべきでない理由を整理してみます。 世の中には、magic_quotes_gpcはOffにすべき、と書いた文章は多数あるのですが、その理由を(私が見る限りで)十分に説明しているものは無いからです。 以下では、 1. 対象外の変数の存在 2. 弊害(副作用) 3. エスケープの不完全さ という三つの観点から記述します。 対象外の変数の存在 magic_quotes_gpcの、「gpc」はGET/POST/COOKIEを表しています。つまり、この3種類のリソースからの入力はエスケープされますが、それ以外は原則エスケープされません。 エスケープされているもの、されていないものを、以下にまとめてみます。 エスケープ済み ・$REQUEST $_GET・$_POST・$_COOKIE 場合によってエスケープ済み ・$_SESSION

    今更ながらmagic_quotes_gpcの欠点 - teracc’s blog
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • [SQL Server] sqlcmd ユーティリティ

    適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW) sqlcmd ユーティリティを使用すると、Transact-SQL ステートメントやシステム プロシージャ、スクリプト ファイルを使用可能なさまざまなモードで入力できます。 コマンド プロンプト。 クエリ エディターでの SQLCMD モード。 Windows スクリプト ファイル。 SQL Server エージェント ジョブのオペレーティング システム (cmd.exe) ジョブ ステップ。 Note Microsoft Entra ID はAzure Active Directory (Azure AD) の新しい名前ですが、既存の環境の中断を防ぐために、UI

    [SQL Server] sqlcmd ユーティリティ
    sunin
    sunin 2009/02/05
  • CAST および CONVERT (Transact-SQL) - SQL Server

    適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス これらの関数は、あるデータ型の式を別のデータ型に変換します。 構文 CAST 構文: CAST ( expression AS data_type [ ( length ) ] ) CONVERT 構文: CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) Transact-SQL 構文表記規則 引数 式 (expression) 任意の有効な式。 data_type 対象のデータ型で

    CAST および CONVERT (Transact-SQL) - SQL Server
    sunin
    sunin 2009/02/05
  • CREATE文をさらに使いこなそう

    今回は、前回(第10回:CREATE文でテーブルを作成する)に引き続きCREATE文の詳細と、定義した内容を変更する「ALTER」文を使ってテーブル定義の変更を実施してみましょう。 前回、「CardInfo」という名前の新しいテーブルを作成した後、定義した内容を「SQL Server Enterprise Manager」で確認しました。このとき、列名(カラム名)、データ型、データ長をカラムごとに指定してテーブルの作成を行いました。今回はこの画面を使用しながら、テーブル定義のほかのパラメータを見ていきましょう。 NULLを許容 まず、「NULLを許容」です。NULLの扱いについては第8回(サブクエリーの応用「相関サブクエリー」)で解説しましたが、NULLはデータではない特殊な値である、という点が特徴でしたね。RDBMSでは、カラムごとにあらかじめNULLを保存可能か否か指定することができま

    CREATE文をさらに使いこなそう
    sunin
    sunin 2009/01/21
    MSSQLServer のIDENTITY型の情報
  • [ThinkIT] 第5回:高度なインデックスの活用 (1/2)

    ここまでは単一の列に対して作成するインデックスを前提にお話ししてきました。しかし、インデックスは同一テーブルの複数の列に対してまとめて設定することもできます。検索条件に複数列を指定する場合などは、このようなインデックスを使えばさらに効率よく処理を行うことができます。

  • Amazon.co.jp: 達人に学ぶSQL徹底指南書: 初級者で終わりたくないあなたへ: ミック: 本

    Amazon.co.jp: 達人に学ぶSQL徹底指南書: 初級者で終わりたくないあなたへ: ミック: 本
    sunin
    sunin 2008/05/16
  • ORACLE/オラクルSQLリファレンス(UPDATE~SELECT)

    SQL> select * from dept; DEP DEPT_NAME --- ---------- D01 総務部 D02 経理部 D04 営業部 D05 管理部 SQL> select * from emp99; EMP DEP DEPT_NAME EMP_NAME  SALARY --- --- ---------- ---------- ---------- E01 D01 *****     なまえ1    100 E02 D02 *****     なまえ2    200 E03 D03 *****     なまえ3    300 E04 D04 *****     なまえ4    400 SQL> update 2   emp99 ep 3  set dept_name = ( 4   select dp.dept_name 5   from dept dp 6   w

    sunin
    sunin 2008/05/14