SQLにおける変数の使い方から、データ型の選択、実践的なコード例まで詳しく解説します。SQLで変数を使いこなすためには何から始めればよいのでしょうか?
SQL変数定義とデータ型の基礎から実践的な活用方法まで
SQLでの変数定義について、基本的な宣言方法からパフォーマンスを考慮した実践的な使い方まで、具体的なコード例を交えて解説します。あなたのSQLスキルを次のレベルに引き上げる方法とは?
変数を宣言する基本的な構文について説明します。SQL Serverでは、変数名の前に「@」を付けることが必要です。
-- 基本的な変数宣言
DECLARE @age INT
DECLARE @name VARCHAR(100)
DECLARE @price DECIMAL(10,2)
-- 初期値を設定した変数宣言
DECLARE @counter INT = 1
DECLARE @status BIT = 0
データ型の選択は重要で、以下の点に注意が必要です:
変数への値の代入には主に3つの方法があります:
-- 1. SET文を使用した代入
DECLARE @total INT
SET @total = 100
-- 2. SELECT文を使用した代入
DECLARE @max_price DECIMAL(10,2)
SELECT @max_price = MAX(price) FROM products
-- 3. 複数の変数への一括代入
DECLARE @first_name VARCHAR(50), @last_name VARCHAR(50)
SELECT
@first_name = first_name,
@last_name = last_name
FROM employees
WHERE employee_id = 1
変数のスコープは宣言されたバッチまたはストアドプロシージャ内に限定されます。
-- バッチ1
DECLARE @counter INT = 1
PRINT @counter
GO
-- バッチ2(エラーになる)
PRINT @counter -- 変数が認識されない
スコープを効果的に管理するためのポイント:
変数の使用方法によってクエリのパフォーマンスが大きく変わります:
-- 効率的な変数宣言方法
DECLARE @id INT,
@name VARCHAR(100),
@date DATETIME
-- パフォーマンスを考慮した代入
SELECT @id = id,
@name = name,
@date = created_at
FROM users
WHERE user_id = 1
パフォーマンス最適化のポイント:
実務で役立つ変数の活用例を紹介します:
-- 動的な日付範囲の指定
DECLARE @start_date DATE = DATEADD(MONTH, -1, GETDATE())
DECLARE @end_date DATE = GETDATE()
SELECT *
FROM sales
WHERE sale_date BETWEEN @start_date AND @end_date
-- 条件分岐での活用
DECLARE @user_type VARCHAR(10) = 'premium'
DECLARE @discount DECIMAL(5,2)
SET @discount =
CASE @user_type
WHEN 'premium' THEN 0.20
WHEN 'regular' THEN 0.10
ELSE 0.05
END
SELECT
product_name,
price,
price * (1 - @discount) as discounted_price
FROM products