OracleのLEFT JOINを使用したクエリでCASE WHENが正しく評価されない問題
問題の概要
OracleでLEFT JOINを使用して関連付けたテーブルに対し、CASE WHEN式を用いた条件分岐が期待通りに動作しない場合があります。本稿では、具体的なクエリ例を基にこの現象について説明します。
問題のあるクエリ例
以下のクエリは、現金移動テーブル(RP_CASH_MOVEMENT)と台帳アイテムテーブル(RP_LEDGER_ITEM)をLEFT JOINで結合し、集計結果を判定してい ...
6月25日 18:33 投稿
gh-ostツールの紹介と活用方法
概要
gh-ostはGitHubが開発したオンラインDDL(Online Data Definition Language)変更ツールで、MySQLデータベース専用です。このツールはテーブルをロックすることなくデータベーススキーマの変更を実行でき、従来のALTER TABLEコマンドが引き起こす可能性のある長時間のテーブルロック問題を回避します。これは、高可用性が厳しく要求される本番環境において特に重要で ...
6月24日 23:11 投稿
ClickHouseのインストール手順(CentOS 7環境)
ClickHouseのインストール
公式サイト:https://clickhouse.tech/#quick-start
公式サイトで提供されている方法に従ってインストールします:(順番に実行)
sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo
sudo yum install click ...
6月23日 18:56 投稿
SQL自己結合の仕組みと実践的な使い方
自己結合(Self-Join)とは、同じテーブルを2回参照し、それぞれに別名(エイリアス)を付けて結合する手法です。テーブルの構造とデータは同一ですが、別のインスタンスとして扱うことで、同一テーブル内の行同士を比較・組み合わせることが可能になります。
基本例:無条件の自己結合
まず、以下のような生徒テーブル Students を考えます。
-- Students テーブル
Name ...
6月22日 19:44 投稿
MySQLのJOINクエリの詳細
1、データベースの準備:```
CREATE DATABASE IF NOT EXISTS library_db DEFAULT CHARACTER SET UTF8;
USE library_db;
DROP TABLE IF EXISTS product_catalog;
CREATE TABLE product_catalog (
item_id INT(11) PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(20) DEFAULT NULL,
cost DECIMAL(6,2) DEFAULT NULL,
creator VARCHAR(20) DEFAULT NULL,
category_id INT( ...
6月22日 19:09 投稿
MongoDBのクライアントツール、基本概念、データ型の解説
MongoDBとは
MongoDBは、汎用的なドキュメント指向の分散データベースです。JSONライクな形式(BSON)でデータを格納し、スキーマの柔軟性と高いスケーラビリティを提供します。公式サイトでは「現代のアプリケーション開発者とクラウド時代のために構築された」と説明されています。
代表的なクライアントツール
MongoDB Compass(公式・無料): GUIツール。クエリ、集 ...
6月22日 16:35 投稿
データベーストランザクションの分離レベルと一貫性問題
分離レベルの基本概念
データベーストランザクションには4つの分離レベルが存在し、整合性と並行性のバランスを調整します。レベルは低い順に次の通りです:
Read Uncommitted(未コミット読み取り)
Read Committed(コミット済み読み取り)
Repeatable Read(反復可能読み取り)
Serializable(直列化可能)
並行処理では次の整合性問題が発生する可能性があります:
...
6月21日 23:29 投稿
MySQL最適化実践:LEFT JOINが期待通りに動作しない場合、駆動テーブルを強制指定する方法
MySQL最適化実践:LEFT JOINが期待通りに動作しない場合、駆動テーブルを強制指定する方法
データベースパフォーマンスチューニングの現場において、LEFT JOINはしばしば「確定的な操作」と見なされます。多くの開発者、経験豊富なDBAでさえ、LEFT JOINの左側に書かれたテーブルがクエリの駆動テーブルであると信じています。この認識は、ほとんどの単純なシナリオでは成立 ...
6月21日 21:28 投稿
MyBatisの核心機能と設計思想
MyBatisとは何ですか?
MyBatisは、カスタムSQL、ストアドプロシージャ、高度なマッピングをサポートする優れた永続層フレームワークです。JDBCコードの大部分やパラメータ設定、結果セットの取得といった手動処理を大幅に削減します。
MyBatisの利点
柔軟性: SQL文を直接記述できるため、非常に柔軟な操作が可能です。
習得の容易さ: Hibernateのようなフル機能ORM ...
6月21日 21:04 投稿
Django ORMの基本操作:データの作成・取得・更新・削除
データの作成(Create)
1. createメソッドによる作成
モデルクラスのobjects.create()メソッドを使用
UserModel.objects.create(username="山田太郎", age=25)
2. 辞書データからの作成
辞書データを展開してオブジェクトを作成
user_data = {"username": "鈴木花子", "age": 30}
user_obj = UserModel(**user_data)
user_obj.save()
3. 属性設定による作成
オブジェク ...
6月21日 20:13 投稿