【2026年7月最新】SQL Server Management Studio(SSMS)の使い方完全ガイド|インストールからSQL実行まで初心者向けに解説
この記事の内容
「SQLって難しそう…」「SSMSをインストールしたけど何からやればいいか分からない」——データベースを初めて触る方のほとんどが、この壁にぶつかります。
SQL Server Management Studio(SSMS)は、Microsoftが無償で提供しているデータベース管理ツールです。SQLの実行・テーブルの作成・データの参照・クエリの自動生成など、SQL Serverを扱うすべての作業をGUIで直感的に操作できます。エンジニアだけでなく、業務システムの管理者やデータ分析担当者にとっても欠かせないツールです。
この記事では、SSMSのインストールから始めて、データベースとテーブルの作成、SELECT・INSERT・UPDATE・DELETE文の実行、クエリの自動生成機能まで、初心者が実際に手を動かしながら学べるよう、スクリーンショットの代わりに丁寧なステップで解説します。
この記事を読み終えると、次のことができるようになります。
01 BASICS SQL ServerとSSMSの基礎知識 まず「何がどういう関係になっているか」を整理する
実際に手を動かす前に、SQL ServerとSSMSの関係を整理しておきましょう。これを理解しておくと、後の操作の意味がはっきりします。
1-1. SQL Serverとは
📚 用語解説
SQL Server(Microsoft SQL Server):Microsoftが開発・提供する企業向けリレーショナルデータベース管理システム(RDBMS)。Windows環境との親和性が高く、中堅〜大企業の基幹システムや業務システムのデータベースとして広く採用されている。無償版のSQL Server Expressから、大規模エンタープライズ向けのEnterpriseエディションまで、用途に応じた複数のエディションがある。
SQL Serverはデータを保存・管理する「エンジン(機関部)」です。倉庫に例えると、「実際にデータを格納している倉庫そのもの」がSQL Serverです。SQL Serverは常にバックグラウンドで稼働しており、アプリケーションからのデータ要求に応え続けています。
1-2. SSMSとは
📚 用語解説
SSMS(SQL Server Management Studio):MicrosoftがSQL Server管理用に無償提供するGUIツール。データベースの作成・テーブル定義・SQLクエリの実行・バックアップ・パフォーマンス監視まで、SQL Serverに関するほぼ全ての管理作業をグラフィカルに行える。SQL Serverとは別のソフトウェアとして提供され、独自にインストールが必要。
SSMSは倉庫に例えると「倉庫の操作パネル・管理システム」です。SQL Server(倉庫)に指示を出したり、中身を覗いたり、データを整理したりするための操作インターフェースです。SSMSがなくてもSQL Serverは動きますが、SSMSがあることで人間が直感的に管理できるようになります。
📚 用語解説
RDBMS(リレーショナルデータベース管理システム):データを行と列で構成された「表(テーブル)」の形式で管理し、複数のテーブル間の関係(リレーション)を定義・管理できるデータベース管理システムの総称。SQL Server、MySQL、PostgreSQL、Oracleなどが代表的なRDBMS。SQLという共通言語でデータを操作できる点が特徴。
1-3. SQL ServerとSSMSの関係
| 項目 | SQL Server | SSMS |
|---|---|---|
| 役割 | データの保存・管理エンジン | SQL Serverを操作するGUIツール |
| 提供形態 | サービス(バックグラウンドで常時起動) | デスクトップアプリケーション |
| インストール | 別途必要 | 別途必要(無償) |
| なくても動くか | —(コアコンポーネント) | はい(コマンドラインで代替可能) |
| 無償版 | SQL Server Express / Developer | SSMS本体は常に無償 |
重要なのは「SQL ServerとSSMSは別のソフトウェア」という点です。SQL ServerがなければSSMSを起動しても接続先がありません。まずSQL Serverをインストールしてから、SSMSをインストールして接続する、という順序で進めます。
02 INSTALL SSMSのインストール方法 SQL ServerとSSMSを順番にインストールする
インストールは「SQL Server本体 → SSMS」の順で進めます。どちらもMicrosoftの公式サイトから無償でダウンロードできます。
2-1. インストールの全体フロー
SQL Server
Developer版
ダウンロード
SQL Server
インストーラー
実行・完了
SSMSを
公式サイトから
ダウンロード
SSMSインストーラー
実行・再起動
SSMSを起動して
SQL Serverに
接続確認
2-2. SQL Serverのインストール手順
① Microsoftの公式ページ(microsoft.com/ja-jp/sql-server/sql-server-downloads)にアクセスします。
② 「Developer」エディションの「今すぐダウンロード」をクリックします。Developerエディションはすべての機能が使えますが、本番環境での利用はライセンス上不可です。本番利用はExpressまたは有償エディションを選んでください。
③ ダウンロードした「SQL2022-SSEI-Dev.exe」(ファイル名はバージョンにより変化)を実行します。
④ インストールの種類選択画面で「基本」を選択します。初めての方はカスタムや詳細設定は不要です。
⑤ ライセンス条項に同意し、インストール先を確認して「インストール」をクリックします。インストールには通常5〜15分かかります。
⑥ 「インストールが完了しました」画面が表示されたら、メモ帳に「接続文字列」のテキストをコピーして保存しておきます(後のSSMS接続で使います)。
SQL Serverインストール完了画面に「接続文字列」として表示される「Server=localhost\SQLEXPRESS;...」のような文字列は、必ずメモしておきましょう。SSMSからの接続時にこのサーバー名が必要になります。コピーし忘れた場合は「SQL Server 2022 構成マネージャー」から確認できます。
2-3. SSMSのインストール手順
① Microsoftの公式ページ(learn.microsoft.com/ja-jp/ssms/download-sql-server-management-studio-ssms)にアクセスします。
② 最新バージョンのSSMS(例:SSMS 20.x)のダウンロードリンクをクリックします。ファイル名は「SSMS-Setup-JPN.exe」のような形式です。
③ ダウンロードしたインストーラーを実行します。インストール先はデフォルトのままで構いません。
④ 「インストール」ボタンをクリックし、完了まで待ちます(5〜10分程度)。
⑤ インストール完了後、「再起動」を求められたら再起動します。
⑥ スタートメニューから「Microsoft SQL Server Management Studio」を検索して起動します。
SSMSはWindows専用のソフトウェアです。macOSやLinuxには対応していません。macOSでSQL Serverを管理したい場合は、Azure Data Studio(Microsoftの代替ツール、macOS対応)を使う必要があります。
03 LOGIN & SETUP SSMSへのログインと初期設定 SSMSを起動してSQL Serverに接続する
SSMSを起動すると最初に「サーバーへの接続」ダイアログが表示されます。ここでSQL Serverのインスタンスに接続します。
3-1. 接続ダイアログの各項目
| 項目 | 設定値(ローカル環境の場合) | 説明 |
|---|---|---|
| サーバーの種類 | データベース エンジン | 通常はこのまま変更不要 |
| サーバー名 | localhost または . または コンピュータ名\SQLEXPRESS | SQL Serverのインスタンス名。Expressは\SQLEXPRESSを付ける |
| 認証 | Windows 認証 | 初期設定はWindows認証が最も簡単 |
| ユーザー名 | (自動入力) | Windows認証の場合は現在のWindowsユーザー名が自動入力 |
| パスワード | (不要) | Windows認証では不要 |
ローカルにSQL Serverをインストールした場合、サーバー名は通常「localhost」または「.(ドット一つ)」で接続できます。SQL Server Expressの場合は「localhost\SQLEXPRESS」のように名前付きインスタンスになることが多いです。
-- 接続文字列の例(アプリケーションからSQL Serverに接続する際の参考)
-- SQL Server Express ローカル接続
Server=localhost\SQLEXPRESS;Database=master;Trusted_Connection=True;
-- SQL Server Developer ローカル接続
Server=localhost;Database=master;Trusted_Connection=True;
-- SQL Server認証(sa等のSQLユーザー)
Server=192.168.1.10;Database=SampleDB;User Id=sa;Password=YourPassword;
📚 用語解説
クエリ(Query):データベースに対して「データを取得する」「データを追加する」「データを更新する」「データを削除する」などの指示を出すSQL文のこと。英語で「問い合わせ」を意味する単語が語源。SELECT文・INSERT文・UPDATE文・DELETE文などがすべてクエリに含まれる。
3-2. 接続後のSSMSの画面構成
接続に成功すると、SSMSのメイン画面が開きます。主要なパネルの役割を覚えておきましょう。
| パネル名 | 場所 | 主な用途 |
|---|---|---|
| オブジェクト エクスプローラー | 左側 | データベース一覧・テーブル一覧のツリー表示 |
| クエリ エディター | 中央 | SQLを直接入力して実行するエリア |
| 結果グリッド | 下部 | SELECTの実行結果をテーブル形式で表示 |
| メッセージ | 下部(タブ) | INSERT/UPDATE/DELETEの実行件数・エラーメッセージ |
| プロパティ | 右側 | 選択したオブジェクトの詳細情報 |
新しいクエリエディターは、ツールバーの「新しいクエリ」ボタンまたはキーボードショートカットCtrl + Nで開けます。クエリの実行はF5キーが最速です。
よく使うショートカット: F5 = クエリ実行 / Ctrl+N = 新規クエリ / Ctrl+K+C = 選択行をコメントアウト / Ctrl+K+U = コメントアウト解除 / Ctrl+R = 結果ペインの表示/非表示切替 / Alt+F1 = テーブル定義の確認(sp_helpを実行)
04 CREATE DATABASE データベースの作成方法 GUIとSQLコマンドの両方で作成する
SQL Serverに接続できたら、次は実際にデータベースを作成します。SSMSにはGUIから作成する方法とSQLを書いて作成する方法の2通りがあります。どちらも覚えておくと実用的です。
4-1. GUIでデータベースを作成する
① オブジェクトエクスプローラーの「データベース」フォルダを右クリックします。
② 「新しいデータベース」を選択します。
③ 「新しいデータベース」ダイアログが開きます。「データベース名」欄に任意の名前(例:SampleDB)を入力します。
④ オーナーは「<既定値>」のままでOKです。
⑤ 「OK」をクリックするとデータベースが作成されます。オブジェクトエクスプローラーのデータベース一覧に追加されます。
4-2. SQLでデータベースを作成する
SQLを使ったデータベース作成は、CREATE DATABASE文を使います。クエリエディターに以下を入力してF5を押します。
-- データベースの作成
CREATE DATABASE SampleDB;
-- データベースが作成されたか確認
SELECT name, database_id, create_date
FROM sys.databases
WHERE name = 'SampleDB';
-- 作成したデータベースに切り替え
USE SampleDB;
GO
📚 用語解説
DDL(データ定義言語):Data Definition Languageの略。データベースやテーブルの構造を定義・変更・削除するためのSQL命令群のこと。CREATE(作成)・ALTER(変更)・DROP(削除)・TRUNCATE(データ全削除)が代表的なDDL命令。データそのものではなく「データを入れる器(構造)」を操作する点がDMLとの違い。
CREATE DATABASE文は非常にシンプルですが、実務ではオプションを指定することが多いです。例えばデータファイルの保存先や文字コードの照合順序を明示的に指定するケースがあります。
-- 詳細オプション付きのデータベース作成例
CREATE DATABASE SampleDB
ON PRIMARY (
NAME = 'SampleDB_Data',
FILENAME = 'C:\SQLData\SampleDB.mdf',
SIZE = 100MB,
MAXSIZE = 1GB,
FILEGROWTH = 10MB
)
LOG ON (
NAME = 'SampleDB_Log',
FILENAME = 'C:\SQLData\SampleDB.ldf',
SIZE = 10MB,
FILEGROWTH = 5MB
)
COLLATE Japanese_CI_AS;
GO
SQL Serverのデータベース名はスペースを含めないのが基本です。単語の区切りはアンダースコア(_)またはキャメルケース(SampleDB)を使います。また、SQL Serverの予約語(SELECT、TABLE等)はデータベース名に使えないため注意が必要です。
05 CREATE TABLE テーブルの作成とデータ型 CREATE TABLE文と代表的なデータ型を覚える
データベースを作成したら、次はデータを格納する「テーブル」を作成します。テーブルはExcelのシートに例えられます。列(カラム)がデータの種類を定義し、行(レコード)が実際のデータになります。
5-1. GUIでテーブルを作成する
① 作成したデータベース(SampleDB)を展開し、「テーブル」フォルダを右クリックします。
② 「テーブルを新規作成」→「テーブル...」を選択します。
③ テーブルデザイナーが開きます。「列名」「データ型」「NULL を許容」の3つを設定します。
④ 主キー(PRIMARY KEY)を設定するには、該当行を右クリックして「主キーの設定」を選択します。
⑤ Ctrl+Sで保存すると、テーブル名の入力を求められます。名前を入力してOKをクリックします。
5-2. CREATE TABLE文でテーブルを作成する
SQLでのテーブル作成は実務でよく使います。定義をコードとして残せるため、後から再現・改変がしやすい利点があります。
-- データベースを選択
USE SampleDB;
GO
-- 顧客テーブルの作成
CREATE TABLE Customers (
CustomerID INT NOT NULL IDENTITY(1,1), -- 自動採番
CustomerName NVARCHAR(100) NOT NULL, -- 氏名(最大100文字)
Email NVARCHAR(255) NULL, -- メールアドレス(任意)
Phone NVARCHAR(20) NULL, -- 電話番号(任意)
City NVARCHAR(50) NULL, -- 都市名
CreatedAt DATETIME2 NOT NULL DEFAULT GETDATE(), -- 登録日時(自動)
CONSTRAINT PK_Customers PRIMARY KEY (CustomerID) -- 主キー制約
);
GO
-- 注文テーブルの作成
CREATE TABLE Orders (
OrderID INT NOT NULL IDENTITY(1,1),
CustomerID INT NOT NULL, -- 外部キー(顧客と紐付け)
OrderDate DATE NOT NULL DEFAULT GETDATE(),
TotalAmount DECIMAL(10,2) NOT NULL DEFAULT 0,
Status NVARCHAR(20) NOT NULL DEFAULT 'pending',
CONSTRAINT PK_Orders PRIMARY KEY (OrderID),
CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID)
);
GO
5-3. 主なデータ型一覧
| データ型 | 用途 | 例 |
|---|---|---|
| INT | 整数(-2,147,483,648 〜 2,147,483,647) | ID、数量、年齢 |
| BIGINT | 大きな整数 | 大規模データの連番ID |
| DECIMAL(p,s) | 精度p・小数部桁数sの固定小数点数 | DECIMAL(10,2) → 金額(円) |
| NVARCHAR(n) | Unicode文字列(最大n文字) | NVARCHAR(100) → 氏名・タイトル |
| VARCHAR(n) | ASCII文字列(最大n文字) | VARCHAR(50) → メールアドレス |
| DATE | 日付(YYYY-MM-DD) | 生年月日・注文日 |
| DATETIME2 | 日時(最大精度) | 作成日時・更新日時 |
| BIT | 1/0のブール値 | フラグ・有効/無効 |
| UNIQUEIDENTIFIER | GUID(グローバル一意識別子) | 分散システムのID |
📚 用語解説
IDENTITY(自動採番):テーブルに行が追加されるたびに自動的に連番を振るSQL Serverの機能。IDENTITY(1,1)は「1から始めて1ずつ増やす」という意味。主キー列によく使われる。新しく追加したレコードのIDをプログラムから取得するには、INSERT直後にSELECT SCOPE_IDENTITY()を実行する。
NVARCHAR(N=National = Unicode対応)は日本語・中国語・絵文字など多バイト文字を格納できます。VARCHARはASCII文字専用で1文字1バイトですが、格納効率が高い。日本語を含む可能性がある列はNVARCHARを使うのが安全です。ただしNVARCHARはVARCHARの2倍のストレージを消費する点に注意。
06 CRUD INSERT・SELECT・UPDATE・DELETE文 データ操作の基本4命令を完全マスター
データベース操作の基本は4つの命令に集約されます。INSERT(追加)・SELECT(取得)・UPDATE(更新)・DELETE(削除)——この4つを合わせて「CRUD操作」と呼びます。実務で使うSQLの9割はこの4命令の組み合わせです。
📚 用語解説
DML(データ操作言語):Data Manipulation Languageの略。データベースに格納されたデータを操作するためのSQL命令群。INSERT(挿入)・SELECT(取得)・UPDATE(更新)・DELETE(削除)が代表的なDML命令。テーブルの構造ではなく「テーブルに入っているデータ自体」を操作する点がDDLとの違い。
6-1. INSERT文 — データを追加する
INSERT文はテーブルに新しいレコードを追加します。列名を明示する形式が最も安全です。
-- 基本的なINSERT文(1件追加)
INSERT INTO Customers (CustomerName, Email, Phone, City)
VALUES ('山田 太郎', 'yamada@example.com', '090-1234-5678', '東京');
-- 複数件を一度に追加(SQL Server 2008以降)
INSERT INTO Customers (CustomerName, Email, Phone, City)
VALUES
('鈴木 花子', 'suzuki@example.com', '080-9876-5432', '大阪'),
('田中 一郎', 'tanaka@example.com', '070-1111-2222', '名古屋'),
('佐藤 美咲', 'sato@example.com', NULL, '福岡');
-- 追加したレコードのIDを取得
SELECT SCOPE_IDENTITY() AS NewCustomerID;
6-2. SELECT文 — データを取得する
SELECT文はテーブルからデータを取得します。最もよく使うSQL命令です。
-- 全列・全件を取得(本番DBでは要注意)
SELECT * FROM Customers;
-- 特定の列だけ取得
SELECT CustomerID, CustomerName, City
FROM Customers;
-- 列に別名(エイリアス)を付ける
SELECT
CustomerID AS ID,
CustomerName AS 氏名,
Email AS メールアドレス,
City AS 都市
FROM Customers;
-- 重複を除いた一覧(DISTINCT)
SELECT DISTINCT City FROM Customers;
-- 件数を取得
SELECT COUNT(*) AS 顧客数 FROM Customers;
-- 並び順を指定
SELECT * FROM Customers
ORDER BY CustomerName ASC; -- 昇順(ABC順)
-- ORDER BY CreatedAt DESC; -- 降順(最新順)
6-3. UPDATE文 — データを更新する
UPDATE文は既存のレコードを更新します。WHERE句を省略すると全件更新されてしまうため、必ずWHERE句を付けるのが基本ルールです。
-- 特定のレコードを更新(CustomerID=1の顧客の都市を変更)
UPDATE Customers
SET City = '横浜'
WHERE CustomerID = 1;
-- 複数列を同時に更新
UPDATE Customers
SET
Email = 'yamada.new@example.com',
Phone = '090-9999-8888',
City = '神奈川'
WHERE CustomerID = 1;
-- 更新前に影響件数を確認するテクニック
-- SELECTで確認してからUPDATEする
SELECT * FROM Customers WHERE City = '東京';
-- 確認後に実行
UPDATE Customers
SET City = '東京都'
WHERE City = '東京';
6-4. DELETE文 — データを削除する
DELETE文はレコードを削除します。UPDATE同様、WHERE句なしで実行すると全件削除になります。本番DBでの実行は特に慎重に。
-- 特定のレコードを削除
DELETE FROM Customers
WHERE CustomerID = 5;
-- 条件に合致する複数件を削除
DELETE FROM Customers
WHERE City = '不明' AND Email IS NULL;
-- 削除前に影響件数を確認
SELECT COUNT(*) AS 削除予定件数
FROM Customers
WHERE City = '不明' AND Email IS NULL;
-- テーブルの全件削除(注意: ロールバック可能)
DELETE FROM Customers;
-- テーブルの全件削除(高速版: ロールバック不可)
TRUNCATE TABLE Customers;
WHERE句の指定ミスによる全件更新・全件削除を防ぐため、本番DBでのUPDATE・DELETEは必ずトランザクションを使って実行しましょう。「BEGIN TRAN」で開始して影響件数を確認し、問題なければ「COMMIT」、ミスがあれば「ROLLBACK」で取り消せます。
07 WHERE CLAUSE WHERE句とフィルタリング データを条件で絞り込む技術を習得する
WHERE句はSQLで最も頻繁に使う機能です。「どのデータを対象にするか」を絞り込む条件指定で、SELECT・UPDATE・DELETEすべてに付けて使います。
7-1. WHERE句の基本構文と比較演算子
-- 比較演算子
SELECT * FROM Customers WHERE CustomerID = 1; -- 等しい
SELECT * FROM Customers WHERE CustomerID <> 1; -- 等しくない
SELECT * FROM Customers WHERE CustomerID > 10; -- より大きい
SELECT * FROM Customers WHERE CustomerID >= 10; -- 以上
SELECT * FROM Customers WHERE CustomerID < 5; -- より小さい
SELECT * FROM Customers WHERE CustomerID <= 5; -- 以下
-- 範囲指定(BETWEEN ... AND)
SELECT * FROM Orders
WHERE TotalAmount BETWEEN 1000 AND 50000;
-- リスト指定(IN)
SELECT * FROM Customers
WHERE City IN ('東京', '大阪', '名古屋');
-- NULLの確認
SELECT * FROM Customers WHERE Email IS NULL;
SELECT * FROM Customers WHERE Email IS NOT NULL;
-- 文字列の部分一致(LIKE)
SELECT * FROM Customers WHERE CustomerName LIKE '山田%'; -- 前方一致
SELECT * FROM Customers WHERE Email LIKE '%@gmail.com'; -- 後方一致
SELECT * FROM Customers WHERE CustomerName LIKE '%田%'; -- 部分一致
-- 複合条件(AND・OR)
SELECT * FROM Customers
WHERE City = '東京' AND Email IS NOT NULL;
SELECT * FROM Customers
WHERE City = '東京' OR City = '大阪';
-- NOT条件
SELECT * FROM Customers
WHERE NOT (City = '東京' OR City = '大阪');
7-2. ORDER BY・TOP・OFFSET FETCHによる件数制御
-- 上位N件を取得(TOP句)
SELECT TOP 10 * FROM Customers
ORDER BY CreatedAt DESC; -- 最新の10件
-- ページング(OFFSET FETCH)
SELECT CustomerID, CustomerName, City
FROM Customers
ORDER BY CustomerID
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY; -- 21〜30件目
-- GROUP BY と集計
SELECT
City,
COUNT(*) AS 顧客数,
COUNT(Email) AS メール登録数,
SUM(CASE WHEN City = '東京' THEN 1 ELSE 0 END) AS 東京数
FROM Customers
GROUP BY City
HAVING COUNT(*) >= 2 -- グループ後の絞り込み
ORDER BY 顧客数 DESC;
WHEREはGROUP BYの前にレコードを絞り込む(個別行への条件)。HAVINGはGROUP BY後に集計結果に条件をかける(グループへの条件)。「東京の顧客のみで集計したい」→WHERE。「集計した結果が10件以上のグループだけ表示したい」→HAVING。
08 JOIN JOINによるテーブル結合 複数テーブルを横断してデータを取得する
複数のテーブルを組み合わせてデータを取得するのがJOIN(結合)です。実務のSQLでは、JOIN抜きでは書けないクエリの方が多いため、必ず習得しておきたい機能です。
8-1. JOINの種類と使い分け
両テーブルに
一致するもの
のみ返す
左テーブル全件
+ 右テーブルで
一致するもの
右テーブル全件
+ 左テーブルで
一致するもの
両テーブルの
全件
(null含む)
| JOIN種類 | 返されるデータ | 典型的な使い所 |
|---|---|---|
| INNER JOIN | 両テーブルで条件が一致する行のみ | 注文一覧に顧客名を付けて表示 |
| LEFT JOIN | 左テーブルの全行 + 一致する右テーブルの行(なければNULL) | 顧客全員の注文件数(注文ゼロの顧客も含む) |
| RIGHT JOIN | 右テーブルの全行 + 一致する左テーブルの行 | LEFT JOINで順序を逆にする感覚で使うことが多い |
| FULL OUTER JOIN | 両テーブルの全行(どちらかにしかない行はNULL) | マスタの突合・データクレンジング |
| CROSS JOIN | 全組み合わせ(デカルト積) | カレンダーテーブルの生成など特殊用途 |
8-2. JOINの書き方
-- INNER JOIN: 顧客と注文を結合(両方に存在するもの)
SELECT
c.CustomerID,
c.CustomerName,
c.City,
o.OrderID,
o.OrderDate,
o.TotalAmount
FROM Customers AS c
INNER JOIN Orders AS o ON c.CustomerID = o.CustomerID
ORDER BY o.OrderDate DESC;
-- LEFT JOIN: 注文ゼロの顧客も含めて全顧客の注文数を表示
SELECT
c.CustomerID,
c.CustomerName,
COUNT(o.OrderID) AS 注文件数,
SUM(o.TotalAmount) AS 累計金額
FROM Customers AS c
LEFT JOIN Orders AS o ON c.CustomerID = o.CustomerID
GROUP BY c.CustomerID, c.CustomerName
ORDER BY 注文件数 DESC;
-- 3テーブルのJOIN例(顧客・注文・商品)
SELECT
c.CustomerName,
o.OrderDate,
p.ProductName,
od.Quantity,
od.UnitPrice,
(od.Quantity * od.UnitPrice) AS 小計
FROM Customers AS c
INNER JOIN Orders AS o ON c.CustomerID = o.CustomerID
INNER JOIN OrderDetails od ON o.OrderID = od.OrderID
INNER JOIN Products p ON od.ProductID = p.ProductID
WHERE o.OrderDate >= '2026-01-01'
ORDER BY o.OrderDate DESC;
📚 用語解説
トランザクション:データベースに対する一連の処理をひとまとめにした単位。「送金処理」を例にすると「口座Aから引き落とす」「口座Bへ入金する」の2操作をトランザクションとしてまとめ、両方成功した場合のみCOMMIT(確定)、一方でも失敗したらROLLBACK(取り消し)することでデータの整合性を保つ。ACID特性(原子性・一貫性・独立性・永続性)を保証する仕組み。
JOINを正しく書くには「どのテーブルのどの列が、別テーブルのどの列と一致するか」を先に整理することが大切です。この対応関係が「外部キー(FOREIGN KEY)」として定義されていれば、SSMSのテーブルデザイナーから確認できます。
JOINが正しく書けているか確認するには、まず最も単純な形(2テーブルのINNER JOINだけ)で実行してみます。想定した件数が返ってきたら列を増やし、想定外ならON句の条件を見直す。「テーブルを一つずつ足していく」アプローチが確実です。
09 AUTO QUERY クエリ自動作成機能の使い方 GUIからSQLを自動生成する便利な機能を活用する
SSMSには、GUIの操作からSQLを自動生成する機能が複数用意されています。これを知っているだけで、複雑なクエリを手書きする手間が大幅に省けます。
9-1. テーブルスクリプトの自動生成
既存テーブルのCREATE TABLE文を自動生成する方法です。
① オブジェクトエクスプローラーで対象テーブルを右クリックします。
② 「テーブルをスクリプト化」→「CREATE」→「新しいクエリエディター ウィンドウ」を選択します。
③ 完全なCREATE TABLE文が自動生成されます。テーブル定義のドキュメント化やDB移行時に便利です。
9-2. 上位1000行の選択 / 上位200行の編集
テーブルを右クリックすると「上位1000行の選択」と「上位200行の編集」が表示されます。
「上位1000行の選択」はSELECT TOP (1000) * FROM テーブル名 を自動実行し、データをグリッドで確認できます。
「上位200行の編集」は直接グリッドをクリックしてデータを編集できるモードです。SQLを書かずにInsert・Update・Deleteが視覚的にできるため、開発中のデータ操作に重宝します。
9-3. クエリデザイナー(グラフィカルなSELECT文作成)
SSMSのクエリエディターで、右クリック→「クエリをデザインする」を選ぶとグラフィカルなクエリデザイナーが起動します。
テーブルをドラッグ&ドロップでキャンバスに追加し、JOIN条件はテーブル間の列をドラッグで結ぶだけでSQLが自動生成されます。GROUP BY・ORDER BY・WHERE条件もチェックボックスで設定できます。
クエリデザイナーで大まかなSELECT文を自動生成してから、下部のSQL編集エリアで細かい修正を加える「ハイブリッド」な使い方が効率的です。JOINの多い複雑なクエリの骨格をGUIで作って、WHERE句や集計関数を手で追記する方法がプロでも使われます。
9-4. 実行プランの確認
クエリの実行効率を確認・改善するには「実行プラン」が有用です。Ctrl+L(推定実行プランの表示)またはCtrl+M(実際の実行プランの表示)で、クエリがどのようにデータにアクセスしているかをグラフィカルに確認できます。
実行プランで「TABLE SCAN」(全件スキャン)が表示されている場合、インデックスが効いていないサインです。WHERE句に使う列にINDEXを作成することで大幅な高速化が見込めます。
-- インデックスの作成
CREATE INDEX IX_Customers_City
ON Customers(City);
CREATE INDEX IX_Customers_Email
ON Customers(Email)
WHERE Email IS NOT NULL; -- フィルター済みインデックス
-- インデックス一覧の確認
SELECT
i.name AS インデックス名,
i.type_desc AS 種類,
COL_NAME(ic.object_id, ic.column_id) AS 列名
FROM sys.indexes AS i
JOIN sys.index_columns AS ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE OBJECT_NAME(i.object_id) = 'Customers';
よくある質問
Q. SSMSは無料で使えますか?
A. SSMS(SQL Server Management Studio)本体は常に無償で提供されています。ただし接続先のSQL Serverには有償エディションもあります。開発・学習用途であればSQL Server Developer Edition(本番利用以外は無償)またはSQL Server Express(機能制限あり・本番利用可能)を無償で使えます。費用をゼロで始めたい場合は「SQL Server Developer + SSMS最新版」の組み合わせが最も機能的です。
Q. SSMSはMacでも使えますか?
A. SSMSはWindows専用のソフトウェアのため、macOSには対応していません。macOSでSQL Serverを管理したい場合は、Microsoftが提供する「Azure Data Studio」を使ってください。Azure Data StudioはmacOS・Linux・Windowsに対応しており、基本的なクエリ実行やデータベース管理ができます。ただしSSMSと比べると管理機能は限定的です。
Q. SSMSとSQL Server、どちらを先にインストールすればいいですか?
A. SQL Serverを先にインストールし、その後SSMSをインストールします。SQL ServerはSSMSが接続する対象(サーバー)なので、接続先が存在しない状態でSSMSをインストールしても意味がないためです。インストールの順序:① SQL Server Developer/Express → ② SSMS → ③ SSMSを起動して接続確認、という流れが正しい手順です。
Q. SELECT * FROM テーブル名を実行したら大量データが返ってきてフリーズしました。どうすれば?
A. SELECT * FROM テーブル名 はすべてのデータを返すため、数百万件のテーブルに実行するとSSMSがフリーズすることがあります。本番DBでは常にSELECT TOP 100 * FROM テーブル名 のようにTOPで件数を制限するか、WHERE句で絞り込んでから実行してください。フリーズ中はSSMSのツールバーの赤い「停止」ボタン(またはAlt+Break)でクエリを中断できます。
Q. WHERE句を書き忘れてUPDATEを実行してしまいました。取り消せますか?
A. トランザクション(BEGIN TRAN)を使って実行していた場合は、ROLLBACK TRANで取り消せます。トランザクションなしで実行してしまった場合は、原則として取り消せません。ただし、データベースのバックアップが存在すれば、バックアップからの復元が可能です。本番DBでは定期バックアップの設定が必須である理由がここにあります。今後はUPDATE・DELETE前に必ずトランザクションを使う習慣を身につけてください。
SQLやデータベースの理解が深まると、「業務データをもっと活かしたい」「システム間のデータ連携を自動化したい」という課題が見えてきます。
弊社(株式会社GENAI)では、SQL ServerやMySQLのデータを活用した業務自動化・AI連携の設計・構築をサポートしています。CRMのデータ分析、経理データの自動集計、Webシステムとのデータ連携など、「データはあるのに活かせていない」という状況を解決します。
まずは無料相談で、御社の課題をお聞かせください。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。


