SQL Serverとは
SQL ServerはMicrosoft社が開発・提供するリレーショナルデータベース管理システム(RDBMS)です。企業向けのデータベースソリューションとして広く利用されており、Windows環境を中心としたシステム開発で重要な役割を果たしています。
主な特徴
- 高いパフォーマンスと可用性
- 豊富な管理ツール(SQL Server Management Studio等)
- .NET Frameworkとの親和性
- ビジネスインテリジェンス機能
- クラウド対応(Azure SQL Database)
近年では、Linux版も提供されており、クロスプラットフォーム対応が進んでいます。
ストアドプロシージャとは
ストアドプロシージャは、データベースサーバー上に保存される実行可能なSQLプログラムです。複数のSQL文をまとめて一つの処理単位として定義し、必要に応じて呼び出すことができます。
主なメリット
- パフォーマンスの向上(コンパイル済み実行)
- セキュリティの強化(SQLインジェクション対策)
- コードの再利用性
- ネットワークトラフィックの削減
- ビジネスロジックの集約
注意点
ストアドプロシージャは標準SQL(ANSI SQL)の仕様には含まれておらず、各DBMS固有の拡張機能です。そのため、異なるDBMS間での移植性は限られています。
ストアドプロシージャの例(SQL Server)
-- 部署別従業員検索のストアドプロシージャ
CREATE PROCEDURE GetEmployeesByDepartment
@Department NVARCHAR(50),
@MinSalary DECIMAL(10,2) = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT
EmployeeID,
Name,
Department,
Salary,
HireDate
FROM Employees
WHERE Department = @Department
AND Salary >= @MinSalary
ORDER BY Salary DESC;
END;
-- 実行例
EXEC GetEmployeesByDepartment @Department = 'IT', @MinSalary = 50000;
MySQLでの例
DELIMITER //
CREATE PROCEDURE GetEmployeesByDepartment(
IN dept_name VARCHAR(50),
IN min_salary DECIMAL(10,2)
)
BEGIN
SELECT
employee_id,
name,
department,
salary,
hire_date
FROM employees
WHERE department = dept_name
AND salary >= min_salary
ORDER BY salary DESC;
END //
DELIMITER ;
-- 実行例
CALL GetEmployeesByDepartment('IT', 50000);
MySQLのストアドプロシージャの制限
MySQLのストアドプロシージャは他のDBMS製品と比べると機能が限定的です。特に以下の点で劣ります:
- デバッグ機能: ステップ実行やブレークポイントが利用できない
- 例外処理: エラーハンドリング機能が基本的
- データ型: 豊富なデータ型のサポートが限定的
- 配列・コレクション: 複雑なデータ構造の操作が困難
- パッケージ機能: 関連するプロシージャをグループ化する機能がない
ストアドプロシージャに関しては、有償であるOracle DBやSQL Serverの方が圧倒的に優れています。これらの製品では、PL/SQLやT-SQLといった強力な拡張言語により、複雑なビジネスロジックを効率的に実装できます。
Mac上での学習方法
MacでSQL Serverのストアドプロシージャを学習する最も効率的な方法は、SQL Server for Linux on Dockerを利用することです。これにより、Windowsマシンを用意することなく、本格的なSQL Server環境を構築できます。
ステップ1: SQL Server for Linuxをインストール
まず、DockerでSQL Server 2022 Linux版を起動します。
# SQL Server 2022 Linux版を起動
docker run -e "ACCEPT_EULA=Y" \
-e "MSSQL_SA_PASSWORD=YourStrong@Passw0rd" \
-p 1433:1433 \
--name sqlserver-practice \
-d mcr.microsoft.com/mssql/server:2022-latest
パラメータ説明
-
ACCEPT_EULA=Y
: ライセンス条項に同意 -
MSSQL_SA_PASSWORD
: 管理者パスワードを設定(8文字以上で大文字・小文字・数字・記号を含む) -
-p 1433:1433
: ポート1433でアクセス可能にする -
--name
: コンテナ名を指定
CLIでの操作方法
コンテナに接続してsqlcmdを使用
# コンテナ内のbashに入る
docker exec -it sqlserver-practice bash
# sqlcmdでSQL Serverに接続(SSL証明書エラー回避のため-Cオプション使用)
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Passw0rd' -C
sqlcmdの基本操作
sqlcmdでは、SQL文を入力した後に GO
を入力して実行します:
-- データベース一覧表示
1> SELECT name FROM sys.databases;
2> GO
-- バージョン確認
1> SELECT @@VERSION;
2> GO
-- 現在のデータベース確認
1> SELECT DB_NAME();
2> GO
-- 新しいデータベース作成
1> CREATE DATABASE SampleDB;
2> GO
-- データベース切り替え
1> USE SampleDB;
2> GO
-- sqlcmdを終了
1> EXIT
CLIでの注意点
- SQL Server 2022では新しい
mssql-tools18
が使用される - SSL証明書の検証エラーを回避するため
-C
オプションが必要 - 各SQL文の後に必ず
GO
を入力して実行 - 複数行にわたるSQL文も入力可能
ストアドプロシージャ練習例
接続後、以下のサンプルで練習を開始できます。
-- 1. サンプルテーブル作成
CREATE TABLE Employees (
EmployeeID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(100) NOT NULL,
Department NVARCHAR(50) NOT NULL,
Salary DECIMAL(10,2) NOT NULL,
HireDate DATE NOT NULL
);
-- 2. サンプルデータ挿入
INSERT INTO Employees (Name, Department, Salary, HireDate) VALUES
('田中太郎', 'IT', 60000, '2020-04-01'),
('佐藤花子', 'IT', 65000, '2019-07-15'),
('鈴木一郎', '営業', 55000, '2021-01-10'),
('高橋美咲', 'IT', 70000, '2018-09-01');
-- 3. 基本的なストアドプロシージャ
CREATE PROCEDURE GetAllEmployees
AS
BEGIN
SELECT * FROM Employees ORDER BY Salary DESC;
END;
-- 4. パラメータ付きストアドプロシージャ
CREATE PROCEDURE GetEmployeesByDepartment
@Department NVARCHAR(50)
AS
BEGIN
SELECT * FROM Employees
WHERE Department = @Department
ORDER BY HireDate;
END;
-- 5. 複数パラメータとデフォルト値
CREATE PROCEDURE GetEmployeesBySalaryRange
@MinSalary DECIMAL(10,2) = 0,
@MaxSalary DECIMAL(10,2) = 999999,
@Department NVARCHAR(50) = NULL
AS
BEGIN
SELECT * FROM Employees
WHERE Salary BETWEEN @MinSalary AND @MaxSalary
AND (@Department IS NULL OR Department = @Department)
ORDER BY Salary;
END;
-- 実行例
EXEC GetAllEmployees;
EXEC GetEmployeesByDepartment @Department = 'IT';
EXEC GetEmployeesBySalaryRange @MinSalary = 60000, @Department = 'IT';
DBeaver のインストール
DBeaver は無料のマルチプラットフォーム対応データベース管理ツールです。SQL Server にも対応しており、Mac での開発に適しています。
インストール方法
方法1: 公式サイトからダウンロード
- https://dbeaver.io/ にアクセス
- 「Download」をクリック
- macOS版をダウンロード
- dmgファイルを開いてインストール
方法2: Homebrewを使用
brew install --cask dbeaver-community
SQL Server への接続設定
-
DBeaver を起動
-
「新しい接続」をクリック
-
「SQL Server」を選択
-
接続情報を入力:
-
サーバー:
localhost
-
ポート:
1433
-
データベース:
master
(初期接続時) -
ユーザー名:
sa
-
パスワード:
YourStrong@Passw0rd
-
サーバー:
-
「接続テスト」で確認後、「完了」
代替ツール: Azure Data Studio
Microsoft公式の無料ツールで、SQL Server に特化しています。
# Homebrewでインストール
brew install --cask azure-data-studio
学習リソース
公式リソース
- Microsoft Learn - 無料のオンライン学習
- Microsoft Docs - 公式ドキュメント
その他の学習サイト
- W3Schools SQL Server Tutorial
- SQLServerTutorial.net
- Qiita の SQL Server 関連記事