Navicatブログ

SQLアンチジョイン 2024年10月21日 by Robert Gravelle

SQLの最も強力な機能の1つはJOIN操作であり、あるテーブルのすべての行を別のテーブルのすべての行と組み合わせるための洗練されたシンプルな手段を提供します。ただし、あるテーブルにあって別のテーブルにない値を見つけたい場合があります。今日のブログ記事で見るように、結合は、テーブルを結合するための述語を含めることによって、この目的にも利用できます。アンチジョインと呼ばれるこれらの結合は、次のようなさまざまなビジネス関連の質問に答えるのに役立ちます。

  • どの顧客が注文をしなかったか?
  • どの従業員が部署に配属されていないか?
  • どの営業担当者が今週契約を成立させなかったか?

このブログでは、アンチジョインの種類と、PostgreSQLのdvdrental database例を使用してアンチジョインを記述する方法についての入門編を提供します。Navicat Premium Lite 17 でクエリを作成して実行します。

SQLセミジョイン(準結合) 2024年10月15日 by Robert Gravelle

ほとんどのデータベース開発者や管理者は、標準的な内部結合、外部結合、左外部結合、右外部結合のタイプに精通しています。これらはANSI SQLを使用して記述できますが、SQLに構文表現のない関係代数演算子に基づく他のタイプの結合もあります。今日は、そのような結合タイプの一つであるセミジョインについて見ていきます。来週は、同様のアンチジョインについて説明します。これらのタイプの結合の仕組みをよりよく理解するために、Navicat Premium Lite 17でPostgreSQLのdvdrental databaseLECTクエリを実行します。これは、MySQLのSakilaサンプルデータベースに基づいた無料のデータベースです。

集計フィールドをHAVING句でフィルタリングする 2024年10月8日 by Robert Gravelle

SQLクエリをある程度書いている方であれば、WHERE句にはかなり精通しているのではないでしょうか。WHERE句は集計フィールドには影響しませんが、集計値に基づいてレコードをフィルタリングする方法があり、その目的でHAVING句が用いられます。このブログでは、HAVING句の仕組みと、SELECTクエリでの使用方法の例をいくつか紹介します。

EXISTS を用いたSELECTクエリを書く 2024年9月26日 by Robert Gravelle

SQL の EXISTS 演算子は、他のデータの存在(または非存在)に基づいてデータを検索する簡単な方法を提供します。より具体的には、サブクエリの結果を評価し、行が返されたかどうかを示すブール値を返す論理演算子です。IN演算子もほぼ同じ目的で使用できますが、いくつかの違いがあります。本日のブログでは、いくつかの例を使用して EXISTS 演算子を使用する方法を説明し、EXISTS 演算子ではなく IN 演算子を使用するタイミングについてガイダンスを提供します。

普遍的なSQL構文の探求 2024年9月12日 by Robert Gravelle

1990年代半ば、サン・マイクロシステムズは、「一度書けば、どこでも実行できる」言語を発表しました。もちろん、その言語はJavaでした。そして、今日まで最も人気のあるプログラミング言語の一つとして生き続けていますが、彼らのスローガンは少し楽観的だったようです。Java言語の展開は、SQLのそれと強い類似性を示しています。これもまた、データベース間やオペレーティングシステム間で、ほとんどまたはまったく変更せずに移植することができます。少なくとも、それが理想です。現実世界では、プロダクションレベルのコードは、新しい環境で動作するために、何らかの調整が必要になることが多いです。このブログでは、SQL構文が異なるデータベースベンダー間で違いが発生するいくつかの理由の要点を述べます。

ブログのアーカイブ
シェア