【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文の実行、クエリの自動生成機能まで、初心者が実際に手を動かしながら学べるよう、スクリーンショットの代わりに丁寧なステップで解説します。

代表菅澤 代表菅澤
弊社(株式会社GENAI)では、業務システムとのデータ連携にSQL Serverを活用しています。SSMSを使いこなせると、業務データの分析・抽出・加工の自由度が格段に上がります。今日はその入門として、最初の一歩を踏み出してもらえればと思います。
AI鬼管理山崎 AI鬼管理山崎
SQLは「難しいプログラミング言語」ではなく、「日本語で言いたいことをシンプルな英語に変換したもの」です。「顧客テーブルから東京の顧客を取得して」→ SELECT * FROM customers WHERE city = '東京' — この対応関係さえ掴めば、あとは応用です。

この記事を読み終えると、次のことができるようになります。

✔️SSMSのインストールと初期設定:公式サイトからの手順を図解
✔️SQL Serverへの接続:ローカルサーバーへのログイン方法
✔️データベース・テーブルの作成:GUIとSQLの両方で実行
✔️基本SQL4種:SELECT・INSERT・UPDATE・DELETEの書き方と実行
✔️WHERE句・JOIN:データを絞り込む・複数テーブルを結合する
✔️クエリ自動作成機能:GUIからSQLを自動生成する裏技
📌 この記事の結論
【2026年7月最新】SQL Server Management Studio(SSMS)の使い方完全ガイド|インストールからSQL実行まで初心者向けに解説
SQL Server Management Studio(SSMS)のインストールから基本操作まで完全解説。データベース・テーブル作成、SELECT・INSERT・UPDATE・DELETE文の実行方法、クエリ自動作成機能まで初心者向けに丁寧に説明します。

01 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 ServerSSMS
役割データの保存・管理エンジンSQL Serverを操作するGUIツール
提供形態サービス(バックグラウンドで常時起動)デスクトップアプリケーション
インストール別途必要別途必要(無償)
なくても動くか—(コアコンポーネント)はい(コマンドラインで代替可能)
無償版SQL Server Express / DeveloperSSMS本体は常に無償

重要なのは「SQL ServerとSSMSは別のソフトウェア」という点です。SQL ServerがなければSSMSを起動しても接続先がありません。まずSQL Serverをインストールしてから、SSMSをインストールして接続する、という順序で進めます。

AI鬼管理山崎 AI鬼管理山崎
「SQL Serverを買わないといけないのでは?」と心配される方が多いですが、学習・開発用途ならSQL Server Developer Edition(本番利用以外は無償)またはSQL Server Expressで十分です。この記事の手順はDeveloper Editionを前提に説明します。

02 SSMSのインストール方法 SQL ServerとSSMSを順番にインストールする

インストールは「SQL Server本体 → SSMS」の順で進めます。どちらもMicrosoftの公式サイトから無償でダウンロードできます。

2-1. インストールの全体フロー

Step 1
SQL Server
Developer版
ダウンロード
Step 2
SQL Server
インストーラー
実行・完了
Step 3
SSMSを
公式サイトから
ダウンロード
Step 4
SSMSインストーラー
実行・再起動
Step 5
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」を検索して起動します。

代表菅澤 代表菅澤
SQL ServerとSSMSのインストールは、初めてだと「どれが必要か」が分かりにくい設計です。迷ったらSQL Server Developer + SSMSの最新版の組み合わせにしておけば間違いありません。バージョンは原則として最新版を選んでください。
⚠️ Windows専用ツール

SSMSはWindows専用のソフトウェアです。macOSやLinuxには対応していません。macOSでSQL Serverを管理したい場合は、Azure Data Studio(Microsoftの代替ツール、macOS対応)を使う必要があります。

03 SSMSへのログインと初期設定 SSMSを起動してSQL Serverに接続する

SSMSを起動すると最初に「サーバーへの接続」ダイアログが表示されます。ここでSQL Serverのインスタンスに接続します。

3-1. 接続ダイアログの各項目

項目設定値(ローカル環境の場合)説明
サーバーの種類データベース エンジン通常はこのまま変更不要
サーバー名localhost または . または コンピュータ名\SQLEXPRESSSQL 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キーが最速です。

💡 SSMSの便利なショートカットキー

よく使うショートカット: F5 = クエリ実行 / Ctrl+N = 新規クエリ / Ctrl+K+C = 選択行をコメントアウト / Ctrl+K+U = コメントアウト解除 / Ctrl+R = 結果ペインの表示/非表示切替 / Alt+F1 = テーブル定義の確認(sp_helpを実行)

AI鬼管理山崎 AI鬼管理山崎
接続が「失敗」しても慌てないでください。最もよくあるエラーは「サーバー名の間違い」です。「localhost」で繋がらない場合は「.」(ドット)、それでも繋がらない場合は「コンピュータ名\SQLEXPRESSでの接続を試してみてください。

04 データベースの作成方法 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
代表菅澤 代表菅澤
初学者のうちは「CREATE DATABASE データベース名;」の1行で十分です。詳細オプションはDBAがパフォーマンスチューニングをする段階で必要になります。まずシンプルな構文から始めて、必要に応じて拡張していくのがコツです。
💡 データベース名の命名規則

SQL Serverのデータベース名はスペースを含めないのが基本です。単語の区切りはアンダースコア(_)またはキャメルケース(SampleDB)を使います。また、SQL Serverの予約語(SELECT、TABLE等)はデータベース名に使えないため注意が必要です。

05 テーブルの作成とデータ型 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日時(最大精度)作成日時・更新日時
BIT1/0のブール値フラグ・有効/無効
UNIQUEIDENTIFIERGUID(グローバル一意識別子)分散システムのID

📚 用語解説

IDENTITY(自動採番):テーブルに行が追加されるたびに自動的に連番を振るSQL Serverの機能。IDENTITY(1,1)は「1から始めて1ずつ増やす」という意味。主キー列によく使われる。新しく追加したレコードのIDをプログラムから取得するには、INSERT直後にSELECT SCOPE_IDENTITY()を実行する。

💡 NVARCHARとVARCHARの使い分け

NVARCHAR(N=National = Unicode対応)は日本語・中国語・絵文字など多バイト文字を格納できます。VARCHARはASCII文字専用で1文字1バイトですが、格納効率が高い。日本語を含む可能性がある列はNVARCHARを使うのが安全です。ただしNVARCHARはVARCHARの2倍のストレージを消費する点に注意。

AI鬼管理山崎 AI鬼管理山崎
テーブル設計の段階でデータ型を適切に選ぶことが、後のパフォーマンスと整合性に大きく影響します。「とりあえずNVARCHAR(MAX)」という設計は避けて、実際のデータ長を見積もって設定しましょう。

06 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;
⚠️ UPDATE・DELETEはトランザクション内で実行する

WHERE句の指定ミスによる全件更新・全件削除を防ぐため、本番DBでのUPDATE・DELETEは必ずトランザクションを使って実行しましょう。「BEGIN TRAN」で開始して影響件数を確認し、問題なければ「COMMIT」、ミスがあれば「ROLLBACK」で取り消せます。

代表菅澤 代表菅澤
CRUD操作を覚えたら、次のステップは「WHERE句でデータを絞り込む」です。データが増えるほどWHERE句の書き方がパフォーマンスに直結します。次のセクションで詳しく説明します。

07 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とHAVINGの違い

WHEREはGROUP BYの前にレコードを絞り込む(個別行への条件)。HAVINGはGROUP BY後に集計結果に条件をかける(グループへの条件)。「東京の顧客のみで集計したい」→WHERE。「集計した結果が10件以上のグループだけ表示したい」→HAVING。

AI鬼管理山崎 AI鬼管理山崎
LIKEによるあいまい検索はシンプルで便利ですが、先頭が「%」(前後一致・後方一致)の場合はインデックスが効かず検索速度が落ちます。大量データを扱う本番環境では、全文検索インデックス(FULLTEXT)の利用を検討してください。

08 JOINによるテーブル結合 複数テーブルを横断してデータを取得する

複数のテーブルを組み合わせてデータを取得するのがJOIN(結合)です。実務のSQLでは、JOIN抜きでは書けないクエリの方が多いため、必ず習得しておきたい機能です。

8-1. JOINの種類と使い分け

INNER JOIN
両テーブルに
一致するもの
のみ返す
LEFT JOIN
左テーブル全件
+ 右テーブルで
一致するもの
RIGHT JOIN
右テーブル全件
+ 左テーブルで
一致するもの
FULL OUTER 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が苦手な方に多いのが「テーブルの関係図を頭に描けていない」パターンです。はじめのうちは紙に「どのテーブルがどの列でつながっているか」を図示してからSQLを書く習慣をつけると、迷いが大幅に減ります。
💡 JOINのデバッグテクニック

JOINが正しく書けているか確認するには、まず最も単純な形(2テーブルのINNER JOINだけ)で実行してみます。想定した件数が返ってきたら列を増やし、想定外ならON句の条件を見直す。「テーブルを一つずつ足していく」アプローチが確実です。

09 クエリ自動作成機能の使い方 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';
AI鬼管理山崎 AI鬼管理山崎
クエリの自動作成機能は「SQLを覚えなくていい」ためのものではなく、「SQLを速く・正確に書くための補助」として使うのが正解です。自動生成されたSQLを読んで「なぜこう書くのか」を理解することで、SQLスキルが格段に上がります。
代表菅澤 代表菅澤
SSMSには今回紹介した以外にも、バックアップ・リストア・ジョブスケジューラ・レプリケーション設定など、多彩な管理機能があります。まずはCRUD操作とJOINをマスターして、次のステップとしてインデックス最適化やトランザクション管理に進むのがおすすめのロードマップです。

よくある質問

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日で作る経営者向けトレーニング。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月19日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。